diff --git a/src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java b/src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java index e66c663..538f26d 100644 --- a/src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java +++ b/src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java @@ -56,19 +56,12 @@ public class ToolUpgradeListener implements Listener { if (!(event.getInventory() instanceof CraftingInventory)) return; CraftingInventory inv = (CraftingInventory) event.getInventory(); ItemStack[] matrix = inv.getMatrix(); - if (matrix.length < 9) { - inv.setResult(null); - return; - } + if (matrix.length < 9) return; // Kein 3x3-Crafting-Tisch ItemStack center = matrix[4]; - if (center == null || center.getType() == Material.AIR) { - inv.setResult(null); - return; - } - if (!isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) { - inv.setResult(null); - return; + // Nur eingreifen, wenn ein Werkzeug in der Mitte liegt + if (center == null || center.getType() == Material.AIR || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) { + return; // Standard-Rezepte nicht beeinflussen } int currentLevel = getToolLevel(center); @@ -83,7 +76,7 @@ public class ToolUpgradeListener implements Listener { return; } - // Prüfen ob alle Slots (außer Mitte) mind. 2 Stück vom richtigen Material haben + // Prüfen, ob alle Slots (außer Mitte) mind. 2 Stück vom richtigen Material haben for (int i = 0; i < matrix.length; i++) { if (i == 4) continue; if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) { @@ -106,20 +99,33 @@ public class ToolUpgradeListener implements Listener { ItemStack[] matrix = inv.getMatrix(); ItemStack center = matrix[4]; - if (center == null || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) return; + if (center == null || !isUpgradeableTool(center.getType()) || isWoodTool(center.getType())) { + plugin.getLogger().fine("Kein Upgrade-Werkzeug in der Mitte: " + (center != null ? center.getType() : "null")); + return; + } int currentLevel = getToolLevel(center); - if (currentLevel >= maxLevel || currentLevel >= getMaxAllowedLevel(center.getType())) return; + if (currentLevel >= maxLevel || currentLevel >= getMaxAllowedLevel(center.getType())) { + plugin.getLogger().fine("Maximales Level erreicht für Werkzeug: " + center.getType()); + return; + } Material requiredMat = levelMaterials.get(currentLevel + 1); - if (requiredMat == null) return; + if (requiredMat == null) { + plugin.getLogger().fine("Kein Material für Level " + (currentLevel + 1)); + return; + } for (int i = 0; i < matrix.length; i++) { if (i == 4) continue; - if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) return; + if (matrix[i] == null || matrix[i].getType() != requiredMat || matrix[i].getAmount() < REQUIRED_AMOUNT) { + plugin.getLogger().fine("Ungültiges Material in Slot " + i + ": " + (matrix[i] != null ? matrix[i].getType() : "null")); + return; + } } // Gültig: Event abbrechen, Upgrade geben, Items verbrauchen + plugin.getLogger().info("Werkzeug-Upgrade für " + player.getName() + ": " + center.getType() + " auf Level " + (currentLevel + 1)); event.setCancelled(true); ItemStack result = createUpgradedTool(center, currentLevel + 1); @@ -215,7 +221,9 @@ public class ToolUpgradeListener implements Listener { n.endsWith("_SWORD"); } - private boolean isWoodTool(Material mat) { return mat.name().startsWith("WOODEN"); } + private boolean isWoodTool(Material mat) { + return mat.name().startsWith("WOODEN"); + } private int getMaxAllowedLevel(Material mat) { String s = mat.name();