Skip to content

Commit

Permalink
Merge branch 'dev/2.7' into feature/2.7.0/update-to-1.20
Browse files Browse the repository at this point in the history
  • Loading branch information
TheLimeGlass authored Jun 27, 2023
2 parents ed38ed5 + 4e1f1df commit 77811a6
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 2 deletions.
82 changes: 82 additions & 0 deletions src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,11 @@
import org.bukkit.event.hanging.HangingPlaceEvent;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.inventory.DragType;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
Expand Down Expand Up @@ -145,13 +147,17 @@
import org.bukkit.event.world.WorldEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.Recipe;
import org.bukkit.potion.PotionEffectType;
import org.eclipse.jdt.annotation.Nullable;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
* @author Peter Güttinger
Expand Down Expand Up @@ -1087,6 +1093,82 @@ public Inventory get(final InventoryClickEvent e) {
return e.getClickedInventory();
}
}, 0);
// InventoryDragEvent
EventValues.registerEventValue(InventoryDragEvent.class, Player.class, new Getter<Player, InventoryDragEvent>() {
@Override
@Nullable
public Player get(InventoryDragEvent event) {
return event.getWhoClicked() instanceof Player ? (Player) event.getWhoClicked() : null;
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, World.class, new Getter<World, InventoryDragEvent>() {
@Override
@Nullable
public World get(InventoryDragEvent event) {
return event.getWhoClicked().getWorld();
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, ItemStack.class, new Getter<ItemStack, InventoryDragEvent>() {
@Override
@Nullable
public ItemStack get(InventoryDragEvent event) {
return event.getOldCursor();
}
}, EventValues.TIME_PAST);
EventValues.registerEventValue(InventoryDragEvent.class, ItemStack.class, new Getter<ItemStack, InventoryDragEvent>() {
@Override
@Nullable
public ItemStack get(InventoryDragEvent event) {
return event.getCursor();
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, ItemStack[].class, new Getter<ItemStack[], InventoryDragEvent>() {
@Override
@Nullable
public ItemStack[] get(InventoryDragEvent event) {
return event.getNewItems().values().toArray(new ItemStack[0]);
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, Slot[].class, new Getter<Slot[], InventoryDragEvent>() {
@Override
@Nullable
public Slot[] get(InventoryDragEvent event) {
List<Slot> slots = new ArrayList<>(event.getRawSlots().size());
InventoryView view = event.getView();
for (Integer rawSlot : event.getRawSlots()) {
Inventory inventory = view.getInventory(rawSlot);
int slot = view.convertSlot(rawSlot);
if (inventory == null)
continue;
// Not all indices point to inventory slots. Equipment, for example
if (inventory instanceof PlayerInventory && slot >= 36) {
slots.add(new ch.njol.skript.util.slot.EquipmentSlot(((PlayerInventory) view.getBottomInventory()).getHolder(), slot));
} else {
slots.add(new InventorySlot(inventory, view.convertSlot(rawSlot)));
}
}
return slots.toArray(new Slot[0]);
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, ClickType.class, new Getter<ClickType, InventoryDragEvent>() {
@Override
@Nullable
public ClickType get(InventoryDragEvent event) {
return event.getType() == DragType.EVEN ? ClickType.LEFT : ClickType.RIGHT;
}
}, EventValues.TIME_NOW);
EventValues.registerEventValue(InventoryDragEvent.class, Inventory[].class, new Getter<Inventory[], InventoryDragEvent>() {
@Override
@Nullable
public Inventory[] get(InventoryDragEvent event) {
Set<Inventory> inventories = new HashSet<>();
InventoryView view = event.getView();
for (Integer rawSlot : event.getRawSlots()) {
inventories.add(view.getInventory(rawSlot));
}
return inventories.toArray(new Inventory[0]);
}
}, EventValues.TIME_NOW);
// PrepareAnvilEvent
EventValues.registerEventValue(PrepareAnvilEvent.class, ItemStack.class, new Getter<ItemStack, PrepareAnvilEvent>() {
@Override
Expand Down
15 changes: 13 additions & 2 deletions src/main/java/ch/njol/skript/events/SimpleEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
import org.bukkit.event.inventory.FurnaceBurnEvent;
import org.bukkit.event.inventory.FurnaceSmeltEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
Expand Down Expand Up @@ -670,7 +671,7 @@ public class SimpleEvents {
"Use <a href='./expressions.html#ExprChatFormat'>chat format</a> to change message format.",
"Use <a href='./expressions.html#ExprChatRecipients'>chat recipients</a> to edit chat recipients."
)
.examples(
.examples(
"on chat:",
"\tif player has permission \"owner\":",
"\t\tset chat format to \"&lt;red&gt;[player]&lt;light gray&gt;: &lt;light red&gt;[message]\"",
Expand All @@ -679,7 +680,7 @@ public class SimpleEvents {
"\telse: #default message format",
"\t\tset chat format to \"&lt;orange&gt;[player]&lt;light gray&gt;: &lt;white&gt;[message]\""
)
.since("1.4.1");
.since("1.4.1");
if (Skript.classExists("org.bukkit.event.world.LootGenerateEvent")) {
Skript.registerEvent("Loot Generate", SimpleEvent.class, LootGenerateEvent.class, "loot generat(e|ing)")
.description(
Expand Down Expand Up @@ -709,6 +710,16 @@ public class SimpleEvents {
.requiredPlugins("Paper 1.16+");
}

Skript.registerEvent("Inventory Drag", SimpleEvent.class, InventoryDragEvent.class, "inventory drag[ging]")
.description("Called when a player drags an item in their cursor across the inventory.")
.examples(
"on inventory drag:",
"\tif player's current inventory is {_gui}:",
"\t\tsend \"You can't drag your items here!\" to player",
"\t\tcancel event"
)
.since("INSERT VERSION");

}

}

0 comments on commit 77811a6

Please sign in to comment.