Hilfe und so *-* Bossbar :)

Dieses Thema im Forum "Programmierung" wurde erstellt von [Dev] iTzSasukeHDxLP, 11. März 2014.

  1. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Ja ich war mal wieder am wilden rumexperimentieren und da kam das hier bei raus:

    Code (Text):
    1. package Commands;
    2.  
    3. import me.confuser.barapi.BarAPI;
    4.  
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. public class COMMAND_showbar extends JavaPlugin implements CommandExecutor {
    12.  
    13.     @SuppressWarnings("deprecation")
    14.     @Override
    15.     public boolean onCommand(CommandSender sender, Command cmd, String label,
    16.             String[] args) {
    17.         final Player p = (Player) sender;
    18.         if(cmd.getName().equalsIgnoreCase("bar")){
    19.            
    20.                    
    21.            
    22.            
    23.  
    24.            
    25.             final String message = "§cMYsteryWorlds §7- §eRPG und Minigames - §bMysteryWorlds.de";
    26.             BarAPI.setMessage(p, message);
    27.             BarAPI.setHealth(p, 100);
    28.            
    29.            
    30.             getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
    31.  
    32.                 public void run() {
    33.                     float Percent_old = BarAPI.getHealth(p);
    34.                     if (Percent_old == 0){
    35.                         BarAPI.removeBar(p);
    36.                         BarAPI.setMessage(p, message);
    37.                         BarAPI.setHealth(p, 100);
    38.  
    39.                     }else{
    40.                         BarAPI.removeBar(p);
    41.                         BarAPI.setMessage(p, message);
    42.                         BarAPI.setHealth(p, Percent_old-10);
    43.                     }
    44.  
    45.                 }
    46.             }, 60L, 200L); 
    47.         }
    48.  
    49.         return true;
    50.     }
    51.    
    52.    
    53.    
    54.    
    55.  
    56. }
    57.  
    58.  

    Sinn: Die Bossbar wird gesetzt und soll nach gegebener Zeit mit verringertem Health wieder erscheinen :)

    Was passiert ingame: Garnichts. Der Befehl "bar" wird beim joinen ausgeführt.
     
    #1
  2. Chrito_miner
    Offline

    Chrito_miner

    Registriert seit:
    19. Oktober 2013
    Beiträge:
    2
    Ich arbeite oft mit der Bar-API, Verschs mal so:


    Code (Text):
    1.  
    2. public int enderbar = 0;
    3. getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
    4.      public void run() {
    5.      enderbar += 1;        
    6.            
    7. if (enderbar == 1) {
    8.     for (Player p : Bukkit.getOnlinePlayers()) {
    9.       BarAPI.setMessage(p, "deine MSG");
    10.       BarAPI.setHealth(p, 100.0F);
    11.     }
    12. }
    13. if (enderbar == 2) {
    14.     for (Player p : Bukkit.getOnlinePlayers()) {
    15.       BarAPI.setMessage(p, "deine MSG");
    16.       BarAPI.setHealth(p, 100.0F);
    17.     }
    18. }
    19. if (enderbar == 3) {
    20.     for (Player p : Bukkit.getOnlinePlayers()) {
    21.       BarAPI.setMessage(p, "deine MSG");
    22.       BarAPI.setHealth(p, 100.0F);
    23.     }
    24. }
    25. if (enderbar == 4) {
    26.     for (Player p : Bukkit.getOnlinePlayers()) {
    27.       BarAPI.setMessage(p, "deine MSG");
    28.       BarAPI.setHealth(p, 100.0F);
    29.     }
    30. enderbar = 0;
    31. }
    32. }, 60L, 200L);
    33.  
    Ich hoffe ich konnte helfen :)
    mfg. Tobi
     
    #2
  3. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Kannst du meins bitte entsprechend umschreiben ?
     
    #3
  4. Paulomart
    Offline

    Paulomart

    Registriert seit:
    3. November 2013
    Beiträge:
    148
    Ort:
    C:/Eclipse/Workspace/
    Minecraft:
    Paulomart
    Du musst auf Float Casten

    Code (Text):
    1. BarAPI.setHealth(p, (float (Percent_old-10)));
    (Das oben macht nicht was du willst)
     
    #4
  5. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    An der stelle nimmt er kein float


    Ich probiers mal so:
    Code (Text):
    1. BarAPI.setHealth(p, ((float) (Percent_old-10)));
     
    #5
  6. Paulomart
    Offline

    Paulomart

    Registriert seit:
    3. November 2013
    Beiträge:
    148
    Ort:
    C:/Eclipse/Workspace/
    Minecraft:
    Paulomart
    Doch, du willst im prinzip die Methode hier:

    Code (Text):
    1. /**
    2.      * Set a message for all players.<br>
    3.      * It will remain there for each player until the player logs off or another plugin overrides it.<br>
    4.      * This method will show a health bar using the given percentage value and will cancel any running timers.
    5.      *
    6.      * @param message
    7.      *            The message shown to the player.<br>
    8.      *            Due to limitations in Minecraft this message cannot be longer than 64 characters.<br>
    9.      *            It will be cut to that size automatically.
    10.      * @param percent
    11.      *            The percentage of the health bar filled.<br>
    12.      *            This value must be between 0F (inclusive) and 100F (inclusive).
    13.      * @throws IllegalArgumentException
    14.      *             If the percentage is not within valid bounds.
    15.      * @see BarAPI#setMessage(player, message, percent)
    16.      */
    17.     public void setMessage(String message, float percent) {
    Die wird aber überschreiben von

    Code (Text):
    1. /**
    2.      * Set a message for all players.<br>
    3.      * It will remain there for each player until the player logs off or another plugin overrides it.<br>
    4.      * This method will use the health bar as a decreasing timer, all previously started timers will be cancelled.<br>
    5.      * The timer starts with a full bar.<br>
    6.      * The health bar will be removed automatically if it hits zero.
    7.      *
    8.      * @param message
    9.      *            The message shown.<br>
    10.      *            Due to limitations in Minecraft this message cannot be longer than 64 characters.<br>
    11.      *            It will be cut to that size automatically.
    12.      * @param seconds
    13.      *            The amount of seconds displayed by the timer.<br>
    14.      *            Supports values above 1 (inclusive).
    15.      * @throws IllegalArgumentException
    16.      *             If seconds is zero or below.
    17.      * @see BarAPI#setMessage(player, message, seconds)
    18.      */
    19.     public void setMessage(String message, int seconds) {
    Deine Variable ist vom Typ int, deswegen verwendet Java die mit int secunds.

    So:

    Code (Text):
    1. BarAPI.setMessage("bla", ((float) 12 - 3 ));
     
    #6
  7. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Danke ich hoffe es funzt jetzt :)



    Edit: Ich habe eine Loesung: anscheinend werden externe Klassen aus einem anderen Package nicht angenommen wenn man sie in der main importiert, wenn man in ihnen "extends JavaPlugin" nutzt(Nach der Loeschung davon ging zumindest ein einfacher Code wieder... Warum o.o
    Ausserdem; Wie soll ich sonst nen Scheduler einbauen ?
    War ja zu erwarten..

    Neuer Code:

    Code (Text):
    1. public class onPlayerJoin implements Listener {
    2.    
    3.    
    4.     @SuppressWarnings({ "deprecation", "unchecked" })
    5.     @EventHandler(priority = EventPriority.HIGHEST)
    6.     public void OnPlayerJoin(PlayerJoinEvent e){
    7.         final Player p = e.getPlayer();
    8.         e.setJoinMessage("§7[§cMysteryworlds§7]§7: " + p.getName() + " §eist dem Spiel beigetreten!" );
    9.         p.setMaxHealth(20);
    10.         final String message = "§4Mysteryworlds §7- §cRPG §7 - §eMinigames";
    11.        
    12.        
    13.        
    14.         Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask((Plugin) this, new Runnable() {
    15.  
    16.             public void run() {
    17.                 float Percent_old = BarAPI.getHealth(p);
    18.                 if (Percent_old == 0){
    19.                     BarAPI.removeBar(p);
    20.                     BarAPI.setMessage(message);
    21.  
    22.                 }else{
    23.                     BarAPI.removeBar(p);
    24.                     BarAPI.setMessage(message);
    25.                     BarAPI.setHealth(p, Percent_old - 10 );
    26.                 }
    27.  
    28.             }
    29.         }, 60L, 200L); 
    30.         p.performCommand("music");
    31.        
    32.         me.sasuke.main.main.Onlinespieler.add(p);
    33.        
    34.     }
    35.    
    36. }
     
    #7