[Решено] Несколько глупых вопросов

Статус
В этой теме нельзя размещать новые ответы.
10
0
Здрасте.
Давайте чтоб не создавать темы и не мучить никого, я создам одну тему со сборкой тупых вопросов?
Начнём-с.

  1. Как можно сделать ГУИ? Как можно сделать свою крафтилку с ГУИ?
  2. Как можно дать итему тултип? Я знаю что НБТ. Но КАК?
  3. Как можно спавнить партиклы от ентити? Как можно спавнить партиклы от рук и головы энтити?
  4. Как можно "перехватить" смерть игрока? Я так понимаю есть соответствующий эвент.
  5. Как можно наносить урон окружающим существам вокруг блока по которому тыкнули определённым предметом? Так чтоб не зависимо от дальности взаимодействия. То есть, есть спелл, он кастуется например 3 секунды и делает взрыв, но мне не хватает дамага взрыва и мне нужно отдельным методом нанести урон существам, и по возможности отбросить. Ещё было бы хорошо сделать что если ПВП == включено и сложность == сложно то дамажатся и игроки кроме кастера, иначе дамажатся только мобы.
Окей, вот вопросы. Только давайте без "гугли" и прочего, если я пришёл сюда значит либо у меня нет времени и желания либо... Короче, я пришёл сюда, и на это есть причина. Будьте добры, если не хотите отвечать по делу - обойдите тему стороной. Если всё-таки хочется помочь - можете дать ссылки на другие темы или даже сайты. В общем, всё в ваших руках.
 
1. Исходники.
2. Исходники, addInformation в предмете.
3. Исходники. world.spawnPartice(...).
4. Фордж. PlayerDeathEvent.
5. Исходники. Маяк.
Вот видишь, ответы на все(ну почти) твои вопросы можно найти в исходниках игры.
 
Это:
GuiScreen | GuiContainer | GuiElement (Элемент гуишки) итп с приставкой Gui.
Item =>
public Item addInformation(List...)
{}
Вроде этот метод, в Block тоже вроде есть такое.
Фактически:
EntityPlayer | EntityPlayerMP
это классы где можно взять координаты руки и головы если не путаю ничего.
Партиклы есть любые, можно делать свои, а можно майновские использовать примерно так:
Код:
    @SideOnly(Side.CLIENT)
    public void generateParticles(World worldObj, int xCoord, int yCoord, int zCoord, ForgeDirection direction)
    {
        if(!worldObj.isRemote)return;
        double motionX = worldObj.rand.nextGaussian() * 0.02D;
        double motionY = worldObj.rand.nextGaussian() * 0.02D;
        double motionZ = worldObj.rand.nextGaussian() * 0.02D;
        double x = xCoord + 0.25 + worldObj.rand.nextFloat() / 2;
        double y = yCoord + 0.25 + worldObj.rand.nextFloat() / 2;
        double z = zCoord + 0.25 + worldObj.rand.nextFloat() / 2;

        double offset = 0.1;

        if(direction == ForgeDirection.NORTH)
            z = zCoord + offset;
        if(direction == ForgeDirection.SOUTH)
            z = zCoord + 1 - offset;
        if(direction == ForgeDirection.EAST)
            x = xCoord + 1 - offset;
        if(direction == ForgeDirection.WEST)
            x = xCoord + offset;

        SparksEntityFX fx = new SparksEntityFX(worldObj, x, y, z, motionX, motionY, motionZ, Minecraft.getMinecraft().effectRenderer);

        Minecraft.getMinecraft().effectRenderer.addEffect(fx);

    }
Это пример, но код не мой, взял по быстрому у других людей для показа.
Вряд ли. Там не найти полностью похожую вещь, можно посмотреть исходники Blood Magic, там есть спеллы такие же как хочет сир.
[merge_posts_bbcode]Добавлено: 29.12.2015 12:03:39[/merge_posts_bbcode]

Вот так действует addInfo..:
Код:
     @SuppressWarnings({ "unchecked", "rawtypes" })
    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) 
    {
        if(par1ItemStack.getTagCompound() != null)
        {
            par3List.add("Я первая строка");
                par3List.add("Я вторая строка");
        }
    }

[merge_posts_bbcode]Добавлено: 29.12.2015 12:04:57[/merge_posts_bbcode]

Вообще сам ты глупо сказал, это вполне нормальные вопросы, не надо стесняться и говорить, что это глупые вопросы :)
 
1.
Код:
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
Для простого гуи GuiScreen. А если надо чтобы использовать слоты для ItemStack'ов, то GuiContainer.
2. ... или ещё можно эвентом "ItemTooltipEvent". NBT тут не обязателен. Сделать описание Item`у
3. Брать координаты от ентити, давать координаты партикле и спавнить ...
4. Если ты понимаешь, что есть соответствующий, то ты не знаешь как он называется или ты не знаешь как с ним работать?
5. Хм... Тебе нужно, чтобы на дальние расстояния были? О подобном я отвечал (но не на форуме).
timaxa007 написал(а):
Код:
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
MovingObjectPosition mop = block(player, 1.0F, 16.0D, false);
if (mop != null) {
world.spawnEntityInWorld(new EntityLightningBolt(world,
(double) mop.blockX + 0.5D,
(double) mop.blockY + 1.0D,
(double) mop.blockZ + 0.5D));
}
return super.onItemRightClick(is, world, player);
}

public static MovingObjectPosition block(EntityLivingBase entity_base, float fasc, double dist, boolean interact) {
Vec3 vec3 = Vec3.createVectorHelper(entity_base.posX, entity_base.posY + entity_base.getEyeHeight(), entity_base.posZ);
Vec3 vec31 = entity_base.getLook(fasc);
Vec3 vec32 = vec3.addVector(vec31.xCoord * dist, vec31.yCoord * dist, vec31.zCoord * dist);
MovingObjectPosition mop = entity_base.worldObj.rayTraceBlocks(vec3, vec32, interact);
return mop;
}

"block(player, 1.0F, 16.0D, false)"
Где "player" - это ентити с родителем EntityLivingBase (или просто EntityLiving, если старая версия Minecraft), в игроке оно имеется.
Где "16.0D" - это дальность видимости.
Где "false" - чтобы он не видел выделяемое, типа воды. Если хочешь, то ставь true.
Надеюсь, что тот код скинул.
[merge_posts_bbcode]Добавлено: 29.12.2015 11:23:07[/merge_posts_bbcode]

FanKar 2. [1.7.10] Как добавить lore?
 
Тимах, в предмете можно и так сделать, а для блока да, в ItemBlock, я немного ошибся.
 
Координаты рук и головы считать нужно самому из координат глаз и координат ног это раз, партиклы спавнятся через world.spawnParticle, иначе придется пилить свои велосипеды с пакетами, что бы партикли были видны не только тебе. А еще @SuppressWarning не нужен, достаточно указать тип листа на String.
 
Не нужен sw, но на всякий случай Я делаю, у меня не просто list.add("text");
 
А надо бы просто. Генерики не длятого сделаны, что бы их игнорировали.
 
Ещё вопросы сюда же задам чтоб не мучить форум.
  1. Поднять руки (развести в стороны) персонажу через код: как?
  2. Процессинг. Как запилить блок который не требует ни энергии ни топлива а просто делает из n количества предметов один. Т.Е. процессинг.
[merge_posts_bbcode]Добавлено: 29.12.2015 22:45:45[/merge_posts_bbcode]

Код:
event.toolTip.set(event.toolTip.size() - 1, EnumChatFormatting.BLUE + "Урон: 1");
А припилить локализацию как?
 
1. Всё зависит в каком смысле они будут использоваться. Т.е. если при использовании предмета, то это эвентом "RenderHandEvent". А если для новых движений (пародией на Smart Moving), то это анимация геометрии, используя эвент "RenderPlayerEvent" (основные знания геометрии или/и знания высшей математики).
2. Как пример можно взять печку, не используем топлива, а только время или крафт-стол. Добавляем нужное количество слотов для n количества предметов и т.п., так как реализовать можно по своему.
[merge_posts_bbcode]Добавлено: 29.12.2015 22:53:09[/merge_posts_bbcode]

[Mini-Guide]Локализация чего угодно и как угодно
 
Agravaine написал(а):
1. Исходники.
2. Исходники, addInformation в предмете.
3. Исходники. world.spawnPartice(...).
4. Фордж. PlayerDeathEvent.
5. Исходники. Маяк.
Вот видишь, ответы на все(ну почти) твои вопросы можно найти в исходниках игры.
Дочитать тему до конца надо было. Если банить таких людей, я уверен, БД форума уменьшится где-то на 75%, а сам сайт облегчится на пару гигов... Достали уже...
Ответив на эти для кого-то простые вопросы, вы поможете не только мне, а и любому другому заходящему на форум. Если не уважаете других, то уважайте хоть форум.
Я сюда учиться и сократить затраты сил пришёл.
[merge_posts_bbcode]Добавлено: 29.12.2015 23:06:33[/merge_posts_bbcode]

timaxa007 написал(а):
1. Всё зависит в каком смысле они будут использоваться. Т.е. если при использовании предмета, то это эвентом "RenderHandEvent". А если для новых движений (пародией на Smart Moving), то это анимация геометрии, используя эвент "RenderPlayerEvent" (основные знания геометрии или/и знания высшей математики).
<offtop>Открою секрет: фича схожая очень с регенерацией Доктора Кто. Если не знаете - советую посмотреть.</offtop>
 
Офигел, а тебя случаем не забанить? Не надейся, что тебе всегда дадут код и объясняет. Чаще всего тебе подскажут, но код ты будешь писать сам.
 
Как прилепить локализацию тебе уже ответил тимаха, с ссылкой на мой гайд.
А вот насчёт процессинга - поподробнее. Не понял.
равен ты ли это?
банить всех надо...
Интересно за что когда тебе на всё отвечают?
 
Я тебе сказал, что почти всё можно найти в исходниках. Да еще и методы дал.
Если ты надеешься, что ты прийдешь на форум и вокруг тебя будут все плясать - ты ошибаешься.
Сначала пару дней нужно попробовать самому решить проблему, а только потом идти на форум.
Тут уже есть пару человек, которым мод пишет весь форум. Чуть что, они сразу сюда бегут.
 
Все вопросы решены, прошу прощения за потрёпаные нервы. Можно закрывать тему.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху