From 59bd81884a359bfb50d55eb51e3c2c3bf3d09674 Mon Sep 17 00:00:00 2001 From: James Peters Date: Sat, 20 May 2023 12:06:07 +0100 Subject: [PATCH] Add support for 1.19.3 and 1.19.4 --- .gitignore | 1 + BuildTools/build-1.18+.sh | 2 +- ChestsPlusPlus_1_19_R2/pom.xml | 104 ++++++++++++++++++ .../minecraft/chests/v1_19_R2/Crafting.java | 102 +++++++++++++++++ .../chests/v1_19_R2/NMSProviderImpl.java | 49 +++++++++ ChestsPlusPlus_1_19_R3/pom.xml | 104 ++++++++++++++++++ .../minecraft/chests/v1_19_R3/Crafting.java | 103 +++++++++++++++++ .../chests/v1_19_R3/NMSProviderImpl.java | 49 +++++++++ ChestsPlusPlus_Main/pom.xml | 20 +++- .../interfaces/VirtualCraftingHolder.java | 2 +- .../minecraft/chests/menus/PartyMenu.java | 4 +- .../minecraft/chests/menus/TextInputUI.java | 10 +- .../src/main/resources/lang/en_GB.properties | 2 +- pom.xml | 2 + 14 files changed, 545 insertions(+), 9 deletions(-) create mode 100644 ChestsPlusPlus_1_19_R2/pom.xml create mode 100644 ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/Crafting.java create mode 100644 ChestsPlusPlus_1_19_R2/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R2/NMSProviderImpl.java create mode 100644 ChestsPlusPlus_1_19_R3/pom.xml create mode 100644 ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/Crafting.java create mode 100644 ChestsPlusPlus_1_19_R3/src/main/java/com/jamesdpeters/minecraft/chests/v1_19_R3/NMSProviderImpl.java 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 + 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 + 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