diff --git a/.gitignore b/.gitignore
index 67153bc..5a9450a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@ target/
ChestsPlusPlus.iml
*.iml
POEditorImport/src/main/java/com/jamesdpeters/poeditor/POEapi.java
+/BuildTools/
diff --git a/BuildTools/build-1.18+.sh b/BuildTools/build-1.18+.sh
index 4d378f9..56fdf8f 100644
--- a/BuildTools/build-1.18+.sh
+++ b/BuildTools/build-1.18+.sh
@@ -8,7 +8,7 @@ MAVEN_DIR="$HOME/.m2"
SPIGOT="${MAVEN_DIR}/repository/org/spigotmc/spigot"
#Versions
-array=("1.18.1" "1.18.2" "1.19")
+array=("1.18.1" "1.18.2" "1.19" "1.19.3" "1.19.4")
#Download BuildTools jar
curl -s -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
diff --git a/ChestsPlusPlus_1_19_R2/pom.xml b/ChestsPlusPlus_1_19_R2/pom.xml
new file mode 100644
index 0000000..6fdd309
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R2/pom.xml
@@ -0,0 +1,104 @@
+
+
+
+ ChestsPlusPlus-Parent
+ com.jamesdpeters.minecraft.chests
+ 1.0-SNAPSHOT
+ ../pom.xml
+
+
+
+ 1.19.3
+
+
+ 4.0.0
+ jar
+ ChestsPlusPlus_1_19_R2
+ 1.0-SNAPSHOT
+
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus-API
+ 1.0-SNAPSHOT
+
+
+
+ org.spigotmc
+ spigot-api
+ ${minecraft.version}-R0.1-SNAPSHOT
+ provided
+
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus_1_17_R1
+ 1.0-SNAPSHOT
+ compile
+
+
+
+ org.spigotmc
+ spigot
+ ${minecraft.version}-R0.1-SNAPSHOT
+ remapped-mojang
+ provided
+
+
+
+
+
+
+ net.md-5
+ specialsource-maven-plugin
+ 1.2.3
+
+
+ package
+
+ remap
+
+ remap-obf
+
+ org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:txt:maps-mojang
+ true
+ org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-mojang
+ true
+ remapped-obf
+
+
+
+ package
+
+ remap
+
+ remap-spigot
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar
+ org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:csrg:maps-spigot
+ org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-obf
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 16
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/Crafting.java b/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/Crafting.java
new file mode 100644
index 0000000..c438917
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/Crafting.java
@@ -0,0 +1,102 @@
+package com.jamesdpeters.minecraft.chests.v1_19_R2;
+
+import com.jamesdpeters.minecraft.chests.CraftingProvider;
+import com.jamesdpeters.minecraft.chests.CraftingResult;
+import net.minecraft.core.NonNullList;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.inventory.CraftingContainer;
+import net.minecraft.world.item.crafting.RecipeType;
+import net.minecraft.world.level.Level;
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_19_R2.CraftServer;
+import org.bukkit.craftbukkit.v1_19_R2.CraftWorld;
+import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.InventoryView;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.Recipe;
+
+import java.util.ArrayList;
+
+public class Crafting implements CraftingProvider {
+
+ @Override
+ public CraftingResult craft(World world, ItemStack[] items) {
+ CraftWorld craftWorld = (CraftWorld) world;
+
+ // Setup crafting inventories.
+ CraftingContainer inventoryCrafting = new CraftingContainer(new AbstractContainerMenu(null, -1) {
+ @Override
+ public InventoryView getBukkitView() {
+ return null;
+ }
+
+ @Override
+ public net.minecraft.world.item.ItemStack quickMoveStack(net.minecraft.world.entity.player.Player player, int i) {
+ return null;
+ }
+
+ @Override
+ public boolean stillValid(net.minecraft.world.entity.player.Player player) {
+ return false;
+ }
+
+ }, 3, 3);
+
+ for (int i = 0; i < items.length; i++) {
+ inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
+ }
+
+ var recipe = ((CraftServer) Bukkit.getServer()).getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, inventoryCrafting, craftWorld.getHandle());
+
+ // Generate the resulting ItemStack from the Crafting Matrix
+ net.minecraft.world.item.ItemStack itemStack = net.minecraft.world.item.ItemStack.EMPTY;
+
+ if (recipe.isPresent()) {
+ itemStack = recipe.get().assemble(inventoryCrafting);
+ }
+
+ return createItemCraftResult(CraftItemStack.asBukkitCopy(itemStack), inventoryCrafting, craftWorld.getHandle());
+ }
+
+ @Override
+ public Recipe getRecipe(Player player, World world, ItemStack[] items) {
+ return Bukkit.getCraftingRecipe(items, world);
+ }
+
+ private CraftingResult createItemCraftResult(ItemStack itemStack, CraftingContainer inventoryCrafting, Level worldServer) {
+ CraftServer server = (CraftServer) Bukkit.getServer();
+ NonNullList remainingItems = server.getServer().getRecipeManager().getRemainingItemsFor(RecipeType.CRAFTING, inventoryCrafting, worldServer);
+
+ CraftingResult craftItemResult = new CraftingResult(itemStack, new ItemStack[9], new ArrayList<>());
+
+ // Create resulting matrix and overflow items
+ for (int i = 0; i < remainingItems.size(); ++i) {
+ net.minecraft.world.item.ItemStack itemstack1 = inventoryCrafting.getItem(i);
+ net.minecraft.world.item.ItemStack itemstack2 = (net.minecraft.world.item.ItemStack) remainingItems.get(i);
+
+ if (!itemstack1.isEmpty()) {
+ inventoryCrafting.removeItem(i, 1);
+ itemstack1 = inventoryCrafting.getItem(i);
+ }
+
+ if (!itemstack2.isEmpty()) {
+ if (itemstack1.isEmpty()) {
+ inventoryCrafting.setItem(i, itemstack2);
+ } else if (net.minecraft.world.item.ItemStack.tagMatches(itemstack1, itemstack2) && net.minecraft.world.item.ItemStack.matches(itemstack1, itemstack2)) {
+ itemstack2.grow(itemstack1.getCount());
+ inventoryCrafting.setItem(i, itemstack2);
+ } else {
+ craftItemResult.overflowItems().add(CraftItemStack.asBukkitCopy(itemstack2));
+ }
+ }
+ }
+
+ for (int i = 0; i < inventoryCrafting.getContents().size(); i++) {
+ craftItemResult.setResultMatrix(i, CraftItemStack.asBukkitCopy(inventoryCrafting.getItem(i)));
+ }
+
+ return craftItemResult;
+ }
+}
diff --git a/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/NMSProviderImpl.java b/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/NMSProviderImpl.java
new file mode 100644
index 0000000..b01ad14
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/NMSProviderImpl.java
@@ -0,0 +1,49 @@
+package com.jamesdpeters.minecraft.chests.v1_19_R2;
+
+import com.jamesdpeters.minecraft.chests.ChestOpener;
+import com.jamesdpeters.minecraft.chests.CraftingProvider;
+import com.jamesdpeters.minecraft.chests.EntityEventListener;
+import com.jamesdpeters.minecraft.chests.MaterialChecker;
+import com.jamesdpeters.minecraft.chests.NMSProvider;
+import com.jamesdpeters.minecraft.chests.v1_17_R1.EntityEventListener_1_17;
+import com.jamesdpeters.minecraft.chests.v1_17_R1.MaterialChecker_1_17_R1;
+import org.bukkit.block.Lidded;
+import org.bukkit.entity.ItemFrame;
+
+public class NMSProviderImpl implements NMSProvider {
+
+ @Override
+ public ChestOpener getChestOpener() {
+ return (inventory, container, tileEntityOpener) -> {
+ if(container instanceof Lidded){
+ if(inventory.getViewers().size() > 0){
+ ((Lidded) container).open();
+ } else {
+ ((Lidded) container).close();
+ }
+ }
+ return null;
+ };
+ }
+
+ @Override
+ public MaterialChecker getMaterialChecker() {
+ return new MaterialChecker_1_17_R1();
+ }
+
+ @Override
+ public CraftingProvider getCraftingProvider() {
+ return new Crafting();
+ }
+
+ @Override
+ public EntityEventListener getEntityEventListener() {
+ return new EntityEventListener_1_17();
+ }
+
+ @Override
+ public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
+ itemFrame.setVisible(visible);
+ }
+
+}
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_19_R3/pom.xml b/ChestsPlusPlus_1_19_R3/pom.xml
new file mode 100644
index 0000000..446c223
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R3/pom.xml
@@ -0,0 +1,104 @@
+
+
+
+ ChestsPlusPlus-Parent
+ com.jamesdpeters.minecraft.chests
+ 1.0-SNAPSHOT
+ ../pom.xml
+
+
+
+ 1.19.4
+
+
+ 4.0.0
+ jar
+ ChestsPlusPlus_1_19_R3
+ 1.0-SNAPSHOT
+
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus-API
+ 1.0-SNAPSHOT
+
+
+
+ org.spigotmc
+ spigot-api
+ ${minecraft.version}-R0.1-SNAPSHOT
+ provided
+
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus_1_17_R1
+ 1.0-SNAPSHOT
+ compile
+
+
+
+ org.spigotmc
+ spigot
+ ${minecraft.version}-R0.1-SNAPSHOT
+ remapped-mojang
+ provided
+
+
+
+
+
+
+ net.md-5
+ specialsource-maven-plugin
+ 1.2.3
+
+
+ package
+
+ remap
+
+ remap-obf
+
+ org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:txt:maps-mojang
+ true
+ org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-mojang
+ true
+ remapped-obf
+
+
+
+ package
+
+ remap
+
+ remap-spigot
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar
+ org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:csrg:maps-spigot
+ org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-obf
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 16
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/Crafting.java b/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/Crafting.java
new file mode 100644
index 0000000..03f2924
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/Crafting.java
@@ -0,0 +1,103 @@
+package com.jamesdpeters.minecraft.chests.v1_19_R3;
+
+import com.jamesdpeters.minecraft.chests.CraftingProvider;
+import com.jamesdpeters.minecraft.chests.CraftingResult;
+import net.minecraft.core.NonNullList;
+import net.minecraft.core.RegistryAccess;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.inventory.CraftingContainer;
+import net.minecraft.world.item.crafting.RecipeType;
+import net.minecraft.world.level.Level;
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_19_R3.CraftServer;
+import org.bukkit.craftbukkit.v1_19_R3.CraftWorld;
+import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.InventoryView;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.Recipe;
+
+import java.util.ArrayList;
+
+public class Crafting implements CraftingProvider {
+
+ @Override
+ public CraftingResult craft(World world, ItemStack[] items) {
+ CraftWorld craftWorld = (CraftWorld) world;
+
+ // Setup crafting inventories.
+ CraftingContainer inventoryCrafting = new CraftingContainer(new AbstractContainerMenu(null, -1) {
+ @Override
+ public InventoryView getBukkitView() {
+ return null;
+ }
+
+ @Override
+ public net.minecraft.world.item.ItemStack quickMoveStack(net.minecraft.world.entity.player.Player player, int i) {
+ return null;
+ }
+
+ @Override
+ public boolean stillValid(net.minecraft.world.entity.player.Player player) {
+ return false;
+ }
+
+ }, 3, 3);
+
+ for (int i = 0; i < items.length; i++) {
+ inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
+ }
+
+ var recipe = ((CraftServer) Bukkit.getServer()).getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, inventoryCrafting, craftWorld.getHandle());
+
+ // Generate the resulting ItemStack from the Crafting Matrix
+ net.minecraft.world.item.ItemStack itemStack = net.minecraft.world.item.ItemStack.EMPTY;
+
+ if (recipe.isPresent()) {
+ itemStack = recipe.get().assemble(inventoryCrafting, RegistryAccess.EMPTY);
+ }
+
+ return createItemCraftResult(CraftItemStack.asBukkitCopy(itemStack), inventoryCrafting, craftWorld.getHandle());
+ }
+
+ @Override
+ public Recipe getRecipe(Player player, World world, ItemStack[] items) {
+ return Bukkit.getCraftingRecipe(items, world);
+ }
+
+ private CraftingResult createItemCraftResult(ItemStack itemStack, CraftingContainer inventoryCrafting, Level worldServer) {
+ CraftServer server = (CraftServer) Bukkit.getServer();
+ NonNullList remainingItems = server.getServer().getRecipeManager().getRemainingItemsFor(RecipeType.CRAFTING, inventoryCrafting, worldServer);
+
+ CraftingResult craftItemResult = new CraftingResult(itemStack, new ItemStack[9], new ArrayList<>());
+
+ // Create resulting matrix and overflow items
+ for (int i = 0; i < remainingItems.size(); ++i) {
+ net.minecraft.world.item.ItemStack itemstack1 = inventoryCrafting.getItem(i);
+ net.minecraft.world.item.ItemStack itemstack2 = (net.minecraft.world.item.ItemStack) remainingItems.get(i);
+
+ if (!itemstack1.isEmpty()) {
+ inventoryCrafting.removeItem(i, 1);
+ itemstack1 = inventoryCrafting.getItem(i);
+ }
+
+ if (!itemstack2.isEmpty()) {
+ if (itemstack1.isEmpty()) {
+ inventoryCrafting.setItem(i, itemstack2);
+ } else if (net.minecraft.world.item.ItemStack.tagMatches(itemstack1, itemstack2) && net.minecraft.world.item.ItemStack.matches(itemstack1, itemstack2)) {
+ itemstack2.grow(itemstack1.getCount());
+ inventoryCrafting.setItem(i, itemstack2);
+ } else {
+ craftItemResult.overflowItems().add(CraftItemStack.asBukkitCopy(itemstack2));
+ }
+ }
+ }
+
+ for (int i = 0; i < inventoryCrafting.getContents().size(); i++) {
+ craftItemResult.setResultMatrix(i, CraftItemStack.asBukkitCopy(inventoryCrafting.getItem(i)));
+ }
+
+ return craftItemResult;
+ }
+}
diff --git a/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/NMSProviderImpl.java b/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/NMSProviderImpl.java
new file mode 100644
index 0000000..1f5fe69
--- /dev/null
+++ b/ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/NMSProviderImpl.java
@@ -0,0 +1,49 @@
+package com.jamesdpeters.minecraft.chests.v1_19_R3;
+
+import com.jamesdpeters.minecraft.chests.ChestOpener;
+import com.jamesdpeters.minecraft.chests.CraftingProvider;
+import com.jamesdpeters.minecraft.chests.EntityEventListener;
+import com.jamesdpeters.minecraft.chests.MaterialChecker;
+import com.jamesdpeters.minecraft.chests.NMSProvider;
+import com.jamesdpeters.minecraft.chests.v1_17_R1.EntityEventListener_1_17;
+import com.jamesdpeters.minecraft.chests.v1_17_R1.MaterialChecker_1_17_R1;
+import org.bukkit.block.Lidded;
+import org.bukkit.entity.ItemFrame;
+
+public class NMSProviderImpl implements NMSProvider {
+
+ @Override
+ public ChestOpener getChestOpener() {
+ return (inventory, container, tileEntityOpener) -> {
+ if(container instanceof Lidded){
+ if(inventory.getViewers().size() > 0){
+ ((Lidded) container).open();
+ } else {
+ ((Lidded) container).close();
+ }
+ }
+ return null;
+ };
+ }
+
+ @Override
+ public MaterialChecker getMaterialChecker() {
+ return new MaterialChecker_1_17_R1();
+ }
+
+ @Override
+ public CraftingProvider getCraftingProvider() {
+ return new Crafting();
+ }
+
+ @Override
+ public EntityEventListener getEntityEventListener() {
+ return new EntityEventListener_1_17();
+ }
+
+ @Override
+ public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
+ itemFrame.setVisible(visible);
+ }
+
+}
\ No newline at end of file
diff --git a/ChestsPlusPlus_Main/pom.xml b/ChestsPlusPlus_Main/pom.xml
index 7a72834..9a7ed66 100644
--- a/ChestsPlusPlus_Main/pom.xml
+++ b/ChestsPlusPlus_Main/pom.xml
@@ -6,7 +6,7 @@
com.jamesdpeters.minecraft.chests
ChestsPlusPlus-Master
- 2.7-Release
+ 2.8-Release
16
@@ -90,7 +90,7 @@
net.wesjd
anvilgui
- 1.5.3-SNAPSHOT
+ 1.6.5-SNAPSHOT
@@ -99,6 +99,22 @@
2.2.1
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus_1_19_R3
+ 1.0-SNAPSHOT
+ jar
+ compile
+
+
+
+ com.jamesdpeters.minecraft.chests
+ ChestsPlusPlus_1_19_R2
+ 1.0-SNAPSHOT
+ jar
+ compile
+
+
com.jamesdpeters.minecraft.chests
ChestsPlusPlus_1_19_R1
diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java
index ea7bd34..912ef92 100644
--- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java
+++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/interfaces/VirtualCraftingHolder.java
@@ -188,7 +188,7 @@ public class VirtualCraftingHolder implements InventoryHolder {
int index = recipeChoiceIndex[i];
List choices = null;
- if (index < recipeChoices.length) {
+ if (i < recipeChoices.length) {
var recipeChoice = recipeChoices[i];
choices = recipeChoiceItems.get(recipeChoice);
}
diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/PartyMenu.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/PartyMenu.java
index ebdc1ff..26c97d2 100644
--- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/PartyMenu.java
+++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/PartyMenu.java
@@ -141,10 +141,10 @@ public class PartyMenu implements InventoryProvider {
if (result){
player.sendMessage(ChatColor.GREEN+ Message.PARTY_CREATED.getString(ChatColor.WHITE+partyName+ChatColor.GREEN));
getMenu().open(player);
- return AnvilGUI.Response.close();
+ return AnvilGUI.ResponseAction.close();
} else {
player.sendMessage(ChatColor.RED+Message.PARTY_ALREADY_EXISTS.getString(ChatColor.WHITE+partyName+ChatColor.RED));
- return AnvilGUI.Response.text(Message.ALREADY_EXISTS_ANVIL.getString());
+ return AnvilGUI.ResponseAction.replaceInputText(Message.ALREADY_EXISTS_ANVIL.getString());
}
});
}
diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/TextInputUI.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/TextInputUI.java
index fab0a6a..e52e229 100644
--- a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/TextInputUI.java
+++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/menus/TextInputUI.java
@@ -3,13 +3,19 @@ package com.jamesdpeters.minecraft.chests.menus;
import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
import net.wesjd.anvilgui.AnvilGUI;
import org.bukkit.entity.Player;
+
+import java.util.Collections;
import java.util.function.BiFunction;
public class TextInputUI {
- public static void getInput(Player player, String title, BiFunction responseBiFunction) {
+ public static void getInput(Player player, String title, BiFunction responseBiFunction) {
new AnvilGUI.Builder()
- .onComplete(responseBiFunction)
+ .onClick((slot, stateSnapshot) -> {
+ if (slot == AnvilGUI.Slot.OUTPUT)
+ return Collections.singletonList(responseBiFunction.apply(stateSnapshot.getPlayer(), stateSnapshot.getText()));
+ return Collections.emptyList();
+ })
.text("Enter Name")
.title(title)
.plugin(ChestsPlusPlus.PLUGIN)
diff --git a/ChestsPlusPlus_Main/src/main/resources/lang/en_GB.properties b/ChestsPlusPlus_Main/src/main/resources/lang/en_GB.properties
index 7689217..6308067 100644
--- a/ChestsPlusPlus_Main/src/main/resources/lang/en_GB.properties
+++ b/ChestsPlusPlus_Main/src/main/resources/lang/en_GB.properties
@@ -1,4 +1,4 @@
-# Chests++ Language File (Version 2.6.4-Beta)
+# Chests++ Language File (Version 2.8-Release)
# NOTE: This file gets replaced when the plugin launches! If you want to make modifications create a copy first!
# To create a new language file simply create a copy of this file and rename it to your desired choice for example 'en_US.properties'
# It should be located in the 'lang' folder
diff --git a/pom.xml b/pom.xml
index 34a77d0..b3e5d64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,8 @@
ChestsPlusPlusAPI
+ ChestsPlusPlus_1_19_R3
+ ChestsPlusPlus_1_19_R2
ChestsPlusPlus_1_19_R1
ChestsPlusPlus_1_18_R2
ChestsPlusPlus_1_18_R1