Skocz do zawartości

Użycie ActionBara


Rekomendowane odpowiedzi

5 minut temu, Bielecki napisał:
  • ilość botów na serwerze
  • procent ukończenia serwera
  • zegar
  • hp
  • tpsy
  • ping
  • głód
  • odliczanie czasu do następnego końca świata

:kappa:

Zrobię tylko ostatni punkt :kappa:

 

Edytowane przez McKoxu
Odnośnik do komentarza
https://skript.pl/temat/21220-u%C5%BCycie-actionbara/#findComment-144191
Udostępnij na innych stronach

Bossbar :kappa:

public class Bossbar {
		private static HashMap<Player, EntityEnderDragon> HealthBars = new HashMap<Player, EntityEnderDragon>();
		
		public static boolean hasBar(Player p) {
			if(HealthBars.containsKey(p)) return true;
			return false;
		}
		public static boolean displayBar(Player player, String text, int time){
			if(hasBar(player)) return false;
			Location loc = player.getLocation();
			WorldServer world = ((CraftWorld) player.getLocation().getWorld()).getHandle();
			EntityEnderDragon dragon = new EntityEnderDragon(world);
			dragon.setLocation(loc.getX(), -200, loc.getZ(), 0, 0);
			dragon.setCustomName(text);
			dragon.setInvisible(true);
			HealthBars.put(player, dragon);
			Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
			((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
			update(player,time,200);
			return true;
		}
		public static boolean displayBar(Player player, String text, int time, int startHP){
			if(hasBar(player)) return false;
			Location loc = player.getLocation();
			WorldServer world = ((CraftWorld) player.getLocation().getWorld()).getHandle();
			EntityEnderDragon dragon = new EntityEnderDragon(world);
			dragon.setLocation(loc.getX(), -200, loc.getZ(), 0, 0);
			dragon.setCustomName(text);
			dragon.setInvisible(true);
			HealthBars.put(player, dragon);
			Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
			((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
			update(player,time,startHP);
			return true;
		}
		private static void update(Player p, int time, int hp) {
			new BukkitRunnable(){
				int health = hp;
				int remove = health/time;
				
				@Override
				public void run(){
					if(!HealthBars.containsKey(p)) {
						this.cancel();
					}
					Location loc = p.getLocation();
					if(health > 0){
						health = health-remove;
						EntityEnderDragon dragon = HealthBars.get(p);
						dragon.setLocation(loc.getX() - 30, -200, loc.getZ(), 0, 0);
						dragon.setHealth((float) health);
						Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
				        ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
					} else {
						
						PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(HealthBars.get(p).getBukkitEntity().getEntityId());
				        ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
				        HealthBars.remove(p);
						this.cancel();
					}
				}
			}.runTaskTimer(rhDrop.getInst(), 20, 20);
		}
}

 

Odnośnik do komentarza
https://skript.pl/temat/21220-u%C5%BCycie-actionbara/#findComment-144265
Udostępnij na innych stronach

26 minut temu, Inder00 napisał:

Bossbar :kappa:


public class Bossbar {
		private static HashMap<Player, EntityEnderDragon> HealthBars = new HashMap<Player, EntityEnderDragon>();
		
		public static boolean hasBar(Player p) {
			if(HealthBars.containsKey(p)) return true;
			return false;
		}
		public static boolean displayBar(Player player, String text, int time){
			if(hasBar(player)) return false;
			Location loc = player.getLocation();
			WorldServer world = ((CraftWorld) player.getLocation().getWorld()).getHandle();
			EntityEnderDragon dragon = new EntityEnderDragon(world);
			dragon.setLocation(loc.getX(), -200, loc.getZ(), 0, 0);
			dragon.setCustomName(text);
			dragon.setInvisible(true);
			HealthBars.put(player, dragon);
			Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
			((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
			update(player,time,200);
			return true;
		}
		public static boolean displayBar(Player player, String text, int time, int startHP){
			if(hasBar(player)) return false;
			Location loc = player.getLocation();
			WorldServer world = ((CraftWorld) player.getLocation().getWorld()).getHandle();
			EntityEnderDragon dragon = new EntityEnderDragon(world);
			dragon.setLocation(loc.getX(), -200, loc.getZ(), 0, 0);
			dragon.setCustomName(text);
			dragon.setInvisible(true);
			HealthBars.put(player, dragon);
			Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
			((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
			update(player,time,startHP);
			return true;
		}
		private static void update(Player p, int time, int hp) {
			new BukkitRunnable(){
				int health = hp;
				int remove = health/time;
				
				@Override
				public void run(){
					if(!HealthBars.containsKey(p)) {
						this.cancel();
					}
					Location loc = p.getLocation();
					if(health > 0){
						health = health-remove;
						EntityEnderDragon dragon = HealthBars.get(p);
						dragon.setLocation(loc.getX() - 30, -200, loc.getZ(), 0, 0);
						dragon.setHealth((float) health);
						Packet packet = new PacketPlayOutSpawnEntityLiving(dragon);
				        ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
					} else {
						
						PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(HealthBars.get(p).getBukkitEntity().getEntityId());
				        ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
				        HealthBars.remove(p);
						this.cancel();
					}
				}
			}.runTaskTimer(rhDrop.getInst(), 20, 20);
		}
}

 

To na 100% tutaj?

Odnośnik do komentarza
https://skript.pl/temat/21220-u%C5%BCycie-actionbara/#findComment-144267
Udostępnij na innych stronach

  • Szifter zablokował(a) ten temat
Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...