Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/main/java/ch/njol/skript/Skript.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import ch.njol.skript.classes.ClassInfo;
import ch.njol.skript.classes.data.BukkitClasses;
import ch.njol.skript.classes.data.BukkitEventValues;
import ch.njol.skript.classes.data.DefaultCustomizables;
import ch.njol.skript.classes.data.DefaultComparators;
import ch.njol.skript.classes.data.DefaultConverters;
import ch.njol.skript.classes.data.DefaultFunctions;
Expand Down Expand Up @@ -572,6 +573,7 @@ public void onEnable() {
new DefaultConverters();
new DefaultFunctions();
new DefaultOperations();
new DefaultCustomizables();

ChatMessages.registerListeners();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package ch.njol.skript.classes.data;

import ch.njol.skript.entity.EntityData;
import ch.njol.skript.entity.EntityType;
import ch.njol.skript.lang.CustomizableRegistry;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;

public class DefaultCustomizables {

static {
// REGISTER
CustomizableRegistry.registerCustomizable(InventoryType.class, Inventory.class, type -> Bukkit.createInventory(null, type));

// DISALLOW
CustomizableRegistry.registerDisallowed(Entity.class, EntityData.class, EntityType.class);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import ch.njol.skript.config.Config;
import ch.njol.skript.config.Node;
import ch.njol.skript.expressions.base.EventValueExpression;
import ch.njol.skript.lang.EmptyDefaultExpression;
import ch.njol.skript.lang.ParseContext;
import ch.njol.skript.lang.function.DynamicFunctionReference;
import ch.njol.skript.lang.util.SimpleLiteral;
Expand Down Expand Up @@ -217,7 +218,9 @@ public String toVariableNameString(final ItemType t) {
}
})
.cloner(ItemType::clone)
.serializer(new YggdrasilSerializer<>()));
.serializer(new YggdrasilSerializer<>())
.defaultExpression(new EmptyDefaultExpression<>(ItemType.class))
);

Classes.registerClass(new ClassInfo<>(Time.class, "time")
.user("times?")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public class ExprBannerPatterns extends PropertyExpression<Object, Pattern> {

static {
Skript.registerExpression(ExprBannerPatterns.class, Pattern.class, ExpressionType.PROPERTY,
"[all [[of] the]|the] banner pattern[s] of %itemstacks/itemtypes/slots/blocks%",
"[all [[of] the]|the] banner pattern[s] [of %itemstacks/itemtypes/slots/blocks%]",
"%itemstacks/itemtypes/slots/blocks%'[s] banner pattern[s]",
"[the] %integer%[st|nd|rd|th] [banner] pattern of %itemstacks/itemtypes/slots/blocks%",
"[the] %integer%[st|nd|rd|th] [banner] pattern [of %itemstacks/itemtypes/slots/blocks%]",
"%itemstacks/itemtypes/slots/blocks%'[s] %integer%[st|nd|rd|th] [banner] pattern"
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
public class ExprBookAuthor extends SimplePropertyExpression<ItemType, String> {

static {
register(ExprBookAuthor.class, String.class, "[book] (author|writer|publisher)", "itemtypes");
registerDefault(ExprBookAuthor.class, String.class, "[book] (author|writer|publisher)", "itemtypes");
}

@Nullable
Expand Down
25 changes: 12 additions & 13 deletions src/main/java/ch/njol/skript/expressions/ExprBookPages.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
package ch.njol.skript.expressions;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.ServerPlatform;
import ch.njol.skript.Skript;
import ch.njol.skript.aliases.ItemType;
Expand All @@ -29,6 +18,16 @@
import ch.njol.util.coll.CollectionUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Name("Book Pages")
@Description({
Expand All @@ -50,9 +49,9 @@ public class ExprBookPages extends SimpleExpression<String> {

static {
Skript.registerExpression(ExprBookPages.class, String.class, ExpressionType.PROPERTY,
"[all [[of] the]|the] [book] (pages|content) of %itemtypes/itemstacks%",
"[all [[of] the]|the] [book] (pages|content) [of %itemtypes/itemstacks%]",
"%itemtypes/itemstacks%'[s] [book] (pages|content)",
"[book] page %number% of %itemtypes/itemstacks%",
"[book] page %number% [of %itemtypes/itemstacks%]",
"%itemtypes/itemstacks%'[s] [book] page %number%"
);
if (Skript.isRunningMinecraft(1, 16) && Skript.getServerPlatform() == ServerPlatform.BUKKIT_PAPER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
public class ExprBookTitle extends SimplePropertyExpression<ItemType, String> {

static {
register(ExprBookTitle.class, String.class, "book (name|title)", "itemtypes");
registerDefault(ExprBookTitle.class, String.class, "book (name|title)", "itemtypes");
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ch.njol.skript.expressions;

import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.simplification.SimplifiedLiteral;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.inventory.InventoryType;
Expand Down Expand Up @@ -55,11 +57,9 @@ public class ExprChestInventory extends SimpleExpression<Inventory> {
private static final String DEFAULT_CHEST_TITLE = InventoryType.CHEST.getDefaultTitle();
private static final int DEFAULT_CHEST_ROWS = InventoryType.CHEST.getDefaultSize() / 9;

@Nullable
private Expression<Number> rows;
private @Nullable Expression<Number> rows;

@Nullable
private Expression<String> name;
private @Nullable Expression<String> name;

@Override
@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -101,6 +101,13 @@ public Class<? extends Inventory> getReturnType() {
return Inventory.class;
}

@Override
public Expression<? extends Inventory> simplify() {
if (rows instanceof Literal<Number> && name instanceof Literal<String>)
return SimplifiedLiteral.fromExpression(this);
return this;
}

@Override
public String toString(@Nullable Event event, boolean debug) {
return "chest inventory named " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public class ExprColorOf extends PropertyExpression<Object, Color> {
String types = "blocks/itemtypes/entities/fireworkeffects";
if (Skript.isRunningMinecraft(1, 19, 4))
types += "/displays";
register(ExprColorOf.class, Color.class, "colo[u]r[s]", types);
registerDefault(ExprColorOf.class, Color.class, "colo[u]r[s]", types);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ public class ExprCustomModelData extends PropertyExpression<ItemType, Object> {
static {
if (USE_NEW_CMD) {
List<String> patterns = new ArrayList<>();
patterns.addAll(Arrays.asList(PropertyExpression.getPatterns("[custom] model data", "itemtypes")));
patterns.addAll(Arrays.asList(PropertyExpression.getPatterns("[custom] model data (1:floats|2:flags|3:strings|4:colo[u]rs)", "itemtype")));
patterns.addAll(Arrays.asList(PropertyExpression.getPatterns("(5:(complete|full)) [custom] model data", "itemtype")));
patterns.addAll(Arrays.asList(PropertyExpression.getDefaultPatterns("[custom] model data", "itemtypes")));
patterns.addAll(Arrays.asList(PropertyExpression.getDefaultPatterns("[custom] model data (1:floats|2:flags|3:strings|4:colo[u]rs)", "itemtype")));
patterns.addAll(Arrays.asList(PropertyExpression.getDefaultPatterns("(5:(complete|full)) [custom] model data", "itemtype")));
Skript.registerExpression(ExprCustomModelData.class, Object.class, ExpressionType.PROPERTY, patterns.toArray(String[]::new));
} else {
register(ExprCustomModelData.class, Object.class, "[custom] model data", "itemtypes");
registerDefault(ExprCustomModelData.class, Object.class, "[custom] model data", "itemtypes");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class ExprDurability extends SimplePropertyExpression<Object, Integer> {
private boolean durability;

static {
register(ExprDurability.class, Integer.class, "(damage[s] [value[s]]|1:durabilit(y|ies))", "itemtypes/itemstacks/slots");
registerDefault(ExprDurability.class, Integer.class, "(damage[s] [value[s]]|1:durabilit(y|ies))", "itemtypes/itemstacks/slots");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ public class ExprEnchantmentLevel extends SimpleExpression<Long> {

static {
Skript.registerExpression(ExprEnchantmentLevel.class, Long.class, ExpressionType.PROPERTY,
"[the] [enchant[ment]] level[s] of %enchantments% (on|of) %itemtypes%",
"[the] %enchantments% [enchant[ment]] level[s] (on|of) %itemtypes%",
"[the] [enchant[ment]] level[s] of %enchantments% [(on|of) %itemtypes%]",
"[the] %enchantments% [enchant[ment]] level[s] [(on|of) %itemtypes%]",
"%itemtypes%'[s] %enchantments% [enchant[ment]] level[s]",
"%itemtypes%'[s] [enchant[ment]] level[s] of %enchantments%");
}
Expand Down
19 changes: 9 additions & 10 deletions src/main/java/ch/njol/skript/expressions/ExprEnchantments.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
package ch.njol.skript.expressions;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.Event;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.aliases.ItemType;
import ch.njol.skript.classes.Changer.ChangeMode;
import ch.njol.skript.doc.Description;
Expand All @@ -22,6 +13,14 @@
import ch.njol.skript.util.EnchantmentType;
import ch.njol.util.Kleenean;
import ch.njol.util.coll.CollectionUtils;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.Event;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Name("Item Enchantments")
@Description("All the enchantments an <a href='#itemtype'>item type</a> has.")
Expand All @@ -30,7 +29,7 @@
public class ExprEnchantments extends SimpleExpression<EnchantmentType> {

static {
PropertyExpression.register(ExprEnchantments.class, EnchantmentType.class, "enchantments", "itemtypes");
PropertyExpression.registerDefault(ExprEnchantments.class, EnchantmentType.class, "enchantments", "itemtypes");
}

@SuppressWarnings("null")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class ExprFirstEmptySlot extends SimplePropertyExpression<Inventory, Slot

static {
// support `first empty slot in inventory` as well as typical property syntax
List<String> patterns = new ArrayList<>(Arrays.asList(getPatterns("first empty slot[s]", "inventories")));
List<String> patterns = new ArrayList<>(Arrays.asList(getDefaultPatterns("first empty slot[s]", "inventories")));
patterns.add("[the] first empty slot[s] in %inventories%");
Skript.registerExpression(ExprFirstEmptySlot.class, Slot.class, ExpressionType.PROPERTY, patterns.toArray(new String[0]));
}
Expand Down
19 changes: 9 additions & 10 deletions src/main/java/ch/njol/skript/expressions/ExprInventorySlot.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
package ch.njol.skript.expressions;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.entity.HumanEntity;
import org.bukkit.event.Event;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.PlayerInventory;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
Expand All @@ -22,6 +13,14 @@
import ch.njol.skript.util.slot.InventorySlot;
import ch.njol.skript.util.slot.Slot;
import ch.njol.util.Kleenean;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.Event;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.PlayerInventory;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

@Name("Inventory Slot")
@Description({"Represents a slot in an inventory. It can be used to change the item in an inventory too."})
Expand All @@ -35,7 +34,7 @@ public class ExprInventorySlot extends SimpleExpression<Slot> {

static {
Skript.registerExpression(ExprInventorySlot.class, Slot.class, ExpressionType.COMBINED,
"[the] slot[s] %numbers% of %inventory%", "%inventory%'[s] slot[s] %numbers%");
"[the] slot[s] %numbers% [of %inventory%]", "%inventory%'[s] slot[s] %numbers%");
}

@SuppressWarnings("null")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
public class ExprItemAmount extends SimplePropertyExpression<Object, Long> {

static {
register(ExprItemAmount.class, Long.class, "item[[ ]stack] (amount|size|number)", "slots/itemtypes/itemstacks");
registerDefault(ExprItemAmount.class, Long.class, "item[[ ]stack] (amount|size|number)", "slots/itemtypes/itemstacks");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
public class ExprItemFlags extends PropertyExpression<ItemType, ItemFlag> {

static {
register(ExprItemFlags.class, ItemFlag.class, "item flags", "itemtypes");
registerDefault(ExprItemFlags.class, ItemFlag.class, "item flags", "itemtypes");
}

@Override
Expand Down
33 changes: 16 additions & 17 deletions src/main/java/ch/njol/skript/expressions/ExprLore.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,5 @@
package ch.njol.skript.expressions;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.Skript;
import ch.njol.skript.SkriptConfig;
import ch.njol.skript.aliases.ItemType;
Expand All @@ -31,6 +17,19 @@
import ch.njol.util.Math2;
import ch.njol.util.StringUtils;
import ch.njol.util.coll.CollectionUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* TODO make a 'line %number% of %text%' expression and figure out how to deal with signs (4 lines, delete = empty, etc...)
Expand All @@ -45,10 +44,10 @@ public class ExprLore extends SimpleExpression<String> {

static {
Skript.registerExpression(ExprLore.class, String.class, ExpressionType.PROPERTY,
"[the] lore of %itemstack/itemtype%", "%itemstack/itemtype%'[s] lore",
"[the] line %number% of [the] lore of %itemstack/itemtype%",
"[the] lore [of %itemstack/itemtype%]", "%itemstack/itemtype%'[s] lore",
"[the] line %number% of [the] lore [of %itemstack/itemtype%]",
"[the] line %number% of %itemstack/itemtype%'[s] lore",
"[the] %number%(st|nd|rd|th) line of [the] lore of %itemstack/itemtype%",
"[the] %number%(st|nd|rd|th) line of [the] lore [of %itemstack/itemtype%]",
"[the] %number%(st|nd|rd|th) line of %itemstack/itemtype%'[s] lore");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class ExprMaxDurability extends SimplePropertyExpression<Object, Integer> {

static {
register(ExprMaxDurability.class, Integer.class, "max[imum] (durabilit(y|ies)|damage)", "itemtypes/itemstacks/slots");
registerDefault(ExprMaxDurability.class, Integer.class, "max[imum] (durabilit(y|ies)|damage)", "itemtypes/itemstacks/slots");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
public class ExprMaxStack extends SimplePropertyExpression<Object, Integer> {

static {
register(ExprMaxStack.class, Integer.class, "max[imum] stack[[ ]size]", "itemtypes/inventories");
registerDefault(ExprMaxStack.class, Integer.class, "max[imum] stack[[ ]size]", "itemtypes/inventories");
}

private static final boolean CHANGEABLE_ITEM_STACK_SIZE = Skript.methodExists(ItemMeta.class, "setMaxStackSize", Integer.class);
Expand Down
Loading
Loading