Skip to content

Commit 6a3e78f

Browse files
committed
Add support for item expression in click events
1 parent 7274417 commit 6a3e78f

File tree

2 files changed

+31
-17
lines changed

2 files changed

+31
-17
lines changed

src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
import org.bukkit.event.world.ChunkEvent;
8585
import org.bukkit.event.world.StructureGrowEvent;
8686
import org.bukkit.event.world.WorldEvent;
87+
import org.bukkit.inventory.EquipmentSlot;
8788
import org.bukkit.inventory.ItemStack;
8889
import org.eclipse.jdt.annotation.Nullable;
8990

@@ -104,6 +105,8 @@ public final class BukkitEventValues {
104105

105106
public BukkitEventValues() {}
106107

108+
protected static final boolean offHandSupport = Skript.isRunningMinecraft(1, 9);
109+
107110
static {
108111

109112
// === WorldEvents ===
@@ -544,6 +547,20 @@ public Entity get(final PlayerInteractEntityEvent e) {
544547
return e.getRightClicked();
545548
}
546549
}, 0);
550+
EventValues.registerEventValue(PlayerInteractEntityEvent.class, ItemStack.class, new Getter<ItemStack, PlayerInteractEntityEvent>() {
551+
@Override
552+
@Nullable
553+
public ItemStack get(final PlayerInteractEntityEvent e) {
554+
if (offHandSupport) {
555+
EquipmentSlot hand = e.getHand();
556+
if (hand == EquipmentSlot.HAND) return e.getPlayer().getInventory().getItemInMainHand();
557+
else if (hand == EquipmentSlot.OFF_HAND) return e.getPlayer().getInventory().getItemInOffHand();
558+
else return null;
559+
} else {
560+
return e.getPlayer().getItemInHand();
561+
}
562+
}
563+
}, 0);
547564
// PlayerInteractEvent
548565
EventValues.registerEventValue(PlayerInteractEvent.class, Block.class, new Getter<Block, PlayerInteractEvent>() {
549566
@Override
@@ -552,6 +569,20 @@ public Block get(final PlayerInteractEvent e) {
552569
return e.getClickedBlock();
553570
}
554571
}, 0);
572+
EventValues.registerEventValue(PlayerInteractEvent.class, ItemStack.class, new Getter<ItemStack, PlayerInteractEvent>() {
573+
@Override
574+
@Nullable
575+
public ItemStack get(final PlayerInteractEvent e) {
576+
if (offHandSupport) {
577+
EquipmentSlot hand = e.getHand();
578+
if (hand == EquipmentSlot.HAND) return e.getPlayer().getInventory().getItemInMainHand();
579+
else if (hand == EquipmentSlot.OFF_HAND) return e.getPlayer().getInventory().getItemInOffHand();
580+
else return null;
581+
} else {
582+
return e.getPlayer().getItemInHand();
583+
}
584+
}
585+
}, 0);
555586
// PlayerShearEntityEvent
556587
EventValues.registerEventValue(PlayerShearEntityEvent.class, Entity.class, new Getter<Entity, PlayerShearEntityEvent>() {
557588
@Override

src/main/java/ch/njol/skript/util/EquipmentSlot.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -133,23 +133,6 @@ public ItemStack get(final EntityEquipment e) {
133133
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
134134
e.setBoots(item);
135135
}
136-
},
137-
OFF_TOOL {
138-
@SuppressWarnings("deprecation")
139-
@Override
140-
@Nullable
141-
public ItemStack get(final EntityEquipment e) {
142-
return (Skript.isRunningMinecraft(1, 9) ? e.getItemInOffHand() : e.getItemInHand()); //Compatibility reasons
143-
}
144-
145-
@SuppressWarnings("deprecation")
146-
@Override
147-
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
148-
if (Skript.isRunningMinecraft(1, 9))
149-
e.setItemInOffHand(item);
150-
else
151-
e.setItemInHand(item); //Compatibility reasons
152-
}
153136
};
154137

155138
@Nullable

0 commit comments

Comments
 (0)