ServerPlugin Enchantments auf Schildern

Dieses Thema im Forum "Programmierung" wurde erstellt von LoganBwDE, 26. Juli 2015.

  1. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Ort:
    Abtsgmünd
    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 (Text):
    1.  
    2. @EventHandler
    3.     public void onSignCreate(SignChangeEvent event)
    4.     {
    5.           Player p = event.getPlayer();
    6.           Sign schild = (Sign)event.getBlock().getState();
    7.            if(event.getLine(3).contains(":"))
    8.           {
    9.             final String[] enchid = schild.getLine(3).split(":");
    10.             if(enchid.length != 2)
    11.             {
    12.                 p.sendMessage(ChatColor.translateAlternateColorCodes('&', lengtherror));
    13.                 event.getBlock().setType(Material.AIR);
    14.                 return;
    15.             }
    16.             final Enchantment ench =  Enchantment.getByName(enchid[0]);
    17.             if(ench == null)
    18.             {
    19.                 p.sendMessage(ChatColor.translateAlternateColorCodes('&', enchnotfound));
    20.                 event.getBlock().setType(Material.AIR);
    21.                 return;
    22.             }
    23.             try
    24.             {
    25.                  ench2 = Integer.parseInt(enchid[1]);
    26.             }
    27.             catch (NumberFormatException e)
    28.             {
    29.                  p.sendMessage(error);
    30.              }
    31.           }  
    32.      }        
    33.  
    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
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Benutz final String[] enchid = event.getLine(3).split(":"); in Zeile 9
     
    #2
  3. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Ort:
    Abtsgmünd
    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 (Text):
    1.  
    2. public void onSignCreate(SignChangeEvent event)
    3.     {
    4.       Player p = event.getPlayer();
    5.       Sign schild = (Sign)event.getBlock().getState();
    6. if(event.getLine(3).contains(":"))
    7.           {
    8.             final String[] enchid = event.getLine(3).split(":");
    9.             String encha1 = enchid[0];
    10.             String encha2 = enchid[1];
    11.            
    12.             nench1 = Integer.parseInt(encha1);
    13.             nench2 = Integer.parseInt(encha2);
    14.            
    15.             if(enchid.length != 2)
    16.             {
    17.                 p.sendMessage(ChatColor.translateAlternateColorCodes('&', lengtherror + " Die Laenge betraegt naemlich " + enchid[0] + " " + enchid[1] ));
    18.                 event.getBlock().setType(Material.AIR);
    19.                 return;
    20.             }
    21.             final Enchantment ench = Enchantment.getById(nench1);
    22.             if(ench == null)
    23.             {
    24.                 p.sendMessage(ChatColor.translateAlternateColorCodes('&', enchnotfound));
    25.                 event.getBlock().setType(Material.AIR);
    26.                 return;
    27.             }
    28.             try
    29.                 {
    30.                     //ench2 = Integer.parseInt(enchid[1]);
    31.                   }
    32.                 catch (NumberFormatException e)
    33.                 {
    34.                   p.sendMessage(error);
    35.                 }
    36.           }
    37.           ench2 = nench2;
    38.  
    Das der Code zum Erstellen des Inventars:

    Code (Text):
    1.  
    2.  public Inventory createInventory(int id,int number)
    3.     {
    4.        
    5.         ItemStack inv = new ItemStack(id, number);
    6.         inv.addUnsafeEnchantment(ench, ench2);
    7.        Inventory invent = Bukkit.createInventory(null, 9,"§b" + invname);
    8.        for (int i = 0; i < invent.getSize(); i++)
    9.        {
    10.           invent.setItem(4, inv);
    11.        }
    12.        return invent;
    13.     }
    14.  
     
    #3
  4. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Ort:
    Abtsgmünd
    Minecraft:
    LoganBwDE
    #pushittothetop
     
    #4
  5. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Code (Text):
    1. //ench2 = Integer.parseInt(enchid[1]);
    Sehr schlau zu versuchen auf ein Objekt zuzugreifen das ein Kommentar ist.
     
    #5
  6. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Ort:
    Abtsgmünd
    Minecraft:
    LoganBwDE
    Das hab ich extra auskommentiert :D Auch wenn ichs nicht kommentiere funktioniert es nicht
     
    #6