Jump to content

Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B