Кастомный инструмент.

Версия Minecraft
1.12.2
API
Forge
122
4
6
Всем привет. Я решил заняться созданием инструмента (меч) который бы менял: текстуру, свойства (урон, скорость атаки...), + при смене режима выполнялись свои эвенты. Но понял одно я вообще ни шарю за добавление тегов их создание. И только частично понимаю, как должен выглядеть код. Если кто создавал такой вот мультитул или знает, как должно это писаться буду очень благодарен и признателен если поделитесь советом или решением моего вопроса. (П.С. До создания этой темы, я пересмотрел довольно большое количество инфы по типу исходников других модов, гайды про теги и т.д. Понял только суть но не знаю, как написать.)

ОСНОВА ПОД ИНСТРУМЕНТ
Java:
public class Scythe extends ItemSword implements IHasModel {
  
    public Scythe(String name, ToolMaterial material, float damage, float speed) {
        super(material);
      
        //addPropertyOverride(new ResourceLocation(Main.MODID, "fire_scythe"), (itemStack, world, entity) -> {return 1;});
        //addPropertyOverride(new ResourceLocation(Main.MODID, "void_scythe"), (itemStack, world, entity) -> {return 1;});
        //addPropertyOverride(new ResourceLocation(Main.MODID, "soul_scythe"), (itemStack, world, entity) -> {return 1;});

        setUnlocalizedName(name);
        setRegistryName(name);
        setCreativeTab(Main.TEG);
      
        ItemsInit.ITEMS.add(this);
    }
    @Override
    public void registerModels() {
        Main.proxy.registerItemRenderer(this, 0, "inventory");
    }
  
    public boolean hasEffect(ItemStack stack) {
        return false;
    }
    @Override
    public Entity createEntity(World world, Entity old, ItemStack itemstack) {
        EntityItem item = new EntityItem(world, old.posX, old.posY, old.posZ, itemstack) {
            @Override
            public void setFire(int seconds) {}

            @Override
            protected void setOnFireFromLava() {}

            @Override
            public boolean attackEntityFrom(DamageSource source, float amount) {
                if (source.isFireDamage()) {
                    return false;
                }
                return super.attackEntityFrom(source, amount);
            }
        };
        item.copyLocationAndAnglesFrom(old);
        item.motionX = old.motionX;
        item.motionY = old.motionY;
        item.motionZ = old.motionZ;
        item.setPickupDelay(30);
        return item;
    }
    @Override
    public boolean hasCustomEntity(ItemStack stack) {
        return true;
    }
}
 
Последнее редактирование:
Сверху