Skip to content

Commit

Permalink
馃殌 Add inventory close reasons (SkriptLang#5680)
Browse files Browse the repository at this point in the history
  • Loading branch information
AyhamAl-Ali authored and NotSoDelayed committed Oct 30, 2023
1 parent 5447879 commit 1c6a5c6
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/main/java/ch/njol/skript/classes/data/BukkitClasses.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerQuitEvent.QuitReason;
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
Expand Down Expand Up @@ -1507,8 +1508,17 @@ public String toVariableNameString(EnchantmentOffer eo) {
Classes.registerClass(new EnumClassInfo<>(QuitReason.class, "quitreason", "quit reasons")
.user("(quit|disconnect) ?(reason|cause)s?")
.name("Quit Reason")
.description("Represents a quit reason from a player quit server event.")
.description("Represents a quit reason from a <a href='/events.html#quit'>player quit server event</a>.")
.requiredPlugins("Paper 1.16.5+")
.since("INSERT VERSION"));

if (Skript.classExists("org.bukkit.event.inventory.InventoryCloseEvent$Reason"))
Classes.registerClass(new EnumClassInfo<>(InventoryCloseEvent.Reason.class, "inventoryclosereason", "inventory close reasons")
.user("inventory ?close ?reasons?")
.name("Inventory Close Reasons")
.description("The inventory close reason in an <a href='/events.html#inventory_close'>inventory close event</a>.")
.requiredPlugins("Paper")
.since("INSERT VERSION"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -1333,6 +1333,13 @@ public Inventory get(final InventoryCloseEvent e) {
return e.getInventory();
}
}, 0);
if (Skript.classExists("org.bukkit.event.inventory.InventoryCloseEvent$Reason"))
EventValues.registerEventValue(InventoryCloseEvent.class, InventoryCloseEvent.Reason.class, new Getter<InventoryCloseEvent.Reason, InventoryCloseEvent>() {
@Override
public InventoryCloseEvent.Reason get(InventoryCloseEvent event) {
return event.getReason();
}
}, EventValues.TIME_NOW);
//InventoryPickupItemEvent
EventValues.registerEventValue(InventoryPickupItemEvent.class, Inventory.class, new Getter<Inventory, InventoryPickupItemEvent>() {
@Nullable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/**
* This file is part of Skript.
*
* Skript is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Skript is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Skript. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright Peter G眉ttinger, SkriptLang team and contributors
*/
package ch.njol.skript.expressions;

import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Events;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.RequiredPlugins;
import ch.njol.skript.doc.Since;
import ch.njol.skript.expressions.base.EventValueExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionType;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.eclipse.jdt.annotation.Nullable;

@Name("Inventory Close Reason")
@Description("The <a href='/classes.html#inventoryclosereason'>inventory close reason</a> of an <a href='/events.html#inventory_close'>inventory close event</a>.")
@Examples({
"on inventory close:",
"\tinventory close reason is teleport",
"\tsend \"Your inventory closed due to teleporting!\" to player"
})
@Events("Inventory Close")
@RequiredPlugins("Paper")
@Since("INSERT VERSION")
public class ExprInventoryCloseReason extends EventValueExpression<InventoryCloseEvent.Reason> {

static {
if (Skript.classExists("org.bukkit.event.inventory.InventoryCloseEvent$Reason"))
Skript.registerExpression(ExprInventoryCloseReason.class, InventoryCloseEvent.Reason.class, ExpressionType.SIMPLE, "[the] inventory clos(e|ing) (reason|cause)");
}

@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
if (!getParser().isCurrentEvent(InventoryCloseEvent.class)) {
Skript.error("The 'inventory close reason' expression can only be used in an inventory close event");
return false;
}
return true;
}

public ExprInventoryCloseReason() {
super(InventoryCloseEvent.Reason.class);
}

@Override
public String toString(@Nullable Event event, boolean debug) {
return "inventory close reason";
}

}
13 changes: 13 additions & 0 deletions src/main/resources/lang/default.lang
Original file line number Diff line number Diff line change
Expand Up @@ -1317,6 +1317,18 @@ teleport causes:
dismount: dismount, dismounted
exit_bed: exit bed, exiting bed, bed exit

# -- Inventory Close Reasons --
inventory close reasons:
unknown: unknown
teleport: teleport
cant_use: can't use, can not use, cannot use
unloaded: unloaded
open_new: open new, new opened
player: player
disconnect: disconnected, disconnect
death: death
plugin: plugin

# -- Game Modes --
game modes:
survival: survival
Expand Down Expand Up @@ -2011,6 +2023,7 @@ types:
gene: panda gene娄s @a
gamerulevalue: gamerule value娄s @a
quitreason: quit reason娄s @a
inventoryclosereason: inventory close reason娄s @an

# Skript
weathertype: weather type娄s @a
Expand Down

0 comments on commit 1c6a5c6

Please sign in to comment.