diff --git a/chestex/.gradle/8.9/checksums/checksums.lock b/chestex/.gradle/8.9/checksums/checksums.lock deleted file mode 100644 index 3b1546c..0000000 Binary files a/chestex/.gradle/8.9/checksums/checksums.lock and /dev/null differ diff --git a/chestex/.gradle/8.9/dependencies-accessors/gc.properties b/chestex/.gradle/8.9/dependencies-accessors/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/chestex/.gradle/8.9/fileChanges/last-build.bin b/chestex/.gradle/8.9/fileChanges/last-build.bin deleted file mode 100644 index f76dd23..0000000 Binary files a/chestex/.gradle/8.9/fileChanges/last-build.bin and /dev/null differ diff --git a/chestex/.gradle/8.9/fileHashes/fileHashes.lock b/chestex/.gradle/8.9/fileHashes/fileHashes.lock deleted file mode 100644 index b32bb84..0000000 Binary files a/chestex/.gradle/8.9/fileHashes/fileHashes.lock and /dev/null differ diff --git a/chestex/.gradle/8.9/gc.properties b/chestex/.gradle/8.9/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/chestex/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/chestex/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index 3c559d2..0000000 Binary files a/chestex/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ diff --git a/chestex/.gradle/buildOutputCleanup/cache.properties b/chestex/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index af7e39f..0000000 --- a/chestex/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Sun Jul 20 16:03:35 CEST 2025 -gradle.version=8.14.2 diff --git a/chestex/.gradle/vcs-1/gc.properties b/chestex/.gradle/vcs-1/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/chestex/build.gradle.kts b/chestex/build.gradle.kts deleted file mode 100755 index 18f476f..0000000 --- a/chestex/build.gradle.kts +++ /dev/null @@ -1,49 +0,0 @@ -plugins { - `java-library` - id("io.papermc.paperweight.userdev") version "2.0.0-beta.14" - id("xyz.jpenilla.run-paper") version "2.3.1" // Adds runServer and runMojangMappedServer tasks for testing -} -group = "de.hessj.chestex" -version = "1.0-SNAPSHOT" -description = "chestex" - -tasks.withType { - destinationDirectory.set(file("../")) -} - -dependencies { - //implementation(files("../craftbukkit.jar")) - implementation(files("../helper-1.0-SNAPSHOT.jar")) - paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT") -} - -tasks { - // Configure reobfJar to run when invoking the build task - assemble { - dependsOn(reobfJar) - } - - compileJava { - options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything - - // Set the release flag. This configures what version bytecode the compiler will emit, as well as what JDK APIs are usable. - // See https://openjdk.java.net/jeps/247 for more information. - options.release.set(21) - } - javadoc { - options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything - } - processResources { - filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything - val props = mapOf( - "name" to project.name, - "version" to project.version, - "description" to project.description, - "apiVersion" to "1.21" - ) - inputs.properties(props) - filesMatching("plugin.yml") { - expand(props) - } - } -} \ No newline at end of file diff --git a/chestex/settings.gradle.kts b/chestex/settings.gradle.kts deleted file mode 100755 index a5093e4..0000000 --- a/chestex/settings.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0" -} - -rootProject.name = "chestex" \ No newline at end of file diff --git a/chestex/src/main/java/de/hessj/chestex/App.java b/chestex/src/main/java/de/hessj/chestex/App.java deleted file mode 100755 index 4eb33d2..0000000 --- a/chestex/src/main/java/de/hessj/chestex/App.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.hessj.chestex; - -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.RecipeChoice; -import org.bukkit.inventory.ShapedRecipe; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataType; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; -import net.kyori.adventure.text.Component; -import net.md_5.bungee.api.ChatColor; - -public class App extends JavaPlugin { - public static App main; - public de.hessj.helper.Helper helper= new de.hessj.helper.Helper(); - public NamespacedKey nskLockedChest = new NamespacedKey(this, "R3SLockedChest"); - public NamespacedKey nskLockedChestRecipe = new NamespacedKey(this, "R3SLockedChestRecipe"); - public ItemStack lockedChest; - - @Override - public void onEnable() { - getLogger().info("Plugin enabled!"); - main = this; - - - lockedChest = new ItemStack(Material.CHEST); - ItemMeta imlockedChest = lockedChest.getItemMeta(); - imlockedChest.displayName(Component.translatable(ChatColor.AQUA + "Verschlossene Truhe")); - imlockedChest.getPersistentDataContainer().set(nskLockedChest, PersistentDataType.STRING, "R3S_LockedChest"); - lockedChest.setItemMeta(imlockedChest); - ShapedRecipe safechestRecipe = new ShapedRecipe(nskLockedChestRecipe, lockedChest); - RecipeChoice rc = new RecipeChoice.MaterialChoice(Material.OAK_LOG, Material.SPRUCE_LOG, Material.BIRCH_LOG, - Material.JUNGLE_LOG, Material.ACACIA_LOG, Material.DARK_OAK_LOG); - safechestRecipe.shape("LLL", "LKL", "III"); - safechestRecipe.setIngredient('L', rc); - safechestRecipe.setIngredient('K', Material.TRIPWIRE_HOOK); - safechestRecipe.setIngredient('I', Material.IRON_INGOT); - if (getServer().getRecipe(nskLockedChestRecipe) == null) { - App.main.getServer().addRecipe(safechestRecipe); - } - listenerRegistration(); - } - - @Override - public void onDisable() { - getLogger().info("Plugin disabled!"); - } - - private void listenerRegistration() { - PluginManager pM = Bukkit.getPluginManager(); - pM.registerEvents(new SafeChestListener(), this); - } -} \ No newline at end of file diff --git a/chestex/src/main/resources/plugin.yml b/chestex/src/main/resources/plugin.yml deleted file mode 100755 index 97ed0e4..0000000 --- a/chestex/src/main/resources/plugin.yml +++ /dev/null @@ -1,5 +0,0 @@ -main: de.hessj.chestex.App -name: ChestExPlugin -version: 0.1 -api-version: 1.21 -depend: [HelperPlugin] \ No newline at end of file diff --git a/environmentex/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/environmentex/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c16ebdd..2a62e03 100644 Binary files a/environmentex/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/environmentex/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/environmentex/.gradle/caches/paperweight/taskCache/reobfJar.log b/environmentex/.gradle/caches/paperweight/taskCache/reobfJar.log index 00b64f8..33d92e9 100644 --- a/environmentex/.gradle/caches/paperweight/taskCache/reobfJar.log +++ b/environmentex/.gradle/caches/paperweight/taskCache/reobfJar.log @@ -1,2 +1,2 @@ Command: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home/bin/java -Xmx1G -classpath /Users/janik/.gradle/caches/modules-2/files-2.1/net.fabricmc/tiny-remapper/0.11.1/6c1f29838864ba8f495855edfc8ef17706fedb5d/tiny-remapper-0.11.1-fat.jar net.fabricmc.tinyremapper.Main /Users/janik/Desktop/MCPlugins/environmentex-1.0-SNAPSHOT.jar /Users/janik/Desktop/MCPlugins/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/reobfMappings.tiny mojang spigot /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/mappedServerJar.jar --threads=1 -[INFO] Finished after 880,98 ms. +[INFO] Finished after 974,94 ms. diff --git a/environmentex/build/classes/java/main/de/hessj/environmentex/App$1.class b/environmentex/build/classes/java/main/de/hessj/environmentex/App$1.class index 6f3c6ef..ad152ef 100644 Binary files a/environmentex/build/classes/java/main/de/hessj/environmentex/App$1.class and b/environmentex/build/classes/java/main/de/hessj/environmentex/App$1.class differ diff --git a/environmentex/build/classes/java/main/de/hessj/environmentex/App$2.class b/environmentex/build/classes/java/main/de/hessj/environmentex/App$2.class index 2607aae..5004321 100644 Binary files a/environmentex/build/classes/java/main/de/hessj/environmentex/App$2.class and b/environmentex/build/classes/java/main/de/hessj/environmentex/App$2.class differ diff --git a/environmentex/build/classes/java/main/de/hessj/environmentex/App.class b/environmentex/build/classes/java/main/de/hessj/environmentex/App.class index 6af1ec0..53b5f34 100644 Binary files a/environmentex/build/classes/java/main/de/hessj/environmentex/App.class and b/environmentex/build/classes/java/main/de/hessj/environmentex/App.class differ diff --git a/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar b/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar index 577570d..b7be773 100644 Binary files a/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar and b/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar differ diff --git a/environmentex/build/reports/problems/problems-report.html b/environmentex/build/reports/problems/problems-report.html index 2a566b6..6fab95c 100644 --- a/environmentex/build/reports/problems/problems-report.html +++ b/environmentex/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ code + .copy-button { diff --git a/environmentex/build/tmp/compileJava/previous-compilation-data.bin b/environmentex/build/tmp/compileJava/previous-compilation-data.bin index f98e583..f27f85a 100644 Binary files a/environmentex/build/tmp/compileJava/previous-compilation-data.bin and b/environmentex/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/environmentex/src/main/java/de/hessj/environmentex/App.java b/environmentex/src/main/java/de/hessj/environmentex/App.java index 067c429..868ea29 100755 --- a/environmentex/src/main/java/de/hessj/environmentex/App.java +++ b/environmentex/src/main/java/de/hessj/environmentex/App.java @@ -59,7 +59,9 @@ public class App extends JavaPlugin { public File tpYml = new File(this.getDataFolder() + "/texturepack.yml"); public FileConfiguration tpConfig = YamlConfiguration.loadConfiguration(tpYml); - + public NamespacedKey nskLockedChest = new NamespacedKey(this, "R3SLockedChest"); + public NamespacedKey nskLockedChestRecipe = new NamespacedKey(this, "R3SLockedChestRecipe"); + public ItemStack lockedChest; @Override @@ -76,6 +78,26 @@ public class App extends JavaPlugin { } SquidPrevention.removeSquidReceipes(); SquidPrevention.addCustomSquidRecipes(); + + main = this; + lockedChest = new ItemStack(Material.CHEST); + ItemMeta imlockedChest = lockedChest.getItemMeta(); + imlockedChest.displayName(Component.translatable(ChatColor.AQUA + "Verschlossene Truhe")); + imlockedChest.getPersistentDataContainer().set(nskLockedChest, PersistentDataType.STRING, "R3S_LockedChest"); + lockedChest.setItemMeta(imlockedChest); + ShapedRecipe safechestRecipe = new ShapedRecipe(nskLockedChestRecipe, lockedChest); + RecipeChoice rc = new RecipeChoice.MaterialChoice(Material.OAK_LOG, Material.SPRUCE_LOG, Material.BIRCH_LOG, + Material.JUNGLE_LOG, Material.ACACIA_LOG, Material.DARK_OAK_LOG); + safechestRecipe.shape("LLL", "LKL", "III"); + safechestRecipe.setIngredient('L', rc); + safechestRecipe.setIngredient('K', Material.TRIPWIRE_HOOK); + safechestRecipe.setIngredient('I', Material.IRON_INGOT); + if (getServer().getRecipe(nskLockedChestRecipe) == null) { + App.main.getServer().addRecipe(safechestRecipe); + } + + + getServer().recipeIterator().forEachRemaining(recipe -> { if (recipe instanceof ShapelessRecipe) { ShapelessRecipe shapelessRecipe = (ShapelessRecipe) recipe; @@ -94,7 +116,7 @@ public class App extends JavaPlugin { }, 1000 * 20 / 1000, 1000 * 20 / 1000); getLogger().info("Plugin enabled!"); - main = this; + // if(App.main.getServer().getPort() == 25588){ @@ -460,6 +482,7 @@ public class App extends JavaPlugin { pM.registerEvents(new SquidPrevention(), this); pM.registerEvents(new EntityMuter(), this); pM.registerEvents(new BetterHoes(), this); + pM.registerEvents(new ChestEx(), this); getCommand("test").setExecutor(new EnvironmentExCommands()); getCommand("y").setExecutor(new EnvironmentExCommands()); getCommand("n").setExecutor(new EnvironmentExCommands()); diff --git a/chestex/src/main/java/de/hessj/chestex/SafeChestListener.java b/environmentex/src/main/java/de/hessj/environmentex/ChestEx.java old mode 100755 new mode 100644 similarity index 97% rename from chestex/src/main/java/de/hessj/chestex/SafeChestListener.java rename to environmentex/src/main/java/de/hessj/environmentex/ChestEx.java index 639789d..8883d9a --- a/chestex/src/main/java/de/hessj/chestex/SafeChestListener.java +++ b/environmentex/src/main/java/de/hessj/environmentex/ChestEx.java @@ -1,318 +1,318 @@ -package de.hessj.chestex; - -import java.util.ArrayList; -import java.util.List; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.Chest; -import org.bukkit.block.DoubleChest; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.inventory.EquipmentSlot; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; -import org.bukkit.persistence.PersistentDataType; - -import de.hessj.helper.Helper.Type; - -public class SafeChestListener implements Listener { - public Boolean lastPlacedIsSafeChest = false; - public de.hessj.helper.Helper helper= new de.hessj.helper.Helper(); - - @EventHandler - public void onJoin(PlayerJoinEvent e) { - e.getPlayer().discoverRecipe(App.main.nskLockedChestRecipe); - } - - @EventHandler - public void onInteract(PlayerInteractEvent e) { - if (e.getAction() == Action.RIGHT_CLICK_BLOCK && !helper.isInteractable(e.getClickedBlock())) { - if (e.getPlayer().getInventory().getItemInMainHand() != null - && e.getPlayer().getInventory().getItemInMainHand().hasItemMeta() && e.getPlayer().getInventory() - .getItemInMainHand().getItemMeta().getPersistentDataContainer() != null) { - if (e.getPlayer().getInventory().getItemInMainHand().getItemMeta().getPersistentDataContainer() - .has(App.main.nskLockedChest, PersistentDataType.STRING)) { - lastPlacedIsSafeChest = true; - } - } - } else if (e.getAction() == Action.RIGHT_CLICK_BLOCK && helper.isInteractable(e.getClickedBlock())) { - Location loc = e.getClickedBlock().getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) - .contains(locStr)) { - // is meine truhe - } else { - if (App.main.getConfig().getConfigurationSection("chests") != null) { - for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { - List chestList = App.main.getConfig().getStringList("chests." + uuid); - if (chestList.contains(locStr)) { - e.setCancelled(true); - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!")); - return; - } - } - } - } - } - - } - - @EventHandler - public void onPlace(BlockPlaceEvent e) { - if (e.getBlockPlaced().getType().equals(Material.CHEST) && lastPlacedIsSafeChest) { - - Chest chest = (Chest) e.getBlock().getState(); - - Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, new Runnable() { - @Override - public void run() { - - InventoryHolder holder = chest.getInventory().getHolder(); - - if (holder instanceof DoubleChest) { - DoubleChest doubleChest = ((DoubleChest) holder); - Chest leftChest = (Chest) doubleChest.getLeftSide(); - Chest rightChest = (Chest) doubleChest.getRightSide(); - - // WENN HIER DIE EINE IN CONFIG GEHÖRT PLAYER - - if (leftChest.getLocation().equals(e.getBlockPlaced().getLocation())) { - // rechte checken - Location loc = rightChest.getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - - if (!App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) - .contains(locStr)) { - e.getBlockPlaced().setType(Material.AIR); - e.setCancelled(true); - // HIER - if (e.getHand() == EquipmentSlot.OFF_HAND) { - if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInOffHand( - e.getPlayer().getInventory().getItemInOffHand().add(1)); - } else { - e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } else if (e.getHand() == EquipmentSlot.HAND) { - if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInMainHand( - e.getPlayer().getInventory().getItemInMainHand().add(1)); - - } else { - e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } - - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!")); - return; - } - - } else if (rightChest.getLocation().equals(e.getBlockPlaced().getLocation())) { - // linke checken - Location loc = leftChest.getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - - if (!App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) - .contains(locStr)) { - e.getBlockPlaced().setType(Material.AIR); - e.setCancelled(true); - // HIER - if (e.getHand() == EquipmentSlot.OFF_HAND) { - if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInOffHand( - e.getPlayer().getInventory().getItemInOffHand().add(1)); - } else { - e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } else if (e.getHand() == EquipmentSlot.HAND) { - if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInMainHand( - e.getPlayer().getInventory().getItemInMainHand().add(1)); - - } else { - e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } - - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!")); - return; - } - } - } - - // HIER IN DING EINTRAGEN - Location loc = e.getBlockPlaced().getLocation(); - List chestList = App.main.getConfig() - .getStringList("chests." + e.getPlayer().getUniqueId().toString()); - chestList.add(loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ()); - App.main.getConfig().set("chests." + e.getPlayer().getUniqueId().toString(), chestList); - - App.main.saveConfig(); - - lastPlacedIsSafeChest = false; - } - }, 1L); - - } else if (e.getBlockPlaced().getType().equals(Material.CHEST) && !lastPlacedIsSafeChest) { - Chest chest = (Chest) e.getBlock().getState(); - - Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, new Runnable() { - @Override - public void run() { - - InventoryHolder holder = chest.getInventory().getHolder(); - - if (holder instanceof DoubleChest) { - DoubleChest doubleChest = ((DoubleChest) holder); - Chest leftChest = (Chest) doubleChest.getLeftSide(); - Chest rightChest = (Chest) doubleChest.getRightSide(); - - // WENN HIER DIE EINE IN CONFIG GEHÖRT PLAYER - - if (leftChest.getLocation().equals(e.getBlockPlaced().getLocation())) { - // rechte checken - Location loc = rightChest.getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - - if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) - .contains(locStr)) { - e.getBlockPlaced().setType(Material.AIR); - e.setCancelled(true); - // HIER - if (e.getHand() == EquipmentSlot.OFF_HAND) { - if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInOffHand( - e.getPlayer().getInventory().getItemInOffHand().add(1)); - } else { - e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } else if (e.getHand() == EquipmentSlot.HAND) { - if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInMainHand( - e.getPlayer().getInventory().getItemInMainHand().add(1)); - - } else { - e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!")); - - } - - } else if (rightChest.getLocation().equals(e.getBlockPlaced().getLocation())) { - // linke checken - Location loc = leftChest.getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - - if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) - .contains(locStr)) { - e.getBlockPlaced().setType(Material.AIR); - e.setCancelled(true); - // HIER - if (e.getHand() == EquipmentSlot.OFF_HAND) { - if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInOffHand( - e.getPlayer().getInventory().getItemInOffHand().add(1)); - } else { - e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } else if (e.getHand() == EquipmentSlot.HAND) { - if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { - e.getPlayer().getInventory().setItemInMainHand( - e.getPlayer().getInventory().getItemInMainHand().add(1)); - } else { - e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); - e.getPlayer().updateInventory(); - } - } - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!")); - } - } - } - } - }, 1L); - - } - - } - - @EventHandler - public void onEntityExplodeEvent(EntityExplodeEvent event) { - List safelist = new ArrayList(); - for (Block block : event.blockList()) { - if (block.getType() == Material.CHEST) { - if (App.main.getConfig().getConfigurationSection("chests") != null) { - Location loc = block.getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { - List chestList = App.main.getConfig().getStringList("chests." + uuid); - if (chestList.contains(locStr)) { - safelist.add(block); - } - } - } - } - } - for (Block b : safelist) { - event.blockList().remove(b); - } - } - - @EventHandler - public void onDestroy(BlockBreakEvent e) { - if (!e.getBlock().getType().equals(Material.CHEST)) { - return; - } - - Location loc = e.getBlock().getLocation(); - String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); - if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()).contains(locStr)) { - List chestList = App.main.getConfig() - .getStringList("chests." + e.getPlayer().getUniqueId().toString()); - chestList.remove(locStr); - App.main.getConfig().set("chests." + e.getPlayer().getUniqueId().toString(), chestList); - App.main.saveConfig(); - - e.setCancelled(true); - - Chest c = (Chest) e.getBlock().getState(); - - for (ItemStack is : c.getBlockInventory()) { - if (is != null) { - - e.getBlock().getWorld().dropItemNaturally(loc, is); - } - } - e.getBlock().setType(Material.AIR); - - e.getBlock().getWorld().dropItem(loc, App.main.lockedChest); - } else { - if (App.main.getConfig().getConfigurationSection("chests") != null) { - for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { - List chestList = App.main.getConfig().getStringList("chests." + uuid); - if (chestList.contains(locStr)) { - e.setCancelled(true); - e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!")); - return; - } - } - } - } - - } +package de.hessj.environmentex; + +import java.util.ArrayList; +import java.util.List; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.Chest; +import org.bukkit.block.DoubleChest; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.persistence.PersistentDataType; + +import de.hessj.helper.Helper.Type; + +public class ChestEx implements Listener { + public Boolean lastPlacedIsSafeChest = false; + public de.hessj.helper.Helper helper= new de.hessj.helper.Helper(); + + @EventHandler + public void onJoin(PlayerJoinEvent e) { + e.getPlayer().discoverRecipe(App.main.nskLockedChestRecipe); + } + + @EventHandler + public void onInteract(PlayerInteractEvent e) { + if (e.getAction() == Action.RIGHT_CLICK_BLOCK && !helper.isInteractable(e.getClickedBlock())) { + if (e.getPlayer().getInventory().getItemInMainHand() != null + && e.getPlayer().getInventory().getItemInMainHand().hasItemMeta() && e.getPlayer().getInventory() + .getItemInMainHand().getItemMeta().getPersistentDataContainer() != null) { + if (e.getPlayer().getInventory().getItemInMainHand().getItemMeta().getPersistentDataContainer() + .has(App.main.nskLockedChest, PersistentDataType.STRING)) { + lastPlacedIsSafeChest = true; + } + } + } else if (e.getAction() == Action.RIGHT_CLICK_BLOCK && helper.isInteractable(e.getClickedBlock())) { + Location loc = e.getClickedBlock().getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) + .contains(locStr)) { + // is meine truhe + } else { + if (App.main.getConfig().getConfigurationSection("chests") != null) { + for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { + List chestList = App.main.getConfig().getStringList("chests." + uuid); + if (chestList.contains(locStr)) { + e.setCancelled(true); + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!")); + return; + } + } + } + } + } + + } + + @EventHandler + public void onPlace(BlockPlaceEvent e) { + if (e.getBlockPlaced().getType().equals(Material.CHEST) && lastPlacedIsSafeChest) { + + Chest chest = (Chest) e.getBlock().getState(); + + Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, new Runnable() { + @Override + public void run() { + + InventoryHolder holder = chest.getInventory().getHolder(); + + if (holder instanceof DoubleChest) { + DoubleChest doubleChest = ((DoubleChest) holder); + Chest leftChest = (Chest) doubleChest.getLeftSide(); + Chest rightChest = (Chest) doubleChest.getRightSide(); + + // WENN HIER DIE EINE IN CONFIG GEHÖRT PLAYER + + if (leftChest.getLocation().equals(e.getBlockPlaced().getLocation())) { + // rechte checken + Location loc = rightChest.getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + + if (!App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) + .contains(locStr)) { + e.getBlockPlaced().setType(Material.AIR); + e.setCancelled(true); + // HIER + if (e.getHand() == EquipmentSlot.OFF_HAND) { + if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInOffHand( + e.getPlayer().getInventory().getItemInOffHand().add(1)); + } else { + e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } else if (e.getHand() == EquipmentSlot.HAND) { + if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInMainHand( + e.getPlayer().getInventory().getItemInMainHand().add(1)); + + } else { + e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } + + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!")); + return; + } + + } else if (rightChest.getLocation().equals(e.getBlockPlaced().getLocation())) { + // linke checken + Location loc = leftChest.getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + + if (!App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) + .contains(locStr)) { + e.getBlockPlaced().setType(Material.AIR); + e.setCancelled(true); + // HIER + if (e.getHand() == EquipmentSlot.OFF_HAND) { + if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInOffHand( + e.getPlayer().getInventory().getItemInOffHand().add(1)); + } else { + e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } else if (e.getHand() == EquipmentSlot.HAND) { + if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInMainHand( + e.getPlayer().getInventory().getItemInMainHand().add(1)); + + } else { + e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } + + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!")); + return; + } + } + } + + // HIER IN DING EINTRAGEN + Location loc = e.getBlockPlaced().getLocation(); + List chestList = App.main.getConfig() + .getStringList("chests." + e.getPlayer().getUniqueId().toString()); + chestList.add(loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ()); + App.main.getConfig().set("chests." + e.getPlayer().getUniqueId().toString(), chestList); + + App.main.saveConfig(); + + lastPlacedIsSafeChest = false; + } + }, 1L); + + } else if (e.getBlockPlaced().getType().equals(Material.CHEST) && !lastPlacedIsSafeChest) { + Chest chest = (Chest) e.getBlock().getState(); + + Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, new Runnable() { + @Override + public void run() { + + InventoryHolder holder = chest.getInventory().getHolder(); + + if (holder instanceof DoubleChest) { + DoubleChest doubleChest = ((DoubleChest) holder); + Chest leftChest = (Chest) doubleChest.getLeftSide(); + Chest rightChest = (Chest) doubleChest.getRightSide(); + + // WENN HIER DIE EINE IN CONFIG GEHÖRT PLAYER + + if (leftChest.getLocation().equals(e.getBlockPlaced().getLocation())) { + // rechte checken + Location loc = rightChest.getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + + if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) + .contains(locStr)) { + e.getBlockPlaced().setType(Material.AIR); + e.setCancelled(true); + // HIER + if (e.getHand() == EquipmentSlot.OFF_HAND) { + if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInOffHand( + e.getPlayer().getInventory().getItemInOffHand().add(1)); + } else { + e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } else if (e.getHand() == EquipmentSlot.HAND) { + if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInMainHand( + e.getPlayer().getInventory().getItemInMainHand().add(1)); + + } else { + e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!")); + + } + + } else if (rightChest.getLocation().equals(e.getBlockPlaced().getLocation())) { + // linke checken + Location loc = leftChest.getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + + if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()) + .contains(locStr)) { + e.getBlockPlaced().setType(Material.AIR); + e.setCancelled(true); + // HIER + if (e.getHand() == EquipmentSlot.OFF_HAND) { + if (e.getPlayer().getInventory().getItemInOffHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInOffHand( + e.getPlayer().getInventory().getItemInOffHand().add(1)); + } else { + e.getPlayer().getInventory().setItemInOffHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } else if (e.getHand() == EquipmentSlot.HAND) { + if (e.getPlayer().getInventory().getItemInMainHand().getAmount() > 0) { + e.getPlayer().getInventory().setItemInMainHand( + e.getPlayer().getInventory().getItemInMainHand().add(1)); + } else { + e.getPlayer().getInventory().setItemInMainHand(App.main.lockedChest); + e.getPlayer().updateInventory(); + } + } + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!")); + } + } + } + } + }, 1L); + + } + + } + + @EventHandler + public void onEntityExplodeEvent(EntityExplodeEvent event) { + List safelist = new ArrayList(); + for (Block block : event.blockList()) { + if (block.getType() == Material.CHEST) { + if (App.main.getConfig().getConfigurationSection("chests") != null) { + Location loc = block.getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { + List chestList = App.main.getConfig().getStringList("chests." + uuid); + if (chestList.contains(locStr)) { + safelist.add(block); + } + } + } + } + } + for (Block b : safelist) { + event.blockList().remove(b); + } + } + + @EventHandler + public void onDestroy(BlockBreakEvent e) { + if (!e.getBlock().getType().equals(Material.CHEST)) { + return; + } + + Location loc = e.getBlock().getLocation(); + String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ(); + if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString()).contains(locStr)) { + List chestList = App.main.getConfig() + .getStringList("chests." + e.getPlayer().getUniqueId().toString()); + chestList.remove(locStr); + App.main.getConfig().set("chests." + e.getPlayer().getUniqueId().toString(), chestList); + App.main.saveConfig(); + + e.setCancelled(true); + + Chest c = (Chest) e.getBlock().getState(); + + for (ItemStack is : c.getBlockInventory()) { + if (is != null) { + + e.getBlock().getWorld().dropItemNaturally(loc, is); + } + } + e.getBlock().setType(Material.AIR); + + e.getBlock().getWorld().dropItem(loc, App.main.lockedChest); + } else { + if (App.main.getConfig().getConfigurationSection("chests") != null) { + for (String uuid : App.main.getConfig().getConfigurationSection("chests").getKeys(false)) { + List chestList = App.main.getConfig().getStringList("chests." + uuid); + if (chestList.contains(locStr)) { + e.setCancelled(true); + e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!")); + return; + } + } + } + } + + } } \ No newline at end of file