• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Enchantments auf Schildern

LoganBwDE

Miner
Registriert
26 November 2014
Beiträge
192
Diamanten
315
Minecraft
LoganBwDE
Hallöle,

und zwar komme ich leider nicht weiter. Ich habe bereits viel versucht, nun suche ich eure Hilfe.
Es geht um diesen Code:
Code:
@EventHandler
    public void onSignCreate(SignChangeEvent event)
    {
          Player p = event.getPlayer();
          Sign schild = (Sign)event.getBlock().getState();
           if(event.getLine(3).contains(":"))
          {
            final String[] enchid = schild.getLine(3).split(":");
            if(enchid.length != 2)
            {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', lengtherror));
                event.getBlock().setType(Material.AIR);
                return;
            }
            final Enchantment ench =  Enchantment.getByName(enchid[0]);
            if(ench == null)
            {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', enchnotfound));
                event.getBlock().setType(Material.AIR);
                return;
            }
            try
            {
                 ench2 = Integer.parseInt(enchid[1]);
            }
            catch (NumberFormatException e)
            {
                 p.sendMessage(error);
             }
          }  
     }

Ich möchte gerne wenn ich in der vierten Zeile ein Enchantment steht mit der zugehörigen "Stärke" des Enchantments ein Item enchanten. Jedoch klappt da etwas nicht ganz mit dem Splitten da wenn ich mir die length des Strings "enchid" ausgeben lasse, kommt nur 1 raus anstatt 2 wie erwartet. Jetzt stellt sich mir nur die Frage, was an diesem Code jetzt falsch ist. Hoffe auf ein paar konstruktive Antworten.

Gruß
LoganBwDE
 

LoganBwDE

Miner
Registriert
26 November 2014
Beiträge
192
Diamanten
315
Minecraft
LoganBwDE
Danke werd ich heute mal probiern.

EDIT: Habs mal probiert, geht jetzt auch. Doch nun will er die Enchantment nicht auf das Item packen...

Code:
public void onSignCreate(SignChangeEvent event)
    {
      Player p = event.getPlayer();
      Sign schild = (Sign)event.getBlock().getState();
if(event.getLine(3).contains(":"))
          {
            final String[] enchid = event.getLine(3).split(":");
            String encha1 = enchid[0];
            String encha2 = enchid[1];
           
            nench1 = Integer.parseInt(encha1);
            nench2 = Integer.parseInt(encha2);
           
            if(enchid.length != 2)
            {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', lengtherror + " Die Laenge betraegt naemlich " + enchid[0] + " " + enchid[1] ));
                event.getBlock().setType(Material.AIR);
                return;
            }
            final Enchantment ench = Enchantment.getById(nench1);
            if(ench == null)
            {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', enchnotfound));
                event.getBlock().setType(Material.AIR);
                return;
            }
            try
                {
                    //ench2 = Integer.parseInt(enchid[1]);
                  }
                catch (NumberFormatException e)
                {
                  p.sendMessage(error);
                }
          }
          ench2 = nench2;

Das der Code zum Erstellen des Inventars:

Code:
 public Inventory createInventory(int id,int number)
    {
       
        ItemStack inv = new ItemStack(id, number);
        inv.addUnsafeEnchantment(ench, ench2);
       Inventory invent = Bukkit.createInventory(null, 9,"§b" + invname);
       for (int i = 0; i < invent.getSize(); i++) 
       {
          invent.setItem(4, inv);
       }
       return invent;
    }
 
Zuletzt bearbeitet:
Oben