Squall Posted September 26, 2023 Share Posted September 26, 2023 Was stimmt bitte nicht mit meinem Code ? Sitze schon seit stunden und versuche irgendwie diese rote zeile verschwinden zu lassen kein erfolg.. Link to comment Share on other sites More sharing options...
Squall Posted September 26, 2023 Author Share Posted September 26, 2023 Guten morgen.. Ich hoffe ihr könnt mir helfen wie ich diese funktion aufrufen kann. Habe wirklich alles versucht.. Ich möchte halt dass man /Spawnblock block eingibt das ein fallender block dieses types kommt.. Habe jetzt auchmal einiges umgeschrieben dennoch bekomm ich es nicht hin. Main Class: package me.svdermant.info; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import me.svdermant.commands.Command_RandomItem; import me.svdermant.commands.Command_backtp; import me.svdermant.commands.Command_countdown; import me.svdermant.commands.Command_daten; import me.svdermant.commands.Command_inforeload; import me.svdermant.commands.Command_inv; import me.svdermant.commands.Command_invclear; import me.svdermant.commands.Command_pheal; import me.svdermant.commands.SpawnBlockCommand; import me.svdermant.commands.commandinfo; import me.svdermant.commands.monsterspawn; import me.svdermant.events.ArrowExplode; public class info extends JavaPlugin implements Listener { private static info instance; public static info getInstance() { return info.instance; } @Override public void onEnable() { loadConfig(); info.instance = this; registerEvents(); registerCommands(); this.getServer().getPluginManager().registerEvents(this, this); System.out.println("[Info] Wurde geladen und Aktiviert"); this.getCommand("Info").setExecutor(new commandinfo()); this.getCommand("InvClear").setExecutor(new Command_invclear()); this.getCommand("Daten").setExecutor(new Command_daten()); this.getCommand("Inv").setExecutor(new Command_inv()); this.getCommand("backtp").setExecutor(new Command_backtp()); this.getCommand("countdown").setExecutor(new Command_countdown()); this.getCommand("pheal").setExecutor(new Command_pheal()); this.getCommand("inforeload").setExecutor(new Command_inforeload()); this.getCommand("randomitem").setExecutor(new Command_RandomItem()); this.getCommand("monsterspawn").setExecutor(new monsterspawn()); } @Override public void onDisable() { System.out.println("[Info] Wurde deaktiviert!"); } public void loadConfig() { getConfig().options().copyDefaults(true); saveConfig(); } public void registerEvents( ) { new TheEvents(this); new ArrowExplode(this); } public void registerCommands() { SpawnBlockCommand cSpawnBlockCommand = new SpawnBlockCommand(this); getCommand("spawnblock").setExecutor(cSpawnBlockCommand); } } Umgeschriebener Command: Link to comment Share on other sites More sharing options...
Joey Posted September 26, 2023 Share Posted September 26, 2023 Die Fehlermeldung sagt dir doch, dass deine übergebenen Argumente nicht zu den Argumenten passt die von der Funktion erwartet wird. Wenn du genauer hinguckst erwartet die Funktion 2 Argumente (Location, Material). Du übergibst ein Argument zu viel. Link to comment Share on other sites More sharing options...
Squall Posted September 26, 2023 Author Share Posted September 26, 2023 vor 2 Stunden schrieb Joey: Die Fehlermeldung sagt dir doch, dass deine übergebenen Argumente nicht zu den Argumenten passt die von der Funktion erwartet wird. Wenn du genauer hinguckst erwartet die Funktion 2 Argumente (Location, Material). Du übergibst ein Argument zu viel. Ich will ja deine Info nicht infrage stellen du versuchst ja schlieslich zu helfen deswegen erstmal danke.. Ja ich weis das Byte data depricate ist. Nehm ich aber den 3. wert weg. will er dennoch irgendwie den 3. wert haben. Er schlägt mir ja ein Quickfix vor wo er dennoch irgendwie das byte möchte siehe bild. Also das entfernen von Material.valueOf(Blockname).getData() hat in demsinne nix gebracht. Ebefalls funktioniert nicht die Manuelle angabe: Er möchte also ein 3. wert nähmlich das byte glaub ich.. Dies erhalte ich ja durch Material.valueOf(Blockname).getData() Sollte ja richtig sein. Link to comment Share on other sites More sharing options...
Joey Posted September 26, 2023 Share Posted September 26, 2023 Kann es leider gerade nicht testen, aber probiere es mal mit p.getWorld().spawnFallingBlock(p.getLocation(), Material.STONE.createBlockData()); 1 Link to comment Share on other sites More sharing options...
Squall Posted September 26, 2023 Author Share Posted September 26, 2023 vor 53 Minuten schrieb Joey: Kann es leider gerade nicht testen, aber probiere es mal mit p.getWorld().spawnFallingBlock(p.getLocation(), Material.STONE.createBlockData()); Yahhh Wunderbar also wieder etwas neues ... und ich dachte mittels Material.STONE.getData(), kommt man halt an die fehlenden Bytes. Link to comment Share on other sites More sharing options...
Squall Posted September 26, 2023 Author Share Posted September 26, 2023 Mir ist was aufgefallen bei meinem Code oder generell ist das vllt so... package me.svdermant.commands; import org.apache.commons.lang3.EnumUtils; 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.scheduler.BukkitRunnable; import me.svdermant.info.info; public class SpawnBlockCommand implements CommandExecutor { private info plugin; public SpawnBlockCommand(info info) { this.plugin = info; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(sender instanceof Player) { Player p = (Player) sender; if (args.length == 1) { String Blockname = args[0]; if(EnumUtils.isValidEnum(Material.class, Blockname) == true && Material.valueOf(Blockname).isBlock()) { //Hiermit Prüfe ich nun ob das Angegebene Argument was in einen String Blockname Gespeichert wird Als Material existiert aber auch gleichzeite ob dies ein block ist.. p.sendMessage("Watch out a Falling Block is falling down move!"); new BukkitRunnable() { public void run() { p.getWorld().spawnFallingBlock(p.getLocation().add(0, 10, 0), Material.valueOf(Blockname).createBlockData()); } }.runTaskLater(plugin, 20L * 3L); } else { p.sendMessage("Invalid Blockname"); } } else { p.sendMessage("Use: /SpawnBlock <blockname> to spawn a falling Block"); } } return true; } } if(EnumUtils.isValidEnum(Material.class, Blockname) == true && Material.valueOf(Blockname).isBlock()) { //Hiermit Prüfe ich nun ob das Angegebene Argument was in einen String Blockname Gespeichert wird Als Material existiert //aber auch gleichzeite ob dies ein block ist.. Folgender test Ingame gebe ich /spawnBlock DIAMOND ein wird mir wiedergegeben Invalid Blockname soweit stimmt das ja denn Diamond ist ein item... Gebe ich aber /Spawnblock OAK_SAPLING an so bekomme ich diesen.. Ist Zählt der OAK_SAPLING nicht als Item bzw MATERIAL sondern als block muss ja so sein denn man kann ihn ja platzieren... Was man bei einem Diamond nicht kann.. Mich hat es nur eben verwundert Link to comment Share on other sites More sharing options...
TileEntity Posted September 27, 2023 Share Posted September 27, 2023 Setzlinge zählen als non-solid blocks - Also Blöcke, wo Spieler/Entities durchlaufen können https://minecraft.fandom.com/wiki/Category:Non-solid_blocks Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now