Brenner_HD Posted May 22, 2016 Posted May 22, 2016 Hallo liebe Community, ich habe ein Problem , denn ich bin kurz davor mein Bedwars Plugin zu beenden und habe ein Problem: Hier Spawnt der das "Modifizierte" Item Bronze: public void startSpawners () { Bukkit.getScheduler().scheduleSyncRepeatingTask(this.plugin, new Runnable() { @Override public void run() { ItemStack item = new ItemStack(Material.CLAY_BRICK, 1); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("Ziegel"); item.setItemMeta(meta); Spawn("bronze", item); } das geht ja alles aber jetzt ist dass Problem wenn ich im Shop also ich habe einen Villager so bearbeitet dass er ein Vituelle Inventar öffnet und dort kann man Items kaufen. Wenn ich jetzt mir 2 Sandsteine für 1 Bronze kaufe tut er mir die 2 Sandsteine ins Inventar aber zieht nicht die 1 "Modifizierte" Bronze ab, aber wenn ich normalen Clay Brick hernehme dann zieht er es ab. if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§eSandstein")) { if(p.getInventory().contains(Material.CLAY_BRICK, 1)) { p.getInventory().addItem(new ItemStack(Material.SANDSTONE, 2)); p.getInventory().removeItem(new ItemStack(Material.CLAY_BRICK, 1)); ItemStack bronze = new ItemStack(Material.CLAY_BRICK); ItemMeta bronze_meta = bronze.getItemMeta(); bronze_meta.setDisplayName("§cBronze"); bronze.setItemMeta(bronze_meta); p.updateInventory(); }else { p.sendMessage(this.plugin.prefix + "§cDu hast nicht genügend Items!"); } } Mit freundlichsten Grüßen, Brenner_HD
Derya001 Posted May 22, 2016 Posted May 22, 2016 Probier es mal so: if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§eSandstein")) { ItemStack bronze = new ItemStack(Material.CLAY_BRICK); ItemMeta bronze_meta = bronze.getItemMeta(); bronze_meta.setDisplayName("§cBronze"); bronze.setItemMeta(bronze_meta); if(p.getInventory().contains(bronze)) { p.getInventory().addItem(new ItemStack(Material.SANDSTONE, 2)); p.getInventory().removeItem(bronze); p.updateInventory(); }else { p.sendMessage(this.plugin.prefix + "§cDu hast nicht genügend Items!"); } } LG, Derya001
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Danke für deine schnelle antowort Das wollte ich ja auch mal versuchen, aber das Problem ist halt da steht "Du hast nicht genügend Items" obwohl ich ja Bronze habe
Derya001 Posted May 23, 2016 Posted May 23, 2016 Bei mir klappt es. An welcher Stelle des Plugins bekommt der Spieler denn überhaupt "Bronze", um damit bezahlen zu können? Vermutlich stimmten die beiden ItemStacks nicht überein (also das bronze welches du ihm gibst, und das was du ihm abziehst). LG, Derya001
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Das is die gesamte Spawner klasse dort wird "Bronze" gespawnt: package Methods; import java.io.File; import java.io.IOException; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import bedwars.Bedwars; public class Spawner implements Listener{ private Bedwars plugin; public Spawner(Bedwars plugin) { this.plugin = plugin; } public Integer setSpawn(String type, Location loc) { int i = 0; File file = new File(plugin.getDataFolder().getPath(), "Spawner.yml"); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); i = cfg.getInt(type + ".amount"); i++; cfg.set(type + ".amount", i); cfg.set(type + "." + i + ".world", loc.getWorld().getName()); cfg.set(type + "." + i + ".x", loc.getX()); cfg.set(type + "." + i + ".y", loc.getY()); cfg.set(type + "." + i + ".z", loc.getZ()); try { cfg.save(file); } catch (IOException e) { Bukkit.broadcastMessage(this.plugin.prefix + "§l§cEs gab einen Fehler bei der Speicherung!"); e.printStackTrace(); } return i; } private void Spawn(String type, ItemStack item) { File file = new File(this.plugin.getDataFolder().getPath(), "Spawner.yml"); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); int amount = cfg.getInt(type + ".amount"); for(int i = 1; i < amount+1; i++) { String world = cfg.getString(type + "." + i + ".world"); double x = cfg.getDouble(type + "." + i + ".x"); double y = cfg.getDouble(type + "." + i + ".y"); double z = cfg.getDouble(type + "." + i + ".z"); Location loc = new Location(Bukkit.getWorld(world), x, y, z); loc.getWorld().dropItemNaturally(loc, item); } } public void startSpawners () { Bukkit.getScheduler().scheduleSyncRepeatingTask(this.plugin, new Runnable() { @Override public void run() { ItemStack item = new ItemStack(Material.CLAY_BRICK, 1); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§cBronze"); item.setItemMeta(meta); Spawn("bronze", item); } }, 20, 20); Bukkit.getScheduler().scheduleSyncRepeatingTask(this.plugin, new Runnable() { @Override public void run() { ItemStack item = new ItemStack(Material.IRON_INGOT); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§7Silber"); item.setItemMeta(meta); Spawn("silber", item); } }, 200, 200); Bukkit.getScheduler().scheduleSyncRepeatingTask(this.plugin, new Runnable() { @Override public void run() { ItemStack item = new ItemStack(Material.GOLD_INGOT); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§6Gold"); item.setItemMeta(meta); Spawn("gold", item); } }, 600, 600); } }
Derya001 Posted May 23, 2016 Posted May 23, 2016 Probier beim spawnen bitte mal folgenden Code für deine Items: ItemStack item = new ItemStack(Material.CLAY_BRICK); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§cBronze"); item.setItemMeta(meta); Spawn(item);
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Ne leider auch nicht, da steht immer du hast nicht genügend Items
Derya001 Posted May 23, 2016 Posted May 23, 2016 Du darfst natürlich dann nicht die alten Items von vorher benutzen. Zuerst den Server neu starten um das Plugin neu zu laden. Dann ein Item spawnen lassen und es dann mit diesem probieren. Hast du das schon gemacht?
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Ok also auch im Villager Shop item hernehmen? dass ist die spawner klasse: public void startSpawners () { Bukkit.getScheduler().scheduleSyncRepeatingTask(this.plugin, new Runnable() { @Override public void run() { ItemStack item = new ItemStack(Material.CLAY_BRICK); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§cBronze"); item.setItemMeta(meta); Spawn("bronze", item); } Villager Shop: if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§eSandstein")) { ItemStack item = new ItemStack(Material.CLAY_BRICK); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§cBronze"); item.setItemMeta(meta); if(p.getInventory().contains(item)) { p.getInventory().addItem(new ItemStack(Material.SANDSTONE, 2)); p.getInventory().removeItem(item); p.updateInventory(); }else { p.sendMessage(this.plugin.prefix + "§cDu hast nicht genügend Items!"); }
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Ich habe Plugin komplett neu drauf geladen und Server neugestartet kannst du mir den Code von dir der geht schicken wenn es geht?
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 Ok, ich habe mein Problem gefunden und die Lösung auch ich muss nicht .contains(item) sondern ich muss fragen .contains(Material.ClayBrick) und nochmals danke für deine Hilfe
Derya001 Posted May 23, 2016 Posted May 23, 2016 Komisch, mit .contains(item) funktioniert es bei mir einwandfrei. Das Problem, welches du jetzt hast, ist folgendes: jetzt kann jeder mit Clay bezahlen, egal ob es sich um dein "Bronze" handelt oder nicht.
Brenner_HD Posted May 23, 2016 Author Posted May 23, 2016 ja aber er bekommt ja eh nicht clay sondern nur "Bronze" aber irgendwie wird Silber nicht abgezogen aber ich galube ich kriege diese Problem alleine hin
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