This commit is contained in:
BongoCat 2022-07-21 10:59:51 -07:00
parent 683a57af8f
commit cb4affa931
4 changed files with 27 additions and 39 deletions

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -63,8 +63,8 @@ public class BossBar {
public void delete() { public void delete() {
if (dragon != null) { if (dragon != null) {
if (dragon.created) { if (dragon.created) {
dragon.destroy();
t.cancel(); t.cancel();
dragon.destroy();
} }
} }
} }

View File

@ -23,9 +23,7 @@ public class FakeWitherCommand implements CommandExecutor {
// Count down // Count down
task = Bukkit.getServer().getScheduler().runTaskTimer(Main.getInstance(), new Runnable() { task = Bukkit.getServer().getScheduler().runTaskTimer(Main.getInstance(), () -> {
@Override
public void run() {
// Count down // Count down
bar.setHealth(bar.getHealth() - 1); bar.setHealth(bar.getHealth() - 1);
@ -33,7 +31,6 @@ public class FakeWitherCommand implements CommandExecutor {
bar.delete(); bar.delete();
task.cancel(); task.cancel();
} }
}
}, TICKS_PER_SECOND / 4, TICKS_PER_SECOND / 4); }, TICKS_PER_SECOND / 4, TICKS_PER_SECOND / 4);
} }
return true; return true;

View File

@ -44,10 +44,12 @@ public class SpawnFakeWither extends JavaPlugin {
public Location location; public Location location;
public ProtocolManager manager; public ProtocolManager manager;
public Player p;
public FakeWither(Player p, ProtocolManager manager) { public FakeWither(Player p, ProtocolManager manager) {
this.location = new Location(p.getWorld(), p.getLocation().getX(), -5, p.getLocation().getZ()); this.location = new Location(p.getWorld(), p.getLocation().getX(), -5, p.getLocation().getZ());
this.manager = manager; this.manager = manager;
this.p = p;
} }
public int getHealth() { public int getHealth() {
@ -70,7 +72,7 @@ public class SpawnFakeWither extends JavaPlugin {
if (created) { if (created) {
WrappedDataWatcher watcher = new WrappedDataWatcher(); WrappedDataWatcher watcher = new WrappedDataWatcher();
watcher.setObject(METADATA_FLAGS, visible ? (byte)0 : INVISIBLE); watcher.setObject(METADATA_FLAGS, visible ? (byte) 0 : INVISIBLE);
sendMetadata(watcher); sendMetadata(watcher);
} }
this.visible = visible; this.visible = visible;
@ -99,7 +101,11 @@ public class SpawnFakeWither extends JavaPlugin {
update.setEntityId(id); update.setEntityId(id);
update.setEntityMetadata(watcher.getWatchableObjects()); update.setEntityMetadata(watcher.getWatchableObjects());
broadcastPacket(update.getHandle(), true); try {
manager.sendServerPacket(p, update.getHandle());
} catch (InvocationTargetException e) {
Bukkit.getLogger().log(Level.WARNING, "Cannot send " + update.getHandle() + " to " + p, e);
}
} }
public int getId() { public int getId() {
@ -110,7 +116,7 @@ public class SpawnFakeWither extends JavaPlugin {
Packet18SpawnMob spawnMob = new Packet18SpawnMob(); Packet18SpawnMob spawnMob = new Packet18SpawnMob();
WrappedDataWatcher watcher = new WrappedDataWatcher(); WrappedDataWatcher watcher = new WrappedDataWatcher();
watcher.setObject(METADATA_FLAGS, visible ? (byte)0 : INVISIBLE); watcher.setObject(METADATA_FLAGS, visible ? (byte) 0 : INVISIBLE);
watcher.setObject(METADATA_WITHER_HEALTH, (int) health); // 1.5.2 -> Change to (int) watcher.setObject(METADATA_WITHER_HEALTH, (int) health); // 1.5.2 -> Change to (int)
if (customName != null) { if (customName != null) {
@ -125,7 +131,11 @@ public class SpawnFakeWither extends JavaPlugin {
spawnMob.setZ(location.getZ()); spawnMob.setZ(location.getZ());
spawnMob.setMetadata(watcher); spawnMob.setMetadata(watcher);
broadcastPacket(spawnMob.getHandle(), true); try {
manager.sendServerPacket(p, spawnMob.getHandle());
} catch (InvocationTargetException e) {
Bukkit.getLogger().log(Level.WARNING, "Cannot send " + spawnMob.getHandle() + " to " + p, e);
}
created = true; created = true;
} }
@ -134,23 +144,14 @@ public class SpawnFakeWither extends JavaPlugin {
throw new IllegalStateException("Cannot kill a killed entity."); throw new IllegalStateException("Cannot kill a killed entity.");
Packet1DDestroyEntity destroyMe = new Packet1DDestroyEntity(); Packet1DDestroyEntity destroyMe = new Packet1DDestroyEntity();
destroyMe.setEntities(new int[] { id }); destroyMe.setEntities(new int[]{id});
broadcastPacket(destroyMe.getHandle(), false);
created = false;
}
public void broadcastPacket(PacketContainer packet, boolean onlyNearby) {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
// Must be within the range
if (!onlyNearby || player.getLocation().distanceSquared(location) < HEALTH_RANGE) {
try { try {
manager.sendServerPacket(player, packet); manager.sendServerPacket(p, destroyMe.getHandle());
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
Bukkit.getLogger().log(Level.WARNING, "Cannot send " + packet + " to " + player, e); Bukkit.getLogger().log(Level.WARNING, "Cannot send " + destroyMe.getHandle() + " to " + p, e);
}
}
} }
created = false;
} }
} }
} }