8484import org .bukkit .event .world .ChunkEvent ;
8585import org .bukkit .event .world .StructureGrowEvent ;
8686import org .bukkit .event .world .WorldEvent ;
87+ import org .bukkit .inventory .EquipmentSlot ;
8788import org .bukkit .inventory .ItemStack ;
8889import 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
0 commit comments