• 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!

Hilfe und so *-* Bossbar :)

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Ja ich war mal wieder am wilden rumexperimentieren und da kam das hier bei raus:

Code:
package Commands;

import me.confuser.barapi.BarAPI;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class COMMAND_showbar extends JavaPlugin implements CommandExecutor {

	@SuppressWarnings("deprecation")
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label,
			String[] args) {
		final Player p = (Player) sender; 
		if(cmd.getName().equalsIgnoreCase("bar")){
			
					
			
			

			
			final String message = "§cMYsteryWorlds §7- §eRPG und Minigames - §bMysteryWorlds.de";
			BarAPI.setMessage(p, message);
			BarAPI.setHealth(p, 100);
			
			
			getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {

				public void run() {
					float Percent_old = BarAPI.getHealth(p);
					if (Percent_old == 0){
						BarAPI.removeBar(p);
						BarAPI.setMessage(p, message);
						BarAPI.setHealth(p, 100);

					}else{
						BarAPI.removeBar(p);
						BarAPI.setMessage(p, message);
						BarAPI.setHealth(p, Percent_old-10);
					}

				}
			}, 60L, 200L);	
		}

		return true;
	}
	
	
	
	

}


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.
 

Chrito_miner

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


Code:
public int enderbar = 0;
getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
     public void run() {
     enderbar += 1;	       
	       
if (enderbar == 1) {
	for (Player p : Bukkit.getOnlinePlayers()) {
	  BarAPI.setMessage(p, "deine MSG");
	  BarAPI.setHealth(p, 100.0F);
    }
}
if (enderbar == 2) {
	for (Player p : Bukkit.getOnlinePlayers()) {
	  BarAPI.setMessage(p, "deine MSG");
	  BarAPI.setHealth(p, 100.0F);
    }
}
if (enderbar == 3) {
	for (Player p : Bukkit.getOnlinePlayers()) {
	  BarAPI.setMessage(p, "deine MSG");
	  BarAPI.setHealth(p, 100.0F);
    }
}
if (enderbar == 4) {
	for (Player p : Bukkit.getOnlinePlayers()) {
	  BarAPI.setMessage(p, "deine MSG");
	  BarAPI.setHealth(p, 100.0F);
    }
enderbar = 0;
}
}, 60L, 200L);

Ich hoffe ich konnte helfen :)
mfg. Tobi
 

Paulomart

Schafhirte
Registriert
3 November 2013
Beiträge
147
Diamanten
0
Minecraft
Paulomart
Doch, du willst im prinzip die Methode hier:

Code:
/**
	 * Set a message for all players.<br>
	 * It will remain there for each player until the player logs off or another plugin overrides it.<br>
	 * This method will show a health bar using the given percentage value and will cancel any running timers.
	 * 
	 * @param message
	 *            The message shown to the player.<br>
	 *            Due to limitations in Minecraft this message cannot be longer than 64 characters.<br>
	 *            It will be cut to that size automatically.
	 * @param percent
	 *            The percentage of the health bar filled.<br>
	 *            This value must be between 0F (inclusive) and 100F (inclusive).
	 * @throws IllegalArgumentException
	 *             If the percentage is not within valid bounds.
	 * @see BarAPI#setMessage(player, message, percent)
	 */
	public void setMessage(String message, float percent) {

Die wird aber überschreiben von

Code:
/**
	 * Set a message for all players.<br>
	 * It will remain there for each player until the player logs off or another plugin overrides it.<br>
	 * This method will use the health bar as a decreasing timer, all previously started timers will be cancelled.<br>
	 * The timer starts with a full bar.<br>
	 * The health bar will be removed automatically if it hits zero.
	 * 
	 * @param message
	 *            The message shown.<br>
	 *            Due to limitations in Minecraft this message cannot be longer than 64 characters.<br>
	 *            It will be cut to that size automatically.
	 * @param seconds
	 *            The amount of seconds displayed by the timer.<br>
	 *            Supports values above 1 (inclusive).
	 * @throws IllegalArgumentException
	 *             If seconds is zero or below.
	 * @see BarAPI#setMessage(player, message, seconds)
	 */
	public void setMessage(String message, int seconds) {

Deine Variable ist vom Typ int, deswegen verwendet Java die mit int secunds.

So:

Code:
BarAPI.setMessage("bla", ((float) 12 - 3 ));
 
Zuletzt bearbeitet:

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
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:
public class onPlayerJoin implements Listener {
	
	
	@SuppressWarnings({ "deprecation", "unchecked" })
	@EventHandler(priority = EventPriority.HIGHEST)
	public void OnPlayerJoin(PlayerJoinEvent e){
		final Player p = e.getPlayer();
		e.setJoinMessage("§7[§cMysteryworlds§7]§7: " + p.getName() + " §eist dem Spiel beigetreten!" );
		p.setMaxHealth(20);
		final String message = "§4Mysteryworlds §7- §cRPG §7 - §eMinigames";
		
		
		
		Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask((Plugin) this, new Runnable() {

			public void run() {
				float Percent_old = BarAPI.getHealth(p);
				if (Percent_old == 0){
					BarAPI.removeBar(p);
					BarAPI.setMessage(message);

				}else{
					BarAPI.removeBar(p);
					BarAPI.setMessage(message);
					BarAPI.setHealth(p, Percent_old - 10 );
				}

			}
		}, 60L, 200L);	
		p.performCommand("music");
		
	    me.sasuke.main.main.Onlinespieler.add(p);
		
	}
	
}
 
Zuletzt bearbeitet:
Oben