diff --git a/resources/languages/de.yml b/resources/languages/de.yml index 373b334..cbccf15 100644 --- a/resources/languages/de.yml +++ b/resources/languages/de.yml @@ -62,6 +62,7 @@ Help_Player: '&6/brew <%Trunkenheit> [Qualität]&9 Setzt Trunkenheit ( Help_Reload: '&6/brew reload &9Config neuladen' Help_Configname: '&6/brew ItemName &9Zeigt Name für die Config vom Item in der Hand' Help_UnLabel: '&6/brew UnLabel &9Entfernt die genaue Beschriftung des Trankes' +Help_Seal: '&6/brew Seal &9Tränke für den Verkauf versiegeln' Help_Wakeup: '&6/brew Wakeup List &9 Listet alle Aufwachpunkte auf' Help_WakeupAdd: '&6/brew Wakeup Add &9Setzt einen Aufwachpunkt and deiner Position' Help_WakeupCheck: '&6/brew Wakeup Check &9Teleportiert zu allen Aufwachpunkten' diff --git a/resources/languages/en.yml b/resources/languages/en.yml index 0cce397..b163a2a 100644 --- a/resources/languages/en.yml +++ b/resources/languages/en.yml @@ -64,6 +64,7 @@ Help_Reload: '&6/brew reload &9Reload config' Help_Configname: '&6/brew ItemName &9Display name of item in hand for the config' Help_Static: '&6/brew static &9Make Brew static -> No further ageing or distilling' Help_UnLabel: '&6/brew unlabel &9Removes the detailled label of a potion' +Help_Seal: '&6/brew seal &9Seal Brews for selling in shops' Help_Wakeup: '&6/brew wakeup list &9 Lists all wakeup points' Help_WakeupAdd: '&6/brew wakeup add &9Adds a wakeup point at your current position' Help_WakeupCheck: '&6/brew wakeup check &9Teleports to all wakeup points' diff --git a/resources/plugin.yml b/resources/plugin.yml index 782e1fe..0baa71b 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -37,6 +37,7 @@ permissions: brewery.mod: true brewery.cmd.info: true brewery.cmd.infoOther: true + brewery.cmd.seal: true brewery.cmd.player: true brewery.cmd.create: true brewery.cmd.copy: true @@ -60,6 +61,8 @@ permissions: description: Information about your own drunkeness brewery.cmd.infoOther: description: Information about the drunkeness of another Player + brewery.cmd.seal: + description: Open the Brew Sealer by command brewery.cmd.player: description: Set Player-values brewery.cmd.wakeup: diff --git a/src/com/dre/brewery/BSealer.java b/src/com/dre/brewery/BSealer.java index 11860ca..b44b49f 100644 --- a/src/com/dre/brewery/BSealer.java +++ b/src/com/dre/brewery/BSealer.java @@ -9,16 +9,18 @@ import org.bukkit.block.Container; import org.bukkit.block.data.Directional; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.RecipeChoice; -import org.bukkit.inventory.ShapedRecipe; +import org.bukkit.inventory.*; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; import org.bukkit.scheduler.BukkitTask; import org.jetbrains.annotations.NotNull; +import java.util.Iterator; + +/** + * The Sealing Inventory that is being checked for Brews and seals them after a second. + *

Class doesn't load in mc <= 1.12 (Can't find RecipeChoice, BlockData and NamespacedKey) + */ public class BSealer implements InventoryHolder { public static final NamespacedKey TAG_KEY = new NamespacedKey(P.p, "SealingTable"); public static boolean recipeRegistered = false; @@ -27,8 +29,8 @@ public class BSealer implements InventoryHolder { private final Inventory inventory; private final Player player; private short[] slotTime = new short[9]; - ItemStack[] contents = null; - BukkitTask task; + private ItemStack[] contents = null; + private BukkitTask task; public BSealer(Player player) { this.player = player; @@ -91,7 +93,7 @@ public class BSealer implements InventoryHolder { Brew brew = Brew.get(contents[i]); if (brew != null && !brew.isStripped()) { brew.seal(contents[i]); - if (playerValid) { + if (playerValid && P.use1_9) { player.playSound(player.getLocation(), Sound.ITEM_BOTTLE_FILL_DRAGONBREATH, 1, 1.5f + (float) (Math.random() * 0.2)); } } @@ -152,6 +154,14 @@ public class BSealer implements InventoryHolder { public static void unregisterRecipe() { recipeRegistered = false; - P.p.getServer().removeRecipe(new NamespacedKey(P.p, "SealingTable")); + //P.p.getServer().removeRecipe(new NamespacedKey(P.p, "SealingTable")); 1.15 Method + Iterator recipeIterator = P.p.getServer().recipeIterator(); + while (recipeIterator.hasNext()) { + Recipe next = recipeIterator.next(); + if (next instanceof ShapedRecipe && ((ShapedRecipe) next).getKey().equals(TAG_KEY)) { + recipeIterator.remove(); + return; + } + } } } diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java index 570740e..2225367 100644 --- a/src/com/dre/brewery/P.java +++ b/src/com/dre/brewery/P.java @@ -121,7 +121,7 @@ public class P extends JavaPlugin { if (use1_9) { p.getServer().getPluginManager().registerEvents(new CauldronListener(), p); } - if (BConfig.hasChestShop) { + if (BConfig.hasChestShop && use1_13) { p.getServer().getPluginManager().registerEvents(new ChestShopListener(), p); } diff --git a/src/com/dre/brewery/listeners/CommandListener.java b/src/com/dre/brewery/listeners/CommandListener.java index 70861ac..eea3b3f 100644 --- a/src/com/dre/brewery/listeners/CommandListener.java +++ b/src/com/dre/brewery/listeners/CommandListener.java @@ -81,6 +81,14 @@ public class CommandListener implements CommandExecutor { } } + } else if (cmd.equalsIgnoreCase("seal") || cmd.startsWith("seal") || cmd.startsWith("Seal")) { + + if (sender.hasPermission("brewery.cmd.seal")) { + cmdSeal(sender); + } else { + p.msg(sender, p.languageReader.get("Error_NoPermissions")); + } + } else if (cmd.equalsIgnoreCase("copy") || cmd.equalsIgnoreCase("cp")) { if (sender.hasPermission("brewery.cmd.copy")) { @@ -174,6 +182,10 @@ public class CommandListener implements CommandExecutor { cmds.add (p.languageReader.get("Help_Info")); } + if (P.use1_13 && sender.hasPermission("brewery.cmd.seal")) { + cmds.add (p.languageReader.get("Help_Seal")); + } + if (sender.hasPermission("brewery.cmd.unlabel")) { cmds.add (p.languageReader.get("Help_UnLabel")); } @@ -366,6 +378,20 @@ public class CommandListener implements CommandExecutor { } + public void cmdSeal(CommandSender sender) { + if (!P.use1_13) { + P.p.msg(sender, "Sealing requires minecraft 1.13 or higher"); + return; + } + if (!(sender instanceof Player)) { + p.msg(sender, p.languageReader.get("Error_PlayerCommand")); + return; + } + + Player player = (Player) sender; + player.openInventory(new BSealer(player).getInventory()); + } + @Deprecated public void cmdCopy(CommandSender sender, int count) { diff --git a/src/com/dre/brewery/listeners/InventoryListener.java b/src/com/dre/brewery/listeners/InventoryListener.java index dfaeb1d..be3ad66 100644 --- a/src/com/dre/brewery/listeners/InventoryListener.java +++ b/src/com/dre/brewery/listeners/InventoryListener.java @@ -193,6 +193,7 @@ public class InventoryListener implements Listener { // Handle the Brew Sealer Inventory @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onInventoryClickBSealer(InventoryClickEvent event) { + if (!P.use1_13) return; InventoryHolder holder = event.getInventory().getHolder(); if (!(holder instanceof BSealer)) { return; @@ -296,6 +297,7 @@ public class InventoryListener implements Listener { @EventHandler public void onInventoryClose(InventoryCloseEvent event) { + if (!P.use1_13) return; if (event.getInventory().getHolder() instanceof BSealer) { ((BSealer) event.getInventory().getHolder()).closeInv(); } diff --git a/src/com/dre/brewery/listeners/PlayerListener.java b/src/com/dre/brewery/listeners/PlayerListener.java index 84698c0..082ef43 100644 --- a/src/com/dre/brewery/listeners/PlayerListener.java +++ b/src/com/dre/brewery/listeners/PlayerListener.java @@ -6,7 +6,6 @@ import com.dre.brewery.filedata.UpdateChecker; import com.dre.brewery.utility.LegacyUtil; import org.bukkit.GameMode; import org.bukkit.Material; -import org.bukkit.Nameable; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -42,7 +41,7 @@ public class PlayerListener implements Listener { } - if (BSealer.isBSealer(clickedBlock)) { + if (P.use1_14 && BSealer.isBSealer(clickedBlock)) { event.setCancelled(true); if (BConfig.enableSealingTable) { BSealer sealer = new BSealer(player);