mirror of
https://github.com/Minestom/Minestom.git
synced 2024-12-31 21:48:08 +01:00
Made EntityEquipEvent cancellable
This commit is contained in:
parent
ed010ff110
commit
d72fb72e74
@ -1,6 +1,5 @@
|
|||||||
package net.minestom.server.entity;
|
package net.minestom.server.entity;
|
||||||
|
|
||||||
import net.minestom.server.event.item.EntityEquipEvent;
|
|
||||||
import net.minestom.server.item.attribute.AttributeSlot;
|
import net.minestom.server.item.attribute.AttributeSlot;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
@ -127,8 +127,11 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setItemInMainHand(@NotNull ItemStack itemStack) {
|
public void setItemInMainHand(@NotNull ItemStack itemStack) {
|
||||||
this.mainHandItem = getEquipmentItem(itemStack, EquipmentSlot.MAIN_HAND);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.MAIN_HAND);
|
||||||
syncEquipment(EquipmentSlot.MAIN_HAND);
|
if (itemStack != null) {
|
||||||
|
this.mainHandItem = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.MAIN_HAND);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -139,8 +142,11 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setItemInOffHand(@NotNull ItemStack itemStack) {
|
public void setItemInOffHand(@NotNull ItemStack itemStack) {
|
||||||
this.offHandItem = getEquipmentItem(itemStack, EquipmentSlot.OFF_HAND);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.OFF_HAND);
|
||||||
syncEquipment(EquipmentSlot.OFF_HAND);
|
if (itemStack != null) {
|
||||||
|
this.offHandItem = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.OFF_HAND);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -151,8 +157,11 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHelmet(@NotNull ItemStack itemStack) {
|
public void setHelmet(@NotNull ItemStack itemStack) {
|
||||||
this.helmet = getEquipmentItem(itemStack, EquipmentSlot.HELMET);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.HELMET);
|
||||||
syncEquipment(EquipmentSlot.HELMET);
|
if (itemStack != null) {
|
||||||
|
this.helmet = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.HELMET);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -163,8 +172,11 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setChestplate(@NotNull ItemStack itemStack) {
|
public void setChestplate(@NotNull ItemStack itemStack) {
|
||||||
this.chestplate = getEquipmentItem(itemStack, EquipmentSlot.CHESTPLATE);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.CHESTPLATE);
|
||||||
syncEquipment(EquipmentSlot.CHESTPLATE);
|
if (itemStack != null) {
|
||||||
|
this.chestplate = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.CHESTPLATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -175,8 +187,11 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLeggings(@NotNull ItemStack itemStack) {
|
public void setLeggings(@NotNull ItemStack itemStack) {
|
||||||
this.leggings = getEquipmentItem(itemStack, EquipmentSlot.LEGGINGS);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.LEGGINGS);
|
||||||
syncEquipment(EquipmentSlot.LEGGINGS);
|
if (itemStack != null) {
|
||||||
|
this.leggings = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.LEGGINGS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -187,14 +202,17 @@ public class LivingEntity extends Entity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBoots(@NotNull ItemStack itemStack) {
|
public void setBoots(@NotNull ItemStack itemStack) {
|
||||||
this.boots = getEquipmentItem(itemStack, EquipmentSlot.BOOTS);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.BOOTS);
|
||||||
syncEquipment(EquipmentSlot.BOOTS);
|
if (itemStack != null) {
|
||||||
|
this.boots = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.BOOTS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull EquipmentSlot slot) {
|
private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull EquipmentSlot slot) {
|
||||||
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(this, itemStack, slot);
|
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(this, itemStack, slot);
|
||||||
callEvent(EntityEquipEvent.class, entityEquipEvent);
|
callEvent(EntityEquipEvent.class, entityEquipEvent);
|
||||||
return entityEquipEvent.getEquippedItem();
|
return entityEquipEvent.isCancelled() ? null : entityEquipEvent.getEquippedItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -69,8 +69,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setItemInMainHand(@NotNull ItemStack itemStack) {
|
public void setItemInMainHand(@NotNull ItemStack itemStack) {
|
||||||
this.mainHandItem = getEquipmentItem(itemStack, EquipmentSlot.MAIN_HAND);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.MAIN_HAND);
|
||||||
syncEquipment(EquipmentSlot.MAIN_HAND);
|
if (itemStack != null) {
|
||||||
|
this.mainHandItem = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.MAIN_HAND);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -81,8 +84,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setItemInOffHand(@NotNull ItemStack itemStack) {
|
public void setItemInOffHand(@NotNull ItemStack itemStack) {
|
||||||
this.offHandItem = getEquipmentItem(itemStack, EquipmentSlot.OFF_HAND);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.OFF_HAND);
|
||||||
syncEquipment(EquipmentSlot.OFF_HAND);
|
if (itemStack != null) {
|
||||||
|
this.offHandItem = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.OFF_HAND);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -93,8 +99,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setHelmet(@NotNull ItemStack itemStack) {
|
public void setHelmet(@NotNull ItemStack itemStack) {
|
||||||
this.helmet = getEquipmentItem(itemStack, EquipmentSlot.HELMET);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.HELMET);
|
||||||
syncEquipment(EquipmentSlot.HELMET);
|
if (itemStack != null) {
|
||||||
|
this.helmet = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.HELMET);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -105,8 +114,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setChestplate(@NotNull ItemStack itemStack) {
|
public void setChestplate(@NotNull ItemStack itemStack) {
|
||||||
this.chestplate = getEquipmentItem(itemStack, EquipmentSlot.CHESTPLATE);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.CHESTPLATE);
|
||||||
syncEquipment(EquipmentSlot.CHESTPLATE);
|
if (itemStack != null) {
|
||||||
|
this.chestplate = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.CHESTPLATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -117,8 +129,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLeggings(@NotNull ItemStack itemStack) {
|
public void setLeggings(@NotNull ItemStack itemStack) {
|
||||||
this.leggings = getEquipmentItem(itemStack, EquipmentSlot.LEGGINGS);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.LEGGINGS);
|
||||||
syncEquipment(EquipmentSlot.LEGGINGS);
|
if (itemStack != null) {
|
||||||
|
this.leggings = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.LEGGINGS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -129,8 +144,11 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBoots(@NotNull ItemStack itemStack) {
|
public void setBoots(@NotNull ItemStack itemStack) {
|
||||||
this.boots = getEquipmentItem(itemStack, EquipmentSlot.BOOTS);
|
itemStack = getEquipmentItem(itemStack, EquipmentSlot.BOOTS);
|
||||||
syncEquipment(EquipmentSlot.BOOTS);
|
if (itemStack != null) {
|
||||||
|
this.boots = itemStack;
|
||||||
|
syncEquipment(EquipmentSlot.BOOTS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSmall() {
|
public boolean isSmall() {
|
||||||
@ -238,6 +256,6 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler {
|
|||||||
private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull EquipmentSlot slot) {
|
private ItemStack getEquipmentItem(@NotNull ItemStack itemStack, @NotNull EquipmentSlot slot) {
|
||||||
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(this, itemStack, slot);
|
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(this, itemStack, slot);
|
||||||
callEvent(EntityEquipEvent.class, entityEquipEvent);
|
callEvent(EntityEquipEvent.class, entityEquipEvent);
|
||||||
return entityEquipEvent.getEquippedItem();
|
return entityEquipEvent.isCancelled() ? null : entityEquipEvent.getEquippedItem();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,19 @@ package net.minestom.server.event.item;
|
|||||||
|
|
||||||
import net.minestom.server.entity.Entity;
|
import net.minestom.server.entity.Entity;
|
||||||
import net.minestom.server.entity.EquipmentSlot;
|
import net.minestom.server.entity.EquipmentSlot;
|
||||||
|
import net.minestom.server.event.CancellableEvent;
|
||||||
import net.minestom.server.event.Event;
|
import net.minestom.server.event.Event;
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class EntityEquipEvent extends Event {
|
public class EntityEquipEvent extends Event implements CancellableEvent {
|
||||||
|
|
||||||
private final Entity entity;
|
private final Entity entity;
|
||||||
private ItemStack equippedItem;
|
private ItemStack equippedItem;
|
||||||
private final EquipmentSlot slot;
|
private final EquipmentSlot slot;
|
||||||
|
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
public EntityEquipEvent(@NotNull Entity entity, @NotNull ItemStack equippedItem, @NotNull EquipmentSlot slot) {
|
public EntityEquipEvent(@NotNull Entity entity, @NotNull ItemStack equippedItem, @NotNull EquipmentSlot slot) {
|
||||||
this.entity = entity;
|
this.entity = entity;
|
||||||
this.equippedItem = equippedItem;
|
this.equippedItem = equippedItem;
|
||||||
@ -36,4 +39,14 @@ public class EntityEquipEvent extends Event {
|
|||||||
public EquipmentSlot getSlot() {
|
public EquipmentSlot getSlot() {
|
||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,11 +186,17 @@ public class PlayerInventory extends AbstractInventory implements EquipmentHandl
|
|||||||
equipmentSlot = EquipmentSlot.BOOTS;
|
equipmentSlot = EquipmentSlot.BOOTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean cancel = false;
|
||||||
if (equipmentSlot != null) {
|
if (equipmentSlot != null) {
|
||||||
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(player, itemStack, equipmentSlot);
|
EntityEquipEvent entityEquipEvent = new EntityEquipEvent(player, itemStack, equipmentSlot);
|
||||||
|
|
||||||
player.callEvent(EntityEquipEvent.class, entityEquipEvent);
|
player.callEvent(EntityEquipEvent.class, entityEquipEvent);
|
||||||
itemStack = entityEquipEvent.getEquippedItem();
|
itemStack = entityEquipEvent.getEquippedItem();
|
||||||
|
cancel = entityEquipEvent.isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cancel) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.itemStacks[slot] = itemStack;
|
this.itemStacks[slot] = itemStack;
|
||||||
|
Loading…
Reference in New Issue
Block a user