1. 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!

PlugIn Schilder update

Dieses Thema im Forum "Programmierung" wurde erstellt von xXGamer_StyleXx, 18. Juli 2015.


  1. xXGamer_StyleXx
    Offline

    xXGamer_StyleXx

    Registriert seit:
    4. Mai 2015
    Beiträge:
    11
    Geschlecht:
    männlich
    Ich bin zurzeit dabei ein Skypvp Plugin zu programmieren und möchte einbauen das man sich für 15 Level 1 Netherstern kaufen kann und auch umgedreht. Das ganze soll über Schilder laufen.

    Code (Javascript):
    1. package eu.gmc.skypvp;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.block.Block;
    5. import org.bukkit.block.Sign;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.BlockPlaceEvent;
    9.  
    10.  
    11. public class BlockPlaceListener implements Listener {
    12.    
    13.     String line0 = "&b[SkyPvP]";
    14.     String line1 = "&6KAUFEN";
    15.     String line2 = "&41Netherstern";
    16.     String line3 = "&415XP";
    17.    
    18.    
    19.     @EventHandler
    20.     public void onPlace(BlockPlaceEvent e){
    21.        
    22.         Block b = e.getBlock();
    23.         Sign sign;
    24.        
    25.         if(b.getType() != Material.SIGN){
    26.             return;
    27.         }
    28.        
    29.         sign = (Sign) b;
    30.        
    31.         if(sign.getLine(0).equalsIgnoreCase("[kaufen]")){
    32.             sign.setLine(0, line0);
    33.             sign.setLine(1, line1);
    34.             sign.setLine(2, line2);
    35.             sign.setLine(3, line3);
    36.             sign.update();
    37.         }
    38.        
    39.         if(sign.getLine(0).equalsIgnoreCase("[verkaufen]")){
    40.            
    41.             line1 = "&6VERKAUFEN";
    42.             line2 = "&410XP";
    43.             line3 = "&41Netherstern";
    44.            
    45.             sign.setLine(0, line0);
    46.             sign.setLine(1, line1);
    47.             sign.setLine(2, line2);
    48.             sign.setLine(3, line3);
    49.             sign.update();
    50.         }
    51.        
    52.        
    53.        
    54.     }
    55.  
    56. }
    57.  
    Wenn ich jetzt jedoch ein Schild platziere wo in der 1. Zeile [kaufen] steht wird dieses nicht geupdatet und funktioniert dadurch nicht(Da in einer anderen Klasse die 2. Zeile abgefragt wird). Die Frage ist nun, was muss ich tun das dieses Schild geupdatet wird und der Text auch angezeigt wird.
     
  2. SasukeKawaii
    Offline

    SasukeKawaii Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    1.006
    Geschlecht:
    männlich
    Minecraft:
    SasukeKawaii
    Du müsstest das SignChangeEvent benutzen - Das ist der Moment, in dem Text auf das Schild geschrieben wurde. Den Text fängst du dann ab und veränderst ihn.
     
  3. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Geschlecht:
    männlich
    Minecraft:
    LoganBwDE
    Dazu ein kleiner Beißspiel-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(0).equalsIgnoreCase("[kaufen]"))
    8.       {
    9.            //hier dein Code, der die Zeilen setzt ;)
    10.       }
    11.     }
    12.  
     
  4. xXGamer_StyleXx
    Offline

    xXGamer_StyleXx

    Registriert seit:
    4. Mai 2015
    Beiträge:
    11
    Geschlecht:
    männlich
    werde es gleich mal testen wenn es wirklich daran liegt ist es ja ein verdammt peinlicher Fehler xD
     
  5. xXGamer_StyleXx
    Offline

    xXGamer_StyleXx

    Registriert seit:
    4. Mai 2015
    Beiträge:
    11
    Geschlecht:
    männlich
    Leider funktioniert das ganze immer noch nicht mein Aktueller Code:

    Code ( (Unknown Language)):
    1. package eu.gmc.skypvp;
    2.  
    3. import org.bukkit.block.Sign;
    4. import org.bukkit.event.EventHandler;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.event.block.SignChangeEvent;
    7.  
    8. public class SignChangeListener implements Listener {
    9.    
    10.    
    11.     String line0 = "&b[SkyPvP]";
    12.     String line1 = "&6KAUFEN";
    13.     String line2 = "&41Netherstern";
    14.     String line3 = "&415XP";
    15.    
    16.     @EventHandler
    17.     public void onChange(SignChangeEvent e){
    18.        
    19.         Sign sign = (Sign) e.getBlock().getState();
    20.        
    21.         if(sign.getLine(0).contentEquals("[kaufen]")){
    22.             sign.setLine(0, line0);
    23.             sign.setLine(1, line1);
    24.             sign.setLine(2, line2);
    25.             sign.setLine(3, line3);
    26.             sign.update();
    27.         }
    28.        
    29.         if(sign.getLine(0).equalsIgnoreCase("[verkaufen]")){
    30.            
    31.             line1 = "&6VERKAUFEN";
    32.             line2 = "&410XP";
    33.             line3 = "&41Netherstern";
    34.            
    35.             sign.setLine(0, line0);
    36.             sign.setLine(1, line1);
    37.             sign.setLine(2, line2);
    38.             sign.setLine(3, line3);
    39.             sign.update();
    40.         }
    41.        
    42.     }
    43.  
    44. }
    45.  
     
  6. LoganBwDE
    Offline

    LoganBwDE

    Registriert seit:
    26. November 2014
    Beiträge:
    184
    Geschlecht:
    männlich
    Minecraft:
    LoganBwDE
    Die Abfrage sowie das Setzen muss mit dem event (hier e) gemacht werden.
    Code (Text):
    1.  
    2. if (e.getLine(0).equalsIgnoreCase("[kaufen]"))
    3. {
    4.             e.setLine(0, line0);
    5.             e.setLine(1, line1);
    6.             e.setLine(2, line2);
    7.             e.setLine(3, line3);
    8.             sign.update(true);
    9. }
    10.  
    EDIT: Problem wird auch sein, wenn du ein "verkaufen" Schild erstellt hast, so kannst du kein "kaufen" Schild mehr erstellen, da die Werte oben nur definiert werden für kaufen, jedoch beim SignChangeEvent mit gesetzt werden müssen oder so, dass diese dann halt geändert werden wie bei "verkaufen".
     
  7. xXGamer_StyleXx
    Offline

    xXGamer_StyleXx

    Registriert seit:
    4. Mai 2015
    Beiträge:
    11
    Geschlecht:
    männlich
    Jetzt funktioniert alles :) Danke für die gute Hilfe und habe das mit dem verkaufen Schild gefixxt :D