Selbst programmiertes MC Plugin Variable existiert nicht obwohl ich sie davor benutzt habe?
Das ist der Code der Main.java Datei:
package easytrade.thepixel3261.easytrade;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements CommandExecutor{
@Override
public void onEnable() {
getLogger().info("Plugin enabled!");
}
@Override
public void onDisable() {
getLogger().info("Plugin disabled!");
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("convert")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command.");
return true;
}
Player player = (Player) sender;
if (args.length != 2) {
player.sendMessage("Usage: /convert <material> <amount>");
return true;
}
Material fromMaterial = Material.getMaterial(args[0].toUpperCase());
int amount = Integer.parseInt(args[1]);
if (fromMaterial == null) {
player.sendMessage("Invalid material specified.");
return true;
}
Material toMaterial = null;
if (fromMaterial == Material.COPPER_INGOT && amount >= 2) {
toMaterial = Material.EMERALD;
amount /= 2;
} else if (fromMaterial == Material.EMERALD && amount >= 1) {
toMaterial = Material.COPPER_INGOT;
amount *= 2;
} else {
player.sendMessage("Invalid material specified or not enough items.");
return true;
}
ItemStack fromItem = new ItemStack(fromMaterial, amount);
if (!player.getInventory().containsAtLeast(fromItem, amount)) {
player.sendMessage("You do not have enough " + fromMaterial.toString().toLowerCase() + "s in your inventory.");
return true;
}
if(toMaterial == Material.EMERALD) {
ItemStack toItem = new ItemStack(toMaterial, amount/2);
}
if(toMaterial == Material.COPPER_INGOT) {
ItemStack toItem = new ItemStack(toMaterial, amount*2);
}
// Remove the specified number of items from the player's inventory
player.getInventory().removeItem(fromItem);
// Add the converted items to the player's inventory
player.getInventory().addItem(toItem);
player.sendMessage("Successfully converted " + amount + " " + fromMaterial.toString().toLowerCase() + "s to " + amount + " " + toMaterial.toString().toLowerCase() + "s.");
return true;
}
return false;
}
}
Wenn ich versuch einen build zu machen passiert das:
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Java, Programmieren & Softwareentwicklung
Die Variable ist in einem anderem Scope. Konkret im Scope der If-Abfragen.
Dein Code sollte z.B. folgendermaßen aussehen:
ItemStack toItem = null;
if(toMaterial == Material.EMERALD) {
toItem = new ItemStack(toMaterial, amount/2);
}
if(toMaterial == Material.COPPER_INGOT) {
toItem = new ItemStack(toMaterial, amount*2);
}
Destranix
04.11.2023, 13:17
@thepixel3261
Ich auch nicht. Das wirst du selbst herausfinden müssen. Im Zweifelsfalle empfiehlt es sich, eine Dokumentation des APIs zu suchen, dann kann evtl. helfen.
Ok, danke aber ich habe mir einen Tab Completer auf YT angeschaut, weiß jetzt aber nicht wie ich ihn einbinden kann