Brenner_HD Posted May 22, 2016 Share 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 Link to comment Share on other sites More sharing options...
Derya001 Posted May 22, 2016 Share 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 Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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 Link to comment Share on other sites More sharing options...
Derya001 Posted May 23, 2016 Share 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 Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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); } } Link to comment Share on other sites More sharing options...
Derya001 Posted May 23, 2016 Share 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); Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share Posted May 23, 2016 Ne leider auch nicht, da steht immer du hast nicht genügend Items Link to comment Share on other sites More sharing options...
Derya001 Posted May 23, 2016 Share 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? Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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!"); } Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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? Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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 Link to comment Share on other sites More sharing options...
Derya001 Posted May 23, 2016 Share 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. Link to comment Share on other sites More sharing options...
Brenner_HD Posted May 23, 2016 Author Share 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 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