@SubscribeEvent
public static void onPlayerUseShield(LivingEntityUseItemEvent.Finish event) {
if (event.getEntityLiving().getEntityWorld().isRemote) return;
//Проверить, что сущность является игроком
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
//Получить предмет в руке у игрока
ItemStack stack = event.getResultStack();
if (stack != null && stack !=...
@SubscribeEvent
public static void onPlayerUseShield(LivingEntityUseItemEvent.Finish event) {
if (event.getEntityLiving().getEntityWorld().isRemote) return;
//Проверить, что сущность является игроком
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
//Получить предмет в руке у игрока
ItemStack stack = event.getResultStack();
if (stack != null && stack != ItemStack.EMPTY && stack.getItem() instanceof ItemShield) {
//Проверить, что кулдаун у щита больше нуля
if (player.getCooldownTracker().getCooldown(stack.getItem()) > 0) {
//Что-то сделать
}
}
}
}
Интересный метод сохраню себе.Код чисто для примера
@SubscribeEvent
public void onHurt(LivingHurtEvent e) {
DamageSource source = e.getSource();
Entity entity = e.getEntity();
if(entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
EnumHand hand = player.getActiveHand();
ItemStack stack = player.getHeldItem(hand);
//проверка (что у игрока в руке, активен ли этот предмет, и какой тип использования у предмета)
if(player.getHeldItem(hand).getItem() == ItemsInit.SWORD && player.isHandActive() && stack.getItemUseAction() == EnumAction.BLOCK) {
Object attacker = e.getSource().getTrueSource();
if(attacker instanceof EntityLivingBase) {
EntityLivingBase entityAttacker = (EntityLivingBase) attacker;
EnumHand hand_ = entityAttacker.getActiveHand();
//проверка (есть ли предмет у атакуещего игрока)
if(entityAttacker.getHeldItem(hand_).getItem() == ItemsInit.AXE) {
System.out.print("--------1");
//что должно происходить...
}
}
}
}
}
Думаю в классе ItemShieldОстается все же вопрос где в ванильном коде майна происходит выполнение (накидывание кд когда у игрока щит, а его атакуют топором)
уже смотрел, там толком ничего нетДумаю в классе ItemShield