Skip to content

Commit

Permalink
Apply changes
Browse files Browse the repository at this point in the history
  • Loading branch information
TheLimeGlass committed Sep 1, 2024
1 parent 66b8670 commit c96a4b5
Showing 1 changed file with 19 additions and 20 deletions.
39 changes: 19 additions & 20 deletions src/main/java/ch/njol/skript/expressions/ExprTool.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import ch.njol.skript.lang.ExpressionType;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.registrations.Classes;
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Getter;
import ch.njol.skript.util.slot.CursorSlot;
import ch.njol.skript.util.slot.EquipmentSlot;
Expand All @@ -48,7 +49,7 @@
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.eclipse.jdt.annotation.Nullable;
import org.jetbrains.annotations.Nullable;

@Name("Tool/Offhand")
@Description("The item an entity is holding in their main or off hand.")
Expand All @@ -63,8 +64,8 @@ public class ExprTool extends PropertyExpression<LivingEntity, Slot> {

static {
Skript.registerExpression(ExprTool.class, Slot.class, ExpressionType.PROPERTY,
"[the] ((tool|held item|weapon)|offhand:(off[ ]hand (tool|item))) [of %livingentities%]",
"%livingentities%'[s] ((tool|held item|weapon)|(off[ ]hand (tool|item)))"
"[the] ((tool|held item|weapon)|offhand:(off[ ]hand (tool|weapon|[held] item))) [of %livingentities%]",
"%livingentities%'[s] ((tool|held item|weapon)|offhand:(off[ ]hand (tool|weapon|[held] item)))"
);
}

Expand All @@ -86,8 +87,7 @@ protected Slot[] get(Event event, LivingEntity[] source) {
@Nullable
public Slot get(LivingEntity entity) {
if (!delayed) {
if (offHand && event instanceof InventoryClickEvent && ((InventoryClickEvent) event).getWhoClicked().equals(entity) && getTime() == 1) {
InventoryClickEvent inventoryClickEvent = (InventoryClickEvent) event;
if (offHand && event instanceof InventoryClickEvent inventoryClickEvent && inventoryClickEvent.getWhoClicked().equals(entity) && getTime() == 1) {
// When a player uses a number key to swap an item from hotbar to offhand. This simplifies the process with future states.
if (inventoryClickEvent.getClick() == ClickType.NUMBER_KEY && inventoryClickEvent.getSlot() == EquipmentSlot.EquipSlot.OFF_HAND.slotNumber) {
PlayerInventory inventory = inventoryClickEvent.getWhoClicked().getInventory();
Expand All @@ -102,36 +102,35 @@ public Slot get(LivingEntity entity) {
case PICKUP_HALF:
case PICKUP_ONE:
case PICKUP_SOME:
return new InventorySlot(inventoryClickEvent.getClickedInventory(), inventoryClickEvent.getRawSlot());
return new InventorySlot(inventoryClickEvent.getClickedInventory(), inventoryClickEvent.getSlot());
case PLACE_ALL:
case PLACE_ONE:
case PLACE_SOME:
case SWAP_WITH_CURSOR:
return new CursorSlot((Player) inventoryClickEvent.getWhoClicked());
return new CursorSlot((Player) inventoryClickEvent.getWhoClicked(), inventoryClickEvent.getCurrentItem());
default:
break;
}
}
return null;
} else if (!offHand && event instanceof PlayerItemHeldEvent && ((PlayerItemHeldEvent) event).getPlayer() == entity) {
PlayerItemHeldEvent playerItemHeldEvent = (PlayerItemHeldEvent) event;
} else if (!offHand && event instanceof PlayerItemHeldEvent playerItemHeldEvent && playerItemHeldEvent.getPlayer() == entity) {
PlayerInventory inventory = playerItemHeldEvent.getPlayer().getInventory();
return new InventorySlot(inventory, getTime() >= 0 ? playerItemHeldEvent.getNewSlot() : playerItemHeldEvent.getPreviousSlot());
} else if (event instanceof PlayerBucketEvent && ((PlayerBucketEvent) event).getPlayer() == entity) {
PlayerBucketEvent playerBucketEvent = (PlayerBucketEvent) event;
return new InventorySlot(inventory, getTime() >= EventValues.TIME_NOW ? playerItemHeldEvent.getNewSlot() : playerItemHeldEvent.getPreviousSlot());
} else if (event instanceof PlayerBucketEvent playerBucketEvent && playerBucketEvent.getPlayer() == entity) {
PlayerInventory inventory = playerBucketEvent.getPlayer().getInventory();
boolean isOffHand = playerBucketEvent.getHand() == org.bukkit.inventory.EquipmentSlot.OFF_HAND || offHand;
return new InventorySlot(inventory, isOffHand ? EquipmentSlot.EquipSlot.OFF_HAND.slotNumber
: playerBucketEvent.getPlayer().getInventory().getHeldItemSlot()) {

@Override
@Nullable
public ItemStack getItem() {
return getTime() <= 0 ? super.getItem() : playerBucketEvent.getItemStack();
return getTime() <= EventValues.TIME_NOW ? super.getItem() : playerBucketEvent.getItemStack();
}

@Override
public void setItem(@Nullable ItemStack item) {
if (getTime() >= 0) {
if (getTime() >= EventValues.TIME_NOW) {
playerBucketEvent.setItemStack(item);
} else {
super.setItem(item);
Expand All @@ -146,7 +145,7 @@ public void setItem(@Nullable ItemStack item) {
return new EquipmentSlot(equipment, offHand ? EquipmentSlot.EquipSlot.OFF_HAND : EquipmentSlot.EquipSlot.TOOL) {
@Override
public String toString(@Nullable Event event, boolean debug) {
String time = getTime() == 1 ? "future " : getTime() == -1 ? "former " : "";
String time = getTime() == 1 ? "future " : getTime() == EventValues.TIME_PAST ? "former " : "";
String hand = offHand ? "off hand" : "";
String item = Classes.toString(getItem());
return String.format("%s %s tool of %s", time, hand, item);
Expand All @@ -156,6 +155,11 @@ public String toString(@Nullable Event event, boolean debug) {
});
}

@Override
public boolean setTime(int time) {
return super.setTime(time, PlayerItemHeldEvent.class, PlayerBucketFillEvent.class, PlayerBucketEmptyEvent.class, InventoryClickEvent.class);
}

@Override
public Class<Slot> getReturnType() {
return Slot.class;
Expand All @@ -167,9 +171,4 @@ public String toString(@Nullable Event event, boolean debug) {
return String.format("%s tool of %s", hand, getExpr().toString(event, debug));
}

@Override
public boolean setTime(int time) {
return super.setTime(time, PlayerItemHeldEvent.class, PlayerBucketFillEvent.class, PlayerBucketEmptyEvent.class, InventoryClickEvent.class);
}

}

0 comments on commit c96a4b5

Please sign in to comment.