@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...
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)event.getEntityLiving();
И типа этого:public void onUpdate(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) {
public void onUpdate(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) {
if (entityIn instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)entityIn;
}
}
@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);
}
уже начинаешь оффтопитьКурс Java Core - Лекция: Приведение типов. Расширение и сужение
НАЧНИ УЧИТЬ ДЖАВУ, УЖЕ РЕАЛЬНО НАЧИНАЕШЬ БЕСИТЬ.
Лять, в программировании отсчет начитается с нуля...Почему эффект выдается 3-го уровня?Если указан эффект второго уровня...
Отсчёт начинается от 0, т.е.:Почему эффект выдается 3-го уровня?
Здравствуйте, у меня появляется ошибка Undefined discriminator for message type $EntityStatusMessage in channel. Не знаете как исправить?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) { } } }
---
По идеи лучше по другому отправлять пакет и его содержимое (типа отправить всем кто рядом, но показывать тотем на экране тому у кого этот тотем сработал), но это уже ты сделай.
Приветствую.Здравствуйте
Возможно вы импортировали не тот класс. Если у вас по-новее версия майнкрафт, то возможно там другой аргумент используется.у меня появляется ошибка