diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index 5b08a0950..33c0f8d85 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -55,5 +55,6 @@ jobs:
uses: SkriptLang/skript-test-action@v1.1
with:
test_script_directory: src/test/scripts
- skript_repo_ref: 2.9.5
+ skript_repo_ref: 2.10.0-pre1
extra_plugins_directory: extra-plugins/
+ run_vanilla_tests: 'false' # temporarily disable
diff --git a/README.md b/README.md
index 8582f07af..3b80e2e32 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,12 @@ See the [**Wiki**](https://github.com/ShaneBeee/SkBee/wiki) for more detailed in
Are you running an **outdated** version of Minecraft and looking for an **outdated** build of SkBee that will work on your **outdated** server? Well look no further, here is a list of **outdated** builds of SkBee for your **outdated** server.
Keep in mind, these **outdated** builds for **outdated** servers are not supported and you will not get support/bug fixes, because they're **outdated**!
+### Skript 2.9.5 (and below)
+Due to changes in Skript 2.10's API, SkBee 3.7.0+ will only work on Skript 2.10+
+If you need SkBee to work on an older version of Skript this is the last version that will work:
+[**SkBee 3.6.6**](https://github.com/SkriptHub/SkBee/releases/tag/3.6.6)
+(Just like any other **outdated** build, this one is no longer supported)
+
### Skript 2.6.4 (and below)
Due to changes in Skript 2.7's API, SkBee 3.0.0+ will only work on Skript 2.7+
If you need SkBee to work on an older version of Skript this is the last version that will work:
diff --git a/build.gradle b/build.gradle
index abf2eeb38..b699fe8e3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -37,7 +37,7 @@ dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
// Skript
- compileOnly(group: 'com.github.SkriptLang', name: 'Skript', version: '2.8.7') {
+ compileOnly(group: 'com.github.SkriptLang', name: 'Skript', version: '2.10.0-pre1') {
transitive = false
}
@@ -54,7 +54,7 @@ dependencies {
implementation("fr.mrmicky:fastboard:2.1.3")
// Virtual Furnace
- implementation("com.github.ShaneBeeStudios:VirtualFurnace:1.0.0") {
+ implementation("com.github.ShaneBeeStudios:VirtualFurnace:1.1.1") {
transitive = false
}
diff --git a/src/main/java/com/shanebeestudios/skbee/AddonLoader.java b/src/main/java/com/shanebeestudios/skbee/AddonLoader.java
index 9ee3211b0..5f20ee6be 100644
--- a/src/main/java/com/shanebeestudios/skbee/AddonLoader.java
+++ b/src/main/java/com/shanebeestudios/skbee/AddonLoader.java
@@ -4,7 +4,6 @@
import ch.njol.skript.SkriptAddon;
import ch.njol.skript.localization.Noun;
import ch.njol.skript.registrations.Classes;
-import ch.njol.skript.test.runner.TestMode;
import ch.njol.skript.util.Version;
import com.shanebeestudios.skbee.api.listener.EntityListener;
import com.shanebeestudios.skbee.api.listener.NBTListener;
@@ -62,9 +61,9 @@ boolean canLoadPlugin() {
return false;
}
Version skriptVersion = Skript.getVersion();
- if (skriptVersion.isSmallerThan(new Version(2, 7))) {
+ if (skriptVersion.isSmallerThan(new Version(2, 9, 999))) {
Util.log("&cDependency Skript outdated, plugin disabling.");
- Util.log("&eSkBee requires Skript 2.7+ but found Skript " + skriptVersion);
+ Util.log("&eSkBee requires Skript 2.10+ but found Skript " + skriptVersion);
return false;
}
if (!Skript.isAcceptRegistrations()) {
@@ -323,8 +322,7 @@ private void loadStructureElements() {
}
private void loadVirtualFurnaceElements() {
- // Force load if running tests as this is defaulted to false in the config
- if (!this.config.ELEMENTS_VIRTUAL_FURNACE && !TestMode.ENABLED) {
+ if (!this.config.ELEMENTS_VIRTUAL_FURNACE) {
Util.logLoading("&5Virtual Furnace Elements &cdisabled via config");
return;
}
@@ -501,6 +499,10 @@ private void loadParticleElements() {
}
private void loadTagElements() {
+ if (Util.IS_RUNNING_SKRIPT_2_10) {
+ Util.logLoading("&5Minecraft Tag elements &cdisabled &r(&7now in Skript&r)");
+ return;
+ }
if (!this.config.ELEMENTS_MINECRAFT_TAG) {
Util.logLoading("&5Minecraft Tag elements &cdisabled via config");
return;
diff --git a/src/main/java/com/shanebeestudios/skbee/api/generator/BiomeGenerator.java b/src/main/java/com/shanebeestudios/skbee/api/generator/BiomeGenerator.java
index bc7231cac..59f515baf 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/generator/BiomeGenerator.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/generator/BiomeGenerator.java
@@ -3,6 +3,7 @@
import ch.njol.skript.lang.Trigger;
import com.shanebeestudios.skbee.api.generator.event.BiomeGenEvent;
import org.bukkit.Location;
+import org.bukkit.Registry;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BiomeProvider;
@@ -30,10 +31,11 @@ public void setTrigger(Trigger trigger) {
return biomeGenEvent.getBiome();
}
+ @SuppressWarnings({"deprecation", "UnstableApiUsage", "removal"})
@Override
public @NotNull List getBiomes(@NotNull WorldInfo worldInfo) {
List biomes = new ArrayList<>();
- for (Biome biome : Biome.values()) {
+ for (Biome biome : Registry.BIOME) {
if (biome != Biome.CUSTOM) biomes.add(biome);
}
return biomes;
diff --git a/src/main/java/com/shanebeestudios/skbee/api/listener/ScriptListener.java b/src/main/java/com/shanebeestudios/skbee/api/listener/ScriptListener.java
index 48227e91e..287a67a53 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/listener/ScriptListener.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/listener/ScriptListener.java
@@ -49,7 +49,7 @@ private void processCommand(Cancellable event, CommandSender sender, String comm
static {
}
- @SuppressWarnings("UnstableApiUsage")
+ @SuppressWarnings({"UnstableApiUsage", "removal"})
@EventHandler
private void onLoadScript(PreScriptLoadEvent event) {
List scriptsToRemove = new ArrayList<>();
diff --git a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomBlock.java b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomBlock.java
index cca2be9a8..3c2552318 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomBlock.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomBlock.java
@@ -17,6 +17,7 @@ public class NBTCustomBlock extends NBTContainer {
private final NBTCompound chunkData;
private final boolean canSave;
+ @SuppressWarnings("deprecation")
public NBTCustomBlock(Block block) {
this.block = block;
this.blockTag = String.format("%s_%s_%s", block.getX(), block.getY(), block.getZ());
@@ -51,6 +52,7 @@ protected void saveCompound() {
blockCompound.mergeCompound(this);
}
+ @SuppressWarnings("deprecation")
@Override
public String toString() {
NBTContainer tag = new NBTContainer();
diff --git a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomItemStack.java b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomItemStack.java
index 44d222604..e210cf304 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomItemStack.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomItemStack.java
@@ -18,7 +18,7 @@ public class NBTCustomItemStack extends NBTContainer {
private final boolean isFull;
public NBTCustomItemStack(ItemStack itemStack, boolean isCustomData, boolean isVanilla, boolean isFull) {
- super(getInitialContainer(itemStack, isCustomData, isVanilla, isFull).toString());
+ super(getInitialContainer(itemStack, isCustomData, isVanilla, isFull).getCompound());
this.originalItemStack = itemStack;
this.isCustomData = isCustomData;
this.isFull = isFull;
@@ -32,7 +32,10 @@ private static NBTCompound getInitialContainer(ItemStack itemStack, boolean isCu
nbtContainer = NBTItem.convertItemtoNBT(itemStack);
}
if (nbtContainer == null) nbtContainer = new NBTContainer();
- return getContainer(nbtContainer, isCustomData, isFull);
+ // Create a clone (Minecraft seems to freak out without doing this)
+ NBTCompound clone = new NBTContainer();
+ clone.mergeCompound(getContainer(nbtContainer, isCustomData, isFull));
+ return clone;
}
private static NBTCompound getContainer(NBTCompound itemContainer, boolean isCustomData, boolean isFull) {
diff --git a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomOfflinePlayer.java b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomOfflinePlayer.java
index 9116622d9..0e15a14a1 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomOfflinePlayer.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/nbt/NBTCustomOfflinePlayer.java
@@ -18,10 +18,11 @@ public class NBTCustomOfflinePlayer extends NBTFile implements NBTCustom {
private static final String PLAYER_FOLDER;
static {
- String worldFolder = Bukkit.getWorlds().get(0).getWorldFolder().getPath();
+ String worldFolder = Bukkit.getWorlds().getFirst().getWorldFolder().getPath();
PLAYER_FOLDER = worldFolder + "/playerdata/";
}
+ @SuppressWarnings("deprecation")
public NBTCustomOfflinePlayer(OfflinePlayer offlinePlayer) throws IOException {
super(new File(PLAYER_FOLDER + offlinePlayer.getUniqueId() + ".dat"));
}
@@ -88,6 +89,7 @@ public String toString() {
return getCopy().toString();
}
+ @SuppressWarnings("deprecation")
@Override
public @NotNull NBTCompound getCopy() {
try {
diff --git a/src/main/java/com/shanebeestudios/skbee/api/recipe/RecipeUtil.java b/src/main/java/com/shanebeestudios/skbee/api/recipe/RecipeUtil.java
index 8a35736cb..f7b702739 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/recipe/RecipeUtil.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/recipe/RecipeUtil.java
@@ -113,7 +113,7 @@ public static void logCookingRecipe(CookingRecipe> recipe) {
if (HAS_CATEGORY) {
log(" - &7Category: &r\"&6%s&r\"", recipe.getCategory());
}
- log(" - &7CookTime: &b%s", Timespan.fromTicks(recipe.getCookingTime()));
+ log(" - &7CookTime: &b%s", new Timespan(Timespan.TimePeriod.TICK, recipe.getCookingTime()));
log(" - &7Experience: &b%s", recipe.getExperience());
log(" - &7Ingredients: %s", getFancy(recipe.getInputChoice()));
}
diff --git a/src/main/java/com/shanebeestudios/skbee/api/reflection/ChatReflection.java b/src/main/java/com/shanebeestudios/skbee/api/reflection/ChatReflection.java
index 783b3a452..ebe0167e9 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/reflection/ChatReflection.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/reflection/ChatReflection.java
@@ -50,6 +50,7 @@ public class ChatReflection {
* (usually spaces)
* @return Pretty string of NBTCompound
*/
+ @SuppressWarnings("deprecation")
public static @Nullable String getPrettyNBT(NBTCompound compound, String split) {
Object nmsNBT = new NBTContainer(compound.toString()).getCompound();
String s = split != null ? split : "";
diff --git a/src/main/java/com/shanebeestudios/skbee/api/util/ObjectConverter.java b/src/main/java/com/shanebeestudios/skbee/api/util/ObjectConverter.java
index 38ad5f4d9..e72038a8f 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/util/ObjectConverter.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/util/ObjectConverter.java
@@ -88,7 +88,12 @@ public static String getAllNames() {
}
static {
- register(Advancement.class, Registry.ADVANCEMENT);
+ register(Advancement.class, new ObjectConverter<>() {
+ @Override
+ public @Nullable Advancement get(NamespacedKey key) {
+ return Bukkit.getAdvancement(key);
+ }
+ });
register(Attribute.class, Registry.ATTRIBUTE);
register(Biome.class, Registry.BIOME);
if (Skript.classExists("org.bukkit.damage.DamageType")) {
diff --git a/src/main/java/com/shanebeestudios/skbee/api/util/Util.java b/src/main/java/com/shanebeestudios/skbee/api/util/Util.java
index 721a5a7bc..5abc1fd6c 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/util/Util.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/util/Util.java
@@ -33,6 +33,7 @@ public class Util {
// Shortcut for finding stuff to remove later
public static final boolean IS_RUNNING_SKRIPT_2_9 = Skript.getVersion().isLargerThan(new Version(2, 8, 999));
+ public static final boolean IS_RUNNING_SKRIPT_2_10 = Skript.getVersion().isLargerThan(new Version(2, 9, 999));
public static final boolean IS_RUNNING_MC_1_21 = Skript.isRunningMinecraft(1, 21);
@SuppressWarnings("deprecation") // Paper deprecation
diff --git a/src/main/java/com/shanebeestudios/skbee/api/wrapper/ComponentWrapper.java b/src/main/java/com/shanebeestudios/skbee/api/wrapper/ComponentWrapper.java
index a9a6c6dce..72148a547 100644
--- a/src/main/java/com/shanebeestudios/skbee/api/wrapper/ComponentWrapper.java
+++ b/src/main/java/com/shanebeestudios/skbee/api/wrapper/ComponentWrapper.java
@@ -14,6 +14,7 @@
import net.kyori.adventure.key.Key;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.TextColor;
@@ -156,7 +157,7 @@ public static ComponentWrapper fromTranslate(String translate) {
* @param objects Objects to add into translation
* @return Component from translation
*/
- public static ComponentWrapper fromTranslate(String translate, Object... objects) {
+ public static ComponentWrapper fromTranslate(String translate, @Nullable String fallback, Object... objects) {
List comps = new ArrayList<>();
for (Object object : objects) {
if (object instanceof ComponentWrapper component) {
@@ -174,7 +175,7 @@ public static ComponentWrapper fromTranslate(String translate, Object... objects
comps.add(Component.text(objectString));
}
}
- return new ComponentWrapper(Component.translatable(translate, comps));
+ return new ComponentWrapper(Component.translatable(translate, fallback, comps));
}
/**
@@ -196,7 +197,7 @@ private static Component getItem(Object object) {
itemStack = is;
} else if (object instanceof ItemType itemType) {
itemStack = itemType.getRandom();
- material = itemStack.getType();
+ if (itemStack != null) material = itemStack.getType();
} else if (object instanceof Slot slot) {
itemStack = slot.getItem();
}
@@ -354,7 +355,7 @@ public Color getColor() {
if (skriptColor != null) {
return skriptColor;
}
- return new ColorRGB(textColor.red(), textColor.green(), textColor.blue());
+ return ColorRGB.fromRGB(textColor.red(), textColor.green(), textColor.blue());
}
public void setBold(boolean bold) {
@@ -411,6 +412,19 @@ public String getFont() {
}
}
+ public void setFallback(String fallback) {
+ if (this.component instanceof TranslatableComponent translatable) {
+ this.component = translatable.fallback(fallback);
+ }
+ }
+
+ public String getFallback() {
+ if (this.component instanceof TranslatableComponent translatable) {
+ return translatable.fallback();
+ }
+ return null;
+ }
+
public void setInsertion(String insertion) {
this.component = this.component.insertion(insertion);
}
@@ -542,6 +556,7 @@ public void setEntityName(Entity entity, boolean alwaysVisible) {
*
* @param inventory Inventory to change name
*/
+ @SuppressWarnings("deprecation")
public void setInventoryName(Inventory inventory) {
List viewers = inventory.getViewers();
if (viewers.isEmpty()) return;
diff --git a/src/main/java/com/shanebeestudios/skbee/config/Config.java b/src/main/java/com/shanebeestudios/skbee/config/Config.java
index ac05bf79b..31e439ed1 100644
--- a/src/main/java/com/shanebeestudios/skbee/config/Config.java
+++ b/src/main/java/com/shanebeestudios/skbee/config/Config.java
@@ -1,5 +1,6 @@
package com.shanebeestudios.skbee.config;
+import ch.njol.skript.test.runner.TestMode;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import com.shanebeestudios.skbee.SkBee;
@@ -115,6 +116,7 @@ private boolean getSetting(String setting) {
}
private boolean getElement(String element) {
+ if (TestMode.ENABLED) return true;
return this.config.getBoolean("elements." + element);
}
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/advancement/event/SimpleEvents.java b/src/main/java/com/shanebeestudios/skbee/elements/advancement/event/SimpleEvents.java
index 56f5e5da6..a97dbc3e3 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/advancement/event/SimpleEvents.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/advancement/event/SimpleEvents.java
@@ -3,10 +3,8 @@
import ch.njol.skript.Skript;
import ch.njol.skript.lang.util.SimpleEvent;
import ch.njol.skript.registrations.EventValues;
-import ch.njol.skript.util.Getter;
import org.bukkit.advancement.Advancement;
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
-import org.jetbrains.annotations.Nullable;
@SuppressWarnings("unused")
public class SimpleEvents extends SimpleEvent {
@@ -14,24 +12,13 @@ public class SimpleEvents extends SimpleEvent {
static {
// Player Advancement Event
Skript.registerEvent("Player Advancement", SimpleEvents.class, PlayerAdvancementDoneEvent.class,
- "[player] advancement done")
- .description("Called when a player has completed all criteria in an advancement.")
- .examples("")
- .since("1.17.0");
+ "[player] advancement done")
+ .description("Called when a player has completed all criteria in an advancement.")
+ .examples("")
+ .since("1.17.0");
- EventValues.registerEventValue(PlayerAdvancementDoneEvent.class, String.class, new Getter<>() {
- @Override
- public @Nullable String get(PlayerAdvancementDoneEvent event) {
- return event.getAdvancement().getKey().toString();
- }
- }, 0);
-
- EventValues.registerEventValue(PlayerAdvancementDoneEvent.class, Advancement.class, new Getter<>() {
- @Override
- public @Nullable Advancement get(PlayerAdvancementDoneEvent event) {
- return event.getAdvancement();
- }
- }, 0);
+ EventValues.registerEventValue(PlayerAdvancementDoneEvent.class, String.class, event -> event.getAdvancement().getKey().toString(), EventValues.TIME_NOW);
+ EventValues.registerEventValue(PlayerAdvancementDoneEvent.class, Advancement.class, PlayerAdvancementDoneEvent::getAdvancement, EventValues.TIME_NOW);
}
}
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/bound/events/BoundEvents.java b/src/main/java/com/shanebeestudios/skbee/elements/bound/events/BoundEvents.java
index 63c9fad53..66e6d76e6 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/bound/events/BoundEvents.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/bound/events/BoundEvents.java
@@ -5,7 +5,6 @@
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.registrations.EventValues;
-import ch.njol.skript.util.Getter;
import com.shanebeestudios.skbee.SkBee;
import com.shanebeestudios.skbee.api.bound.Bound;
import com.shanebeestudios.skbee.api.event.bound.BoundEnterEvent;
@@ -24,21 +23,6 @@ public class BoundEvents extends SkriptEvent {
private static BoundBorderListener boundBorderListener;
static {
-
- EventValues.registerEventValue(BoundEvent.class, Bound.class, new Getter<>() {
- @Override
- public @Nullable Bound get(BoundEvent event) {
- return event.getBound();
- }
- }, EventValues.TIME_NOW);
-
- EventValues.registerEventValue(BoundEvent.class, String.class, new Getter<>() {
- @Override
- public @Nullable String get(BoundEvent event) {
- return event.getBound().getId();
- }
- }, EventValues.TIME_NOW);
-
Skript.registerEvent("Bound - Enter", BoundEvents.class, BoundEnterEvent.class, "(bound enter|enter bound) [with id %-string%]")
.description("Called when a player enters a bound. Optional ID of bound. 'event-string' = bound ID.",
"NOTE: Due to breaking changes in Bukkit API, enter/exit events will not be called when a player mounts/dismounts an entity if running SkBee 3.5.0+ on MC 1.20.4 and below.")
@@ -49,13 +33,6 @@ public class BoundEvents extends SkriptEvent {
"\tcancel event")
.since("1.0.0, 1.12.2 (Bound IDs)");
- EventValues.registerEventValue(BoundEnterEvent.class, Player.class, new Getter<>() {
- @Override
- public Player get(BoundEnterEvent event) {
- return event.getPlayer();
- }
- }, 0);
-
Skript.registerEvent("Bound - Exit", BoundEvents.class, BoundExitEvent.class, "(bound exit|exit bound) [with id %-string%]")
.description("Called when a player exits a bound. Optional ID of bound. 'event-string' = bound ID.",
"NOTE: Due to breaking changes in Bukkit API, enter/exit events will not be called when a player mounts/dismounts an entity if running SkBee 3.5.0+ on MC 1.20.4 and below.")
@@ -67,18 +44,15 @@ public Player get(BoundEnterEvent event) {
"\tcancel event")
.since("1.0.0, 1.12.2 (Bound IDs)");
- EventValues.registerEventValue(BoundExitEvent.class, Player.class, new Getter<>() {
- @Override
- public Player get(BoundExitEvent event) {
- return event.getPlayer();
- }
- }, 0);
-
+ EventValues.registerEventValue(BoundEvent.class, Bound.class, BoundEvent::getBound, EventValues.TIME_NOW);
+ EventValues.registerEventValue(BoundEvent.class, String.class, event -> event.getBound().getId(), EventValues.TIME_NOW);
+ EventValues.registerEventValue(BoundEnterEvent.class, Player.class, BoundEnterEvent::getPlayer, 0);
+ EventValues.registerEventValue(BoundExitEvent.class, Player.class, BoundExitEvent::getPlayer, 0);
}
private Literal boundID;
- @SuppressWarnings({"NullableProblems", "unchecked"})
+ @SuppressWarnings("unchecked")
@Override
public boolean init(Literal>[] args, int matchedPattern, ParseResult parseResult) {
boundID = (Literal) args[0];
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/bound/expressions/ExprBoundCoords.java b/src/main/java/com/shanebeestudios/skbee/elements/bound/expressions/ExprBoundCoords.java
index bca5d56c0..f339400e0 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/bound/expressions/ExprBoundCoords.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/bound/expressions/ExprBoundCoords.java
@@ -9,8 +9,7 @@
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionType;
-import ch.njol.skript.lang.SkriptParser;
-import ch.njol.skript.util.Getter;
+import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.Kleenean;
import ch.njol.util.coll.CollectionUtils;
import com.shanebeestudios.skbee.SkBee;
@@ -42,9 +41,9 @@ public class ExprBoundCoords extends PropertyExpression {
private boolean LESSER;
private int parse;
- @SuppressWarnings({"unchecked", "null", "NullableProblems"})
+ @SuppressWarnings("unchecked")
@Override
- public boolean init(Expression>[] exprs, int matchedPattern, Kleenean kleenean, SkriptParser.ParseResult parseResult) {
+ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean kleenean, ParseResult parseResult) {
setExpr((Expression) exprs[0]);
this.WORLD = matchedPattern == 2;
this.LESSER = matchedPattern == 0;
@@ -52,21 +51,17 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean kleenean
return true;
}
- @SuppressWarnings("NullableProblems")
@Override
protected Object[] get(Event event, Bound[] bounds) {
- return get(bounds, new Getter<>() {
- @Override
- public Object get(Bound bound) {
- if (WORLD) {
- return bound.getWorld();
- } else {
- return switch (parse) {
- case 0 -> LESSER ? bound.getLesserX() : bound.getGreaterX();
- case 1 -> LESSER ? bound.getLesserY() : bound.getGreaterY();
- default -> LESSER ? bound.getLesserZ() : bound.getGreaterZ();
- };
- }
+ return get(bounds, bound -> {
+ if (WORLD) {
+ return bound.getWorld();
+ } else {
+ return switch (parse) {
+ case 0 -> LESSER ? bound.getLesserX() : bound.getGreaterX();
+ case 1 -> LESSER ? bound.getLesserY() : bound.getGreaterY();
+ default -> LESSER ? bound.getLesserZ() : bound.getGreaterZ();
+ };
}
});
}
@@ -80,7 +75,6 @@ public Object get(Bound bound) {
}
}
- @SuppressWarnings("NullableProblems")
@Override
public Class>[] acceptChange(ChangeMode mode) {
if (!WORLD && (mode == ChangeMode.SET || mode == ChangeMode.ADD || mode == ChangeMode.REMOVE)) {
@@ -89,7 +83,6 @@ public Class>[] acceptChange(ChangeMode mode) {
return null;
}
- @SuppressWarnings("NullableProblems")
@Override
public void change(Event e, Object[] delta, ChangeMode mode) {
BoundConfig boundConfig = SkBee.getPlugin().getBoundConfig();
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/fishing/conditions/CondFishHookInOpenWater.java b/src/main/java/com/shanebeestudios/skbee/elements/fishing/conditions/CondFishHookInOpenWater.java
index b92701da7..5b1bf7026 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/fishing/conditions/CondFishHookInOpenWater.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/fishing/conditions/CondFishHookInOpenWater.java
@@ -5,20 +5,24 @@
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
+import com.shanebeestudios.skbee.api.util.Util;
import org.bukkit.entity.Entity;
import org.bukkit.entity.FishHook;
import org.jetbrains.annotations.NotNull;
@Name("Fish Hook - In Open Water")
@Description({"Check if the fish hook is in open water.",
- "Open water is defined by a 5x4x5 area of water, air and lily pads.",
- "If in open water, treasure items may be caught."})
+ "Open water is defined by a 5x4x5 area of water, air and lily pads.",
+ "If in open water, treasure items may be caught.",
+ "Removed if running Skript 2.10+ (now included in Skript)."})
@Examples("if fish hook is in open water:")
@Since("2.8.0")
public class CondFishHookInOpenWater extends PropertyCondition {
static {
- register(CondFishHookInOpenWater.class, "in open water", "entities");
+ if (!Util.IS_RUNNING_SKRIPT_2_10) {
+ register(CondFishHookInOpenWater.class, "in open water", "entities");
+ }
}
@Override
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/fishing/expressions/ExprFishHookWaitTime.java b/src/main/java/com/shanebeestudios/skbee/elements/fishing/expressions/ExprFishHookWaitTime.java
index 853f56196..4408afae3 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/fishing/expressions/ExprFishHookWaitTime.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/fishing/expressions/ExprFishHookWaitTime.java
@@ -19,13 +19,13 @@
@Name("Fish Hook - Wait time")
@Description({"Represents the min/max wait time for a fish hook to catch a fish.",
- "\nNOTE: this is before applying lure.",
- "\nNOTE: min wait time must be less than max wait time. Both must be greater than 0.",
- "\nDefaults: min = 100 ticks (5 seconds), max = 600 ticks (30 seconds)."})
+ "\nNOTE: this is before applying lure.",
+ "\nNOTE: min wait time must be less than max wait time. Both must be greater than 0.",
+ "\nDefaults: min = 100 ticks (5 seconds), max = 600 ticks (30 seconds)."})
@Examples({"on fish:",
- "\tif fish state = fishing:",
- "\t\tset min wait time of fish hook to 1 second",
- "\t\tset max wait time of fish hook to 2 seconds"})
+ "\tif fish state = fishing:",
+ "\t\tset min wait time of fish hook to 1 second",
+ "\t\tset max wait time of fish hook to 2 seconds"})
@Since("2.8.0")
public class ExprFishHookWaitTime extends SimplePropertyExpression {
@@ -35,7 +35,7 @@ public class ExprFishHookWaitTime extends SimplePropertyExpression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
setExpr((Expression extends Entity>) exprs[0]);
@@ -47,12 +47,11 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
public @Nullable Timespan convert(Entity entity) {
if (entity instanceof FishHook fishHook) {
int wait = this.max ? fishHook.getMaxWaitTime() : fishHook.getMinWaitTime();
- return Timespan.fromTicks(wait);
+ return new Timespan(Timespan.TimePeriod.TICK, wait);
}
return null;
}
- @SuppressWarnings("NullableProblems")
@Override
public @Nullable Class>[] acceptChange(ChangeMode mode) {
return switch (mode) {
@@ -61,10 +60,9 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
};
}
- @SuppressWarnings({"NullableProblems", "ConstantValue"})
@Override
public void change(Event event, @Nullable Object[] delta, ChangeMode mode) {
- int changeValue = delta != null && delta[0] != null ? (int) ((Timespan) delta[0]).getTicks() : 0;
+ int changeValue = delta != null && delta[0] != null ? (int) ((Timespan) delta[0]).getAs(Timespan.TimePeriod.TICK) : 0;
for (Entity entity : getExpr().getArray(event)) {
if (entity instanceof FishHook fishHook) {
int value = this.max ? fishHook.getMaxWaitTime() : fishHook.getMinWaitTime();
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/gameevent/events/EvtGameEvents.java b/src/main/java/com/shanebeestudios/skbee/elements/gameevent/events/EvtGameEvents.java
index abd2d5bea..646286c37 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/gameevent/events/EvtGameEvents.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/gameevent/events/EvtGameEvents.java
@@ -5,7 +5,6 @@
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.registrations.EventValues;
-import ch.njol.skript.util.Getter;
import org.bukkit.GameEvent;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
@@ -15,90 +14,59 @@
import org.bukkit.event.world.GenericGameEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.skriptlang.skript.lang.converter.Converter;
@SuppressWarnings("unused")
public class EvtGameEvents extends SkriptEvent {
static {
Skript.registerEvent("Generic Game Event", EvtGameEvents.class, GenericGameEvent.class,
- "[generic] game[ ]event [%-gameevent%]")
- .description("Called when a Minecraft game event is fired. These events are provided directly by Minecraft.",
- "NOTE: Cancelling this event will not cancel the action, only cancel broadcasting event to blocks.",
- "Requires MC 1.17+")
- .examples("on game event splash:",
- "\tset {_e} to event-entity",
- "\tif {_e} is a player:",
- "\t\tpush {_e} up with speed 0.5")
- .since("1.14.0");
+ "[generic] game[ ]event [%-gameevent%]")
+ .description("Called when a Minecraft game event is fired. These events are provided directly by Minecraft.",
+ "NOTE: Cancelling this event will not cancel the action, only cancel broadcasting event to blocks.",
+ "Requires MC 1.17+")
+ .examples("on game event splash:",
+ "\tset {_e} to event-entity",
+ "\tif {_e} is a player:",
+ "\t\tpush {_e} up with speed 0.5")
+ .since("1.14.0");
Skript.registerEvent("Block Receive Game Event", EvtGameEvents.class, BlockReceiveGameEvent.class,
- "block receive game[ ]event [%-gameevent%]")
- .description("Called when a block receives a Minecraft game event.",
- "As of now the only block that receives game events are sculk shrieker, sculk sensor, and calibrated sculk sensor.",
- "Requires MC 1.17+")
- .examples("on block receive game event:",
- "\tset {_e} to event-entity",
- "\tif {_e} is a player:",
- "\t\tif event-block is set:",
- "\t\t\tdamage {_e} by 0.5")
- .since("1.14.0");
+ "block receive game[ ]event [%-gameevent%]")
+ .description("Called when a block receives a Minecraft game event.",
+ "As of now the only block that receives game events are sculk shrieker, sculk sensor, and calibrated sculk sensor.",
+ "Requires MC 1.17+")
+ .examples("on block receive game event:",
+ "\tset {_e} to event-entity",
+ "\tif {_e} is a player:",
+ "\t\tif event-block is set:",
+ "\t\t\tdamage {_e} by 0.5")
+ .since("1.14.0");
- EventValues.registerEventValue(GenericGameEvent.class, Entity.class, new Getter<>() {
+ EventValues.registerEventValue(GenericGameEvent.class, Entity.class, new Converter<>() {
@Nullable
@Override
- public Entity get(GenericGameEvent event) {
+ public Entity convert(GenericGameEvent event) {
return event.getEntity();
}
- }, 0);
+ }, EventValues.TIME_NOW);
- EventValues.registerEventValue(GenericGameEvent.class, GameEvent.class, new Getter<>() {
- @Override
- public GameEvent get(GenericGameEvent event) {
- return event.getEvent();
- }
- }, 0);
-
- EventValues.registerEventValue(GenericGameEvent.class, Location.class, new Getter<>() {
- @Override
- public Location get(GenericGameEvent event) {
- return event.getLocation();
- }
- }, 0);
-
- EventValues.registerEventValue(GenericGameEvent.class, Player.class, new Getter<>() {
- @Override
- public @Nullable Player get(GenericGameEvent event) {
- if (event.getEntity() instanceof Player player) return player;
- return null;
- }
- }, 0);
-
- EventValues.registerEventValue(BlockReceiveGameEvent.class, Entity.class, new Getter<>() {
- @Nullable
- @Override
- public Entity get(BlockReceiveGameEvent event) {
- return event.getEntity();
- }
- }, 0);
-
- EventValues.registerEventValue(BlockReceiveGameEvent.class, GameEvent.class, new Getter<>() {
- @Override
- public GameEvent get(BlockReceiveGameEvent event) {
- return event.getEvent();
- }
- }, 0);
-
- EventValues.registerEventValue(BlockReceiveGameEvent.class, Player.class, new Getter<>() {
- @Override
- public @Nullable Player get(BlockReceiveGameEvent event) {
- if (event.getEntity() instanceof Player player) return player;
- return null;
- }
- }, 0);
+ EventValues.registerEventValue(GenericGameEvent.class, GameEvent.class, GenericGameEvent::getEvent, EventValues.TIME_NOW);
+ EventValues.registerEventValue(GenericGameEvent.class, Location.class, GenericGameEvent::getLocation, EventValues.TIME_NOW);
+ EventValues.registerEventValue(GenericGameEvent.class, Player.class, event -> {
+ if (event.getEntity() instanceof Player player) return player;
+ return null;
+ }, EventValues.TIME_NOW);
+ EventValues.registerEventValue(BlockReceiveGameEvent.class, Entity.class, BlockReceiveGameEvent::getEntity, EventValues.TIME_NOW);
+ EventValues.registerEventValue(BlockReceiveGameEvent.class, GameEvent.class, BlockReceiveGameEvent::getEvent, EventValues.TIME_NOW);
+ EventValues.registerEventValue(BlockReceiveGameEvent.class, Player.class, event -> {
+ if (event.getEntity() instanceof Player player) return player;
+ return null;
+ }, EventValues.TIME_NOW);
}
private Literal gameEvents;
- @SuppressWarnings({"NullableProblems", "unchecked"})
+ @SuppressWarnings("unchecked")
@Override
public boolean init(Literal>[] args, int matchedPattern, ParseResult parseResult) {
if (args[0] != null) {
@@ -107,7 +75,6 @@ public boolean init(Literal>[] args, int matchedPattern, ParseResult parseResu
return true;
}
- @SuppressWarnings("NullableProblems")
@Override
public boolean check(Event event) {
if (event instanceof GenericGameEvent) {
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/generator/structure/StrucChunkGen.java b/src/main/java/com/shanebeestudios/skbee/elements/generator/structure/StrucChunkGen.java
index 84688b983..c47e99900 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/generator/structure/StrucChunkGen.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/generator/structure/StrucChunkGen.java
@@ -29,76 +29,76 @@
@Name("ChunkGenerator - Register Generator")
@Description({"Register a chunk generator to manipulate the world layout to your liking.",
- "ENTRIES:",
- "(These are all optional, and will default to false)",
- "`vanilla decor` = Whether Minecraft will decorate the surface based on biomes.",
- "`vanilla caves` = Whether Minecraft will carve caves.",
- "`vanilla structures` = Whether Minecraft will generate structures based on biomes.",
- "`vanilla mobs` = Whether Minecraft will spawn mobs based on biomes.",
- "SECTIONS:",
- "(These are all optional, but some do rely on others. `height gen` and `block pop` require `chunk gen`)",
- "`biome gen` = Generate the biomes to be placed in the world.",
- "`chunk gen` = Generate your surface layer of your world.",
- "`height gen` = Tell Minecraft where the highest block in a chunk is for generating structures.",
- "`block pop` = Used to decorate after initial surface is generated (Structures can be placed during this stage).",
- "NOTES:",
- "- `world-creator` needs to be enabled in the config",
- "- Please see the [**Chunk Generator**](https://github.com/ShaneBeee/SkBee/wiki/Chunk-Generator) wiki for further details."})
+ "ENTRIES:",
+ "(These are all optional, and will default to false)",
+ "`vanilla decor` = Whether Minecraft will decorate the surface based on biomes.",
+ "`vanilla caves` = Whether Minecraft will carve caves.",
+ "`vanilla structures` = Whether Minecraft will generate structures based on biomes.",
+ "`vanilla mobs` = Whether Minecraft will spawn mobs based on biomes.",
+ "SECTIONS:",
+ "(These are all optional, but some do rely on others. `height gen` and `block pop` require `chunk gen`)",
+ "`biome gen` = Generate the biomes to be placed in the world.",
+ "`chunk gen` = Generate your surface layer of your world.",
+ "`height gen` = Tell Minecraft where the highest block in a chunk is for generating structures.",
+ "`block pop` = Used to decorate after initial surface is generated (Structures can be placed during this stage).",
+ "NOTES:",
+ "- `world-creator` needs to be enabled in the config",
+ "- Please see the [**Chunk Generator**](https://github.com/ShaneBeee/SkBee/wiki/Chunk-Generator) wiki for further details."})
@Examples({"register chunk generator with id \"mars\":",
- "\tvanilla decor: false",
- "\tvanilla caves: false",
- "\tvanilla structures: false",
- "\tvanilla mobs: false",
- "\tchunk gen:",
- "\t\tloop 16 times:",
- "\t\t\tloop 16 times:",
- "\t\t\t\tset {_x} to (loop-number-1) - 1",
- "\t\t\t\tset {_z} to (loop-number-2) - 1",
- "",
- "\t\t\t\t# This is just an expression I created with reflect to give you an idea how it can work",
- "\t\t\t\tset {_y} to biome noise at vector({_x} + (chunkdata chunk x * 16), 1, {_z} + (chunkdata chunk z * 16))",
- "\t\t\t\t# Fill blocks from 0 to y level with concrete",
- "\t\t\t\tset chunkdata blocks within vector({_x}, 0, {_z}) and vector({_x}, {_y}, {_z}) to red_concrete[]",
- "\t\t\t\t# Set the surface layer to concrete powder",
- "\t\t\t\tset chunkdata block at vector({_x}, {_y}, {_z}) to red_concrete_powder[]",
- "",
- "\tbiome gen:",
- "\t\t# Set our biome to something mars like",
- "\t\tset chunkdata biome to crimson forest"})
+ "\tvanilla decor: false",
+ "\tvanilla caves: false",
+ "\tvanilla structures: false",
+ "\tvanilla mobs: false",
+ "\tchunk gen:",
+ "\t\tloop 16 times:",
+ "\t\t\tloop 16 times:",
+ "\t\t\t\tset {_x} to (loop-number-1) - 1",
+ "\t\t\t\tset {_z} to (loop-number-2) - 1",
+ "",
+ "\t\t\t\t# This is just an expression I created with reflect to give you an idea how it can work",
+ "\t\t\t\tset {_y} to biome noise at vector({_x} + (chunkdata chunk x * 16), 1, {_z} + (chunkdata chunk z * 16))",
+ "\t\t\t\t# Fill blocks from 0 to y level with concrete",
+ "\t\t\t\tset chunkdata blocks within vector({_x}, 0, {_z}) and vector({_x}, {_y}, {_z}) to red_concrete[]",
+ "\t\t\t\t# Set the surface layer to concrete powder",
+ "\t\t\t\tset chunkdata block at vector({_x}, {_y}, {_z}) to red_concrete_powder[]",
+ "",
+ "\tbiome gen:",
+ "\t\t# Set our biome to something mars like",
+ "\t\tset chunkdata biome to crimson forest"})
@Since("3.5.0")
public class StrucChunkGen extends Structure {
static {
EntryValidator validator = EntryValidator.builder()
- .addEntryData(new LiteralEntryData<>("vanilla decor", false, true, Boolean.class))
- .addEntryData(new LiteralEntryData<>("vanilla caves", false, true, Boolean.class))
- .addEntryData(new LiteralEntryData<>("vanilla structures", false, true, Boolean.class))
- .addEntryData(new LiteralEntryData<>("vanilla mobs", false, true, Boolean.class))
- .addSection("chunk gen", true)
- .addSection("biome gen", true)
- .addSection("height gen", true)
- .addSection("block pop", true)
- .build();
+ .addEntryData(new LiteralEntryData<>("vanilla decor", false, true, Boolean.class))
+ .addEntryData(new LiteralEntryData<>("vanilla caves", false, true, Boolean.class))
+ .addEntryData(new LiteralEntryData<>("vanilla structures", false, true, Boolean.class))
+ .addEntryData(new LiteralEntryData<>("vanilla mobs", false, true, Boolean.class))
+ .addSection("chunk gen", true)
+ .addSection("biome gen", true)
+ .addSection("height gen", true)
+ .addSection("block pop", true)
+ .build();
Skript.registerStructure(StrucChunkGen.class, validator, "register chunk generator with id %string%");
}
private Literal id;
+ private EntryContainer entryContainer;
- @SuppressWarnings({"NullableProblems", "unchecked"})
+ @SuppressWarnings("unchecked")
@Override
public boolean init(Literal>[] args, int matchedPattern, ParseResult parseResult, EntryContainer entryContainer) {
this.id = (Literal) args[0];
+ this.entryContainer = entryContainer;
return true;
}
@Override
public boolean load() {
- EntryContainer entryContainer = getEntryContainer();
-
- SectionNode chunkNode = entryContainer.getOptional("chunk gen", SectionNode.class, false);
- SectionNode biomeNode = entryContainer.getOptional("biome gen", SectionNode.class, false);
- SectionNode heightNode = entryContainer.getOptional("height gen", SectionNode.class, false);
- SectionNode blockNode = entryContainer.getOptional("block pop", SectionNode.class, false);
+ SectionNode chunkNode = this.entryContainer.getOptional("chunk gen", SectionNode.class, false);
+ SectionNode biomeNode = this.entryContainer.getOptional("biome gen", SectionNode.class, false);
+ SectionNode heightNode = this.entryContainer.getOptional("height gen", SectionNode.class, false);
+ SectionNode blockNode = this.entryContainer.getOptional("block pop", SectionNode.class, false);
Script currentScript = getParser().getCurrentScript();
ChunkGen chunkGen = ChunkGenManager.registerOrGetGenerator(this.id.getSingle(), chunkNode != null, biomeNode != null);
@@ -106,13 +106,13 @@ public boolean load() {
if (chunkNode != null) {
ChunkGenerator chunkGenerator = chunkGen.getChunkGenerator();
if (chunkGenerator != null) {
- boolean vanillaDecor = Boolean.TRUE.equals(entryContainer.getOptional("vanilla decor", Boolean.class, true));
+ boolean vanillaDecor = Boolean.TRUE.equals(this.entryContainer.getOptional("vanilla decor", Boolean.class, true));
chunkGenerator.setVanillaDecor(vanillaDecor);
- boolean vanillaCaves = Boolean.TRUE.equals(entryContainer.getOptional("vanilla caves", Boolean.class, true));
+ boolean vanillaCaves = Boolean.TRUE.equals(this.entryContainer.getOptional("vanilla caves", Boolean.class, true));
chunkGenerator.setVanillaCaves(vanillaCaves);
- boolean vanillaStructures = Boolean.TRUE.equals(entryContainer.getOptional("vanilla structures", Boolean.class, true));
+ boolean vanillaStructures = Boolean.TRUE.equals(this.entryContainer.getOptional("vanilla structures", Boolean.class, true));
chunkGenerator.setVanillaStructures(vanillaStructures);
- boolean vanillaMobs = Boolean.TRUE.equals(entryContainer.getOptional("vanilla mobs", Boolean.class, true));
+ boolean vanillaMobs = Boolean.TRUE.equals(this.entryContainer.getOptional("vanilla mobs", Boolean.class, true));
chunkGenerator.setVanillaMobs(vanillaMobs);
getParser().setCurrentEvent("ChunkGenSection", ChunkGenEvent.class);
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/generator/type/GenEventValues.java b/src/main/java/com/shanebeestudios/skbee/elements/generator/type/GenEventValues.java
index ed238d6f8..fc460c2f7 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/generator/type/GenEventValues.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/generator/type/GenEventValues.java
@@ -1,28 +1,15 @@
package com.shanebeestudios.skbee.elements.generator.type;
import ch.njol.skript.registrations.EventValues;
-import ch.njol.skript.util.Getter;
import com.shanebeestudios.skbee.api.generator.event.BiomeGenEvent;
import com.shanebeestudios.skbee.api.generator.event.HeightGenEvent;
import org.bukkit.Location;
-import org.jetbrains.annotations.Nullable;
public class GenEventValues {
static {
- EventValues.registerEventValue(BiomeGenEvent.class, Location.class, new Getter<>() {
- @Override
- public Location get(BiomeGenEvent event) {
- return event.getLocation();
- }
- }, EventValues.TIME_NOW);
-
- EventValues.registerEventValue(HeightGenEvent.class, Location.class, new Getter<>() {
- @Override
- public @Nullable Location get(HeightGenEvent event) {
- return event.getLocation();
- }
- }, EventValues.TIME_NOW);
+ EventValues.registerEventValue(BiomeGenEvent.class, Location.class, BiomeGenEvent::getLocation, EventValues.TIME_NOW);
+ EventValues.registerEventValue(HeightGenEvent.class, Location.class, HeightGenEvent::getLocation, EventValues.TIME_NOW);
}
}
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/itemcomponent/sections/SecFoodComponent.java b/src/main/java/com/shanebeestudios/skbee/elements/itemcomponent/sections/SecFoodComponent.java
index 4f3b6d2c5..4dd1ace57 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/itemcomponent/sections/SecFoodComponent.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/itemcomponent/sections/SecFoodComponent.java
@@ -180,7 +180,7 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
food.setSaturation(saturation);
food.setCanAlwaysEat(canAlwaysEat);
if (HAS_EAT_SECONDS && eatTime != null) {
- setEatSeconds(food, (float) eatTime.getTicks() / 20);
+ setEatSeconds(food, (float) eatTime.getAs(Timespan.TimePeriod.TICK) / 20);
}
if (HAS_CONVERT && usingConvertsTo != null) {
setUsingConverts(food, usingConvertsTo);
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprBlankNBTCompound.java b/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprBlankNBTCompound.java
index b60640e93..e868a90e8 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprBlankNBTCompound.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprBlankNBTCompound.java
@@ -19,22 +19,21 @@
@Name("NBT - Empty Compound")
@Description("Returns an empty/new NBT compound.")
@Examples({"set {_n} to blank nbt compound",
- "set tag \"points\" of {_n} to 10"})
+ "set tag \"points\" of {_n} to 10"})
@Since("2.8.0")
public class ExprBlankNBTCompound extends SimpleExpression {
static {
Skript.registerExpression(ExprBlankNBTCompound.class, NBTCompound.class, ExpressionType.SIMPLE,
- "[a[n]] (blank|empty|new) nbt compound");
+ "[a[n]] (blank|empty|new) nbt compound");
}
- @SuppressWarnings("NullableProblems")
@Override
public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
return true;
}
- @SuppressWarnings("NullableProblems")
+ @SuppressWarnings("deprecation")
@Override
protected @Nullable NBTCompound[] get(Event event) {
return new NBTCompound[]{new NBTContainer()};
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprNbtCompound.java b/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprNbtCompound.java
index 7fd971cb1..5d815cb25 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprNbtCompound.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/nbt/expressions/ExprNbtCompound.java
@@ -101,6 +101,7 @@ public boolean init(Expression> @NotNull [] exprs, int matchedPattern, @NotNul
return LiteralUtils.canInitSafely(expr);
}
+ @SuppressWarnings("deprecation")
@Override
protected NBTCompound @NotNull [] get(@NotNull Event e, Object @NotNull [] source) {
return get(source, object -> {
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/nbt/types/SkriptTypes.java b/src/main/java/com/shanebeestudios/skbee/elements/nbt/types/SkriptTypes.java
index c657bdd6a..25d63c1dc 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/nbt/types/SkriptTypes.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/nbt/types/SkriptTypes.java
@@ -18,7 +18,6 @@
import java.io.StreamCorruptedException;
-@SuppressWarnings({"unused", "NullableProblems"})
public class SkriptTypes {
public static final Changer NBT_COMPOUND_CHANGER = new Changer<>() {
@@ -52,105 +51,107 @@ public void change(NBTCompound[] what, @Nullable Object[] delta, ChangeMode mode
static {
Classes.registerClass(new ClassInfo<>(NBTCustomType.class, "nbttype")
- .user("nbt ?types?")
- .name("NBT - Tag Type")
- .description("Represents a type of NBT tag.",
- "You can read more about NBT types:",
- "\nMcWiki [**NBT Data Types**](https://minecraft.wiki/w/NBT_format#Data_types)",
- "\nSkBee Wiki [**NBT Data Types**](https://github.com/ShaneBeee/SkBee/wiki/NBT-Intro#datatypes-in-nbt)")
- .usage(NBTCustomType.getNames())
- .examples("set byte tag \"points\" of {_nbt} to 1",
- "set compound tag \"tool\" of {_nbt} to nbt compound of player's tool")
- .since("1.10.0")
- .parser(new Parser() {
-
- @Nullable
- @Override
- public NBTCustomType parse(String s, ParseContext context) {
- return NBTCustomType.fromName(s);
- }
+ .user("nbt ?types?")
+ .name("NBT - Tag Type")
+ .description("Represents a type of NBT tag.",
+ "You can read more about NBT types:",
+ "\nMcWiki [**NBT Data Types**](https://minecraft.wiki/w/NBT_format#Data_types)",
+ "\nSkBee Wiki [**NBT Data Types**](https://github.com/ShaneBeee/SkBee/wiki/NBT-Intro#datatypes-in-nbt)")
+ .usage(NBTCustomType.getNames())
+ .examples("set byte tag \"points\" of {_nbt} to 1",
+ "set compound tag \"tool\" of {_nbt} to nbt compound of player's tool")
+ .since("1.10.0")
+ .parser(new Parser() {
+
+ @Nullable
+ @Override
+ public NBTCustomType parse(String s, ParseContext context) {
+ return NBTCustomType.fromName(s);
+ }
- @Override
- public String toString(NBTCustomType nbtCustomType, int i) {
- return nbtCustomType.getName();
- }
+ @Override
+ public String toString(NBTCustomType nbtCustomType, int i) {
+ return nbtCustomType.getName();
+ }
- @Override
- public String toVariableNameString(NBTCustomType nbtCustomType) {
- return toString(nbtCustomType, 0);
- }
+ @Override
+ public String toVariableNameString(NBTCustomType nbtCustomType) {
+ return toString(nbtCustomType, 0);
+ }
- public String getVariableNamePattern() {
- return "\\S";
- }
- }));
+ public String getVariableNamePattern() {
+ return "\\S";
+ }
+ }));
Classes.registerClass(new ClassInfo<>(NBTCompound.class, "nbtcompound")
- .user("nbt ?compound")
- .name("NBT - Compound")
- .description("Represents the NBT compound of an entity/block/item/file/string.",
- "NBT compounds can be merged by adding together, see examples.")
- .usage("{id:\"minecraft:netherite_axe\",tag:{Damage:0,Enchantments:[{id:\"minecraft:unbreaking\",lvl:2s}]},Count:1b}")
- .examples("set {_a} to nbt compound of player",
- "set {_nbt} to nbt compound of last spawned entity",
- "set {_n} to nbt compound from \"{Invisible:1b}\"",
- "add {_n} to nbt of target entity")
- .since("1.6.0")
- .parser(new Parser<>() {
-
- @Override
- public boolean canParse(@NotNull ParseContext context) {
- return false;
- }
+ .user("nbt ?compound")
+ .name("NBT - Compound")
+ .description("Represents the NBT compound of an entity/block/item/file/string.",
+ "NBT compounds can be merged by adding together, see examples.")
+ .usage("{id:\"minecraft:netherite_axe\",tag:{Damage:0,Enchantments:[{id:\"minecraft:unbreaking\",lvl:2s}]},Count:1b}")
+ .examples("set {_a} to nbt compound of player",
+ "set {_nbt} to nbt compound of last spawned entity",
+ "set {_n} to nbt compound from \"{Invisible:1b}\"",
+ "add {_n} to nbt of target entity")
+ .since("1.6.0")
+ .parser(new Parser<>() {
+
+ @Override
+ public boolean canParse(@NotNull ParseContext context) {
+ return false;
+ }
- @Override
- public String toString(@NotNull NBTCompound nbt, int flags) {
- return getNBTString(nbt);
- }
+ @Override
+ public String toString(@NotNull NBTCompound nbt, int flags) {
+ return getNBTString(nbt);
+ }
- @Override
- public String toVariableNameString(@NotNull NBTCompound nbt) {
- return "nbt:" + toString(nbt, 0);
- }
- })
- .serializer(new Serializer<>() {
- @Override
- public @NotNull Fields serialize(@NotNull NBTCompound nbt) {
- Fields fields = new Fields();
- fields.putObject("nbt", getNBTString(nbt));
- return fields;
- }
+ @Override
+ public String toVariableNameString(@NotNull NBTCompound nbt) {
+ return "nbt:" + toString(nbt, 0);
+ }
+ })
+ .serializer(new Serializer<>() {
+ @Override
+ public @NotNull Fields serialize(@NotNull NBTCompound nbt) {
+ Fields fields = new Fields();
+ fields.putObject("nbt", getNBTString(nbt));
+ return fields;
+ }
- @Override
- public void deserialize(@NotNull NBTCompound o, @NotNull Fields f) {
- assert false;
- }
+ @Override
+ public void deserialize(@NotNull NBTCompound o, @NotNull Fields f) {
+ assert false;
+ }
- @Override
- protected NBTCompound deserialize(@NotNull Fields fields) throws StreamCorruptedException {
- String nbt = fields.getObject("nbt", String.class);
- if (nbt == null) {
- throw new StreamCorruptedException("NBT string is null");
- }
- try {
- return new NBTContainer(nbt);
- } catch (Exception ex) {
- throw new StreamCorruptedException("Invalid nbt data: " + nbt);
- }
+ @SuppressWarnings("deprecation")
+ @Override
+ protected NBTCompound deserialize(@NotNull Fields fields) throws StreamCorruptedException {
+ String nbt = fields.getObject("nbt", String.class);
+ if (nbt == null) {
+ throw new StreamCorruptedException("NBT string is null");
}
-
- @Override
- public boolean mustSyncDeserialization() {
- return true;
+ try {
+ return new NBTContainer(nbt);
+ } catch (Exception ex) {
+ throw new StreamCorruptedException("Invalid nbt data: " + nbt);
}
+ }
- @Override
- protected boolean canBeInstantiated() {
- return false;
- }
- })
- .changer(NBT_COMPOUND_CHANGER));
+ @Override
+ public boolean mustSyncDeserialization() {
+ return true;
+ }
+
+ @Override
+ protected boolean canBeInstantiated() {
+ return false;
+ }
+ })
+ .changer(NBT_COMPOUND_CHANGER));
}
+ @SuppressWarnings("deprecation")
private static final String NBT_EMPTY = new NBTContainer("{}").toString();
private static String getNBTString(@NotNull NBTCompound nbtCompound) {
diff --git a/src/main/java/com/shanebeestudios/skbee/elements/other/conditions/CondBlockCanRandomTick.java b/src/main/java/com/shanebeestudios/skbee/elements/other/conditions/CondBlockCanRandomTick.java
index 55444df65..094a75351 100644
--- a/src/main/java/com/shanebeestudios/skbee/elements/other/conditions/CondBlockCanRandomTick.java
+++ b/src/main/java/com/shanebeestudios/skbee/elements/other/conditions/CondBlockCanRandomTick.java
@@ -9,7 +9,6 @@
import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
-import ch.njol.util.Checker;
import ch.njol.util.Kleenean;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -20,17 +19,17 @@
@Name("Block Can Random Tick")
@Description({"Gets if this block is ticked randomly in the world. The blocks current state may change this value.",
- "Requires Paper 1.19+"})
+ "Requires Paper 1.19+"})
@Examples({"on right click:",
- "\tif clicked block can random tick:",
- "\t\trandom tick clicked block"})
+ "\tif clicked block can random tick:",
+ "\t\trandom tick clicked block"})
@Since("3.0.0")
public class CondBlockCanRandomTick extends Condition {
static {
Skript.registerCondition(CondBlockCanRandomTick.class,
- "%blocks/blockdatas/itemtypes% can random[ly] tick",
- "%blocks/blockdatas/itemtypes% (can't|cannot) random[ly] tick");
+ "%blocks/blockdatas/itemtypes% can random[ly] tick",
+ "%blocks/blockdatas/itemtypes% (can't|cannot) random[ly] tick");
}
private Expression> blocks;
@@ -49,7 +48,7 @@ public boolean init(Expression>[] exprs, int matchedPattern, Kleenean isDelaye
@Override
public boolean check(@NotNull Event event) {
- return this.blocks.check(event, (Checker