src/main/java/de/viper/survivalplus/listeners/ToolUpgradeListener.java aktualisiert
This commit is contained in:
@@ -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();
|
||||
|
Reference in New Issue
Block a user