Тотем

Версия Minecraft
1.12.2
683
3
21
У кого-то есть код тотема бессмертия ? чтобы взять за основу , а то я хз его класса нет в item.Пытался сам сделать,но не вышло
 
Решение
Java:
@Mod(modid = TotemMod.MODID, name = TotemMod.NAME, version = TotemMod.VERSION)
public class TotemMod {

    public static final String
    MODID = "totem",
    NAME = "Totem Mod",
    VERSION = "0.1";

    @Mod.Instance(MODID)
    public static TotemMod instance;

    public static final SimpleNetworkWrapper network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID);

    public static Item my_totem;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        network.registerMessage(EntityStatusMessage.Handler.class, EntityStatusMessage.class, 0, Side.CLIENT);
        network.registerMessage(EntityStatusMessage.Handler.class, EntityStatusMessage.class, 0, Side.SERVER);

        my_totem = new...

timaxa007

Модератор
5,831
409
672
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)event.getEntityLiving();
public void onUpdate(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) {
И типа этого:
Java:
public void onUpdate(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) {
if (entityIn instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)entityIn;

}
}
 
683
3
21
Спасибо,но теперь последний заключающий вопрос:Почему эффект выдается 3-го уровня?Если указан эффект второго уровня...
Java:
    @Override
    public void onUpdate(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) {
    Minecraft mc = Minecraft.getMinecraft();
    if(isSelected) {
         if (entityIn instanceof EntityPlayer) {
             EntityPlayer pl = (EntityPlayer)entityIn;
               if(pl != null) {
                 if(pl.getHealth() <= 6.0f && !pl.capabilities.isCreativeMode) {
                    
                     pl.clearActivePotions();
                     pl.addPotionEffect(new PotionEffect(MobEffects.SPEED, 600, 2));
                     pl.addPotionEffect(new PotionEffect(MobEffects.JUMP_BOOST, 300, 2));
                     for(EnumHand hand : EnumHand.values()) {
                         pl.setHeldItem(hand, ItemStack.EMPTY);
                     }
                     if(world.isRemote) {
                         mc.effectRenderer.emitParticleAtEntity(mc.player, EnumParticleTypes.TOTEM, 30);
                         mc.world.playSound(mc.player.posX, mc.player.posY, mc.player.posZ, SoundEvents.ITEM_TOTEM_USE, mc.player.getSoundCategory(), 1.0F, 1.0F, false);
                         mc.entityRenderer.displayItemActivation(new ItemStack(ItemInit.CowardsTotem));
                         }
                 }
               }
               }
    }
        super.onUpdate(stack, world, entityIn, itemSlot, isSelected);
    }
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Почему эффект выдается 3-го уровня?Если указан эффект второго уровня...
Лять, в программировании отсчет начитается с нуля...
Господи, какие вопросы. Куда ты лезешь-то с такими знаниями...
 

timaxa007

Модератор
5,831
409
672

tox1cozZ

aka Agravaine
8,455
598
2,892
Твое первое сообщение было пол года назад. За это время можно было уже выучить основы и уверенно писать моды.
Ты же нифига не хочешь учить и задаешь дурацкие вопросы.
 
46
1
2
Java:
@Mod(modid = TotemMod.MODID, name = TotemMod.NAME, version = TotemMod.VERSION)
public class TotemMod {

    public static final String
    MODID = "totem",
    NAME = "Totem Mod",
    VERSION = "0.1";

    @Mod.Instance(MODID)
    public static TotemMod instance;

    public static final SimpleNetworkWrapper network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID);

    public static Item my_totem;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        network.registerMessage(EntityStatusMessage.Handler.class, EntityStatusMessage.class, 0, Side.CLIENT);
        network.registerMessage(EntityStatusMessage.Handler.class, EntityStatusMessage.class, 0, Side.SERVER);

        my_totem = new Item().setRegistryName(MODID, "mytotem").setUnlocalizedName("mytotem").setCreativeTab(CreativeTabs.MISC);
        ForgeRegistries.ITEMS.register(my_totem);

        MinecraftForge.EVENT_BUS.register(new EventsForge());

    }

}
Java:
public class EventsForge {

    @SubscribeEvent(priority = EventPriority.HIGHEST)
    public void onDeath(LivingDeathEvent event) {
        if (event.isCanceled()) return;
        if (event.getEntityLiving() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer)event.getEntityLiving();

            for(EnumHand hand : EnumHand.values()) {
                ItemStack item = player.getHeldItem(hand);
                if (!item.isEmpty() && item.getItem() == TotemMod.my_totem) {

                    item.shrink(1);
                    if (item.getCount() <= 0)
                        player.setHeldItem(hand, ItemStack.EMPTY);
                    else
                        player.setHeldItem(hand, item);

                    player.setHealth(1.0F);
                    player.clearActivePotions();
                    player.addPotionEffect(new PotionEffect(MobEffects.REGENERATION, 900, 1));
                    player.addPotionEffect(new PotionEffect(MobEffects.ABSORPTION, 100, 1));

                    if (player instanceof EntityPlayerMP)
                        TotemMod.network.sendTo(new EntityStatusMessage(), (EntityPlayerMP)player);

                    event.setCanceled(true);
                    break;
                }
            }

        }
    }

}
Java:
public class EntityStatusMessage implements IMessage {

    public EntityStatusMessage() {}

    @Override
    public void toBytes(ByteBuf buf) {}

    @Override
    public void fromBytes(ByteBuf buf) {}

    public static class Handler implements IMessageHandler<EntityStatusMessage, IMessage> {

        @Override
        public IMessage onMessage(EntityStatusMessage packet, MessageContext message) {
            if (message.side.isClient())
                act(packet);
            else
                act(message.getServerHandler().player, packet);
            return null;
        }

        @SideOnly(Side.CLIENT)
        private void act(EntityStatusMessage packet) {
            Minecraft mc = Minecraft.getMinecraft();
            mc.effectRenderer.emitParticleAtEntity(mc.player, EnumParticleTypes.TOTEM, 30);
            mc.world.playSound(mc.player.posX, mc.player.posY, mc.player.posZ, SoundEvents.ITEM_TOTEM_USE, mc.player.getSoundCategory(), 1.0F, 1.0F, false);
            mc.entityRenderer.displayItemActivation(new ItemStack(Items.BEETROOT_SOUP));
        }

        private void act(EntityPlayerMP player, EntityStatusMessage packet) {

        }

    }

}
---
По идеи лучше по другому отправлять пакет и его содержимое (типа отправить всем кто рядом, но показывать тотем на экране тому у кого этот тотем сработал), но это уже ты сделай.
Здравствуйте, у меня появляется ошибка Undefined discriminator for message type $EntityStatusMessage in channel. Не знаете как исправить?
 

timaxa007

Модератор
5,831
409
672
Сверху