From d9e9e286433017b811da458b5e1f257e3bca9bae Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 15:54:00 -0500 Subject: [PATCH 01/14] Switch heat capacity to datatag system --- .../MovecraftOverheatCommand.java | 2 +- .../movecraftoverheat/tracking/CraftHeat.java | 33 +++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java index 154a454..75acc31 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java @@ -78,7 +78,7 @@ private boolean checkCommand (CommandSender sender, Player player) { } sender.sendMessage(ChatUtils.MOVECRAFT_COMMAND_PREFIX + " Checking craft of type " + c.getType().getStringProperty(CraftType.NAME) + " commanded by " + player.getDisplayName() + ":"); sender.sendMessage("Current Heat: " + craftHeat.getHeat()); - sender.sendMessage("Capacity: " + craftHeat.getHeatCapacity()); + sender.sendMessage("Capacity: " + craftHeat.getCraft().getDataTag(CraftHeat.HEAT_CAPACITY)); sender.sendMessage("Dissipation / second: " + craftHeat.getDissipation()); return true; } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index 6c07d0c..eaa5afd 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -3,6 +3,8 @@ import net.countercraft.movecraft.MovecraftLocation; import net.countercraft.movecraft.craft.Craft; import net.countercraft.movecraft.craft.PlayerCraft; +import net.countercraft.movecraft.craft.datatag.CraftDataTagContainer; +import net.countercraft.movecraft.craft.datatag.CraftDataTagKey; import net.countercraft.movecraft.movecraftoverheat.Keys; import net.countercraft.movecraft.movecraftoverheat.MovecraftOverheat; import net.countercraft.movecraft.movecraftoverheat.config.Settings; @@ -14,14 +16,15 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.jetbrains.annotations.NotNull; public class CraftHeat { + public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> 0D); private final Craft craft; - private double heatCapacity; private double heat; private double dissipation; private long lastUpdate; @@ -35,7 +38,7 @@ public class CraftHeat { public CraftHeat (@NotNull Craft c) { this.craft = c; this.heat = 0; - this.bossBar = Bukkit.createBossBar("Heat: " + this.heat + " / " + this.heatCapacity, BarColor.GREEN, BarStyle.SEGMENTED_6); + this.bossBar = Bukkit.createBossBar("Heat", BarColor.GREEN, BarStyle.SEGMENTED_6); this.recalculate(); if (craft instanceof PlayerCraft) { this.bossBar.addPlayer(((PlayerCraft) this.craft).getPilot()); @@ -71,9 +74,9 @@ public void recalculate () { newCapacity = Math.round(newCapacity); if (Math.abs(heat) >= 0.01) { - heat *= newCapacity/heatCapacity; + heat *= newCapacity / craft.getDataTag(HEAT_CAPACITY); } - heatCapacity = newCapacity; + craft.setDataTag(HEAT_CAPACITY, newCapacity); dissipation = newDissipation; updateBossBar(); @@ -91,20 +94,20 @@ public void processDissipation () { public void checkDisasters () { // Update whether the craft is silenced if (silenced) { - if (heat < heatCapacity * Settings.SilenceHeatThreshold) { + if (heat < craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + "No longer silenced!")); silenced = false; } } else { - if (Settings.SilenceOverheatedCrafts && heat > heatCapacity * Settings.SilenceHeatThreshold) { + if (Settings.SilenceOverheatedCrafts && heat > craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + ChatColor.RED + "Silenced! Your guns are too hot to fire!")); craft.getAudience().playSound(Sound.sound(Key.key("entity.blaze.death"), Sound.Source.BLOCK, 2.0f, 1.0f)); silenced = true; } } for (DisasterType type : MovecraftOverheat.getDisasterTypes()) { - if (type.getHeatThreshold() * heatCapacity > heat) continue; - if ((1-type.getRandomChance()) * (Math.exp(-1 * type.getRandomChancePowerFactor() * ((heat/heatCapacity)-type.getHeatThreshold()))) > Math.random()) continue; + if (type.getHeatThreshold() * craft.getDataTag(HEAT_CAPACITY) > heat) continue; + if ((1-type.getRandomChance()) * (Math.exp(-1 * type.getRandomChancePowerFactor() * ((heat/craft.getDataTag(HEAT_CAPACITY))-type.getHeatThreshold()))) > Math.random()) continue; MovecraftOverheat.getInstance().getHeatManager().addDisaster(type.createNew(this)); lastDisaster = System.currentTimeMillis(); } @@ -126,10 +129,6 @@ public double getHeat() { return heat; } - public double getHeatCapacity() { - return heatCapacity; - } - public double getDissipation() { return dissipation; } @@ -147,16 +146,16 @@ public boolean isSilenced() { return silenced; } - private void updateBossBar () { - bossBar.setTitle("Heat: " + Math.round(heat*10)/10d + " / " + heatCapacity); - if (heat >= heatCapacity*1.5) { + private void updateBossBar() { + bossBar.setTitle("Heat: " + Math.round(heat*10)/10d + " / " + craft.getDataTag(HEAT_CAPACITY)); + if (heat >= craft.getDataTag(HEAT_CAPACITY)*1.5) { bossBar.setColor(BarColor.RED); - } else if (heat >= heatCapacity) { + } else if (heat >= craft.getDataTag(HEAT_CAPACITY)) { bossBar.setColor(BarColor.YELLOW); } else { bossBar.setColor(BarColor.GREEN); } - bossBar.setProgress(Math.min(1.0, heat/heatCapacity)); + bossBar.setProgress(Math.min(1.0, heat / craft.getDataTag(HEAT_CAPACITY))); bossBar.setVisible(heat != 0.0); } From 66115b56a1572ade8b726736726dfd4225791ac8 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 15:56:46 -0500 Subject: [PATCH 02/14] Switch heat to datatag --- .../MovecraftOverheatCommand.java | 2 +- .../movecraftoverheat/tracking/CraftHeat.java | 31 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java index 75acc31..bf979a8 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java @@ -77,7 +77,7 @@ private boolean checkCommand (CommandSender sender, Player player) { return true; } sender.sendMessage(ChatUtils.MOVECRAFT_COMMAND_PREFIX + " Checking craft of type " + c.getType().getStringProperty(CraftType.NAME) + " commanded by " + player.getDisplayName() + ":"); - sender.sendMessage("Current Heat: " + craftHeat.getHeat()); + sender.sendMessage("Current Heat: " + craftHeat.getCraft().getDataTag(CraftHeat.HEAT)); sender.sendMessage("Capacity: " + craftHeat.getCraft().getDataTag(CraftHeat.HEAT_CAPACITY)); sender.sendMessage("Dissipation / second: " + craftHeat.getDissipation()); return true; diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index eaa5afd..b037e11 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -24,8 +24,8 @@ public class CraftHeat { public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> 0D); + public static final CraftDataTagKey HEAT = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); private final Craft craft; - private double heat; private double dissipation; private long lastUpdate; private long lastDisaster; @@ -37,7 +37,6 @@ public class CraftHeat { public CraftHeat (@NotNull Craft c) { this.craft = c; - this.heat = 0; this.bossBar = Bukkit.createBossBar("Heat", BarColor.GREEN, BarStyle.SEGMENTED_6); this.recalculate(); if (craft instanceof PlayerCraft) { @@ -73,8 +72,10 @@ public void recalculate () { } newCapacity = Math.round(newCapacity); + double heat = craft.getDataTag(HEAT); if (Math.abs(heat) >= 0.01) { heat *= newCapacity / craft.getDataTag(HEAT_CAPACITY); + craft.setDataTag(HEAT, heat); } craft.setDataTag(HEAT_CAPACITY, newCapacity); dissipation = newDissipation; @@ -83,31 +84,33 @@ public void recalculate () { } public void processDissipation () { + double heat = craft.getDataTag(HEAT); if (heat > 0.0) { heat -= dissipation; } if (heat < 0.0) { heat = 0.0; } + craft.setDataTag(HEAT, heat); } public void checkDisasters () { // Update whether the craft is silenced if (silenced) { - if (heat < craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { + if (craft.getDataTag(HEAT) < craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + "No longer silenced!")); silenced = false; } } else { - if (Settings.SilenceOverheatedCrafts && heat > craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { + if (Settings.SilenceOverheatedCrafts && craft.getDataTag(HEAT) > craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + ChatColor.RED + "Silenced! Your guns are too hot to fire!")); craft.getAudience().playSound(Sound.sound(Key.key("entity.blaze.death"), Sound.Source.BLOCK, 2.0f, 1.0f)); silenced = true; } } for (DisasterType type : MovecraftOverheat.getDisasterTypes()) { - if (type.getHeatThreshold() * craft.getDataTag(HEAT_CAPACITY) > heat) continue; - if ((1-type.getRandomChance()) * (Math.exp(-1 * type.getRandomChancePowerFactor() * ((heat/craft.getDataTag(HEAT_CAPACITY))-type.getHeatThreshold()))) > Math.random()) continue; + if (type.getHeatThreshold() * craft.getDataTag(HEAT_CAPACITY) > craft.getDataTag(HEAT)) continue; + if ((1-type.getRandomChance()) * (Math.exp(-1 * type.getRandomChancePowerFactor() * ((craft.getDataTag(HEAT)/craft.getDataTag(HEAT_CAPACITY))-type.getHeatThreshold()))) > Math.random()) continue; MovecraftOverheat.getInstance().getHeatManager().addDisaster(type.createNew(this)); lastDisaster = System.currentTimeMillis(); } @@ -125,16 +128,14 @@ public void setLastUpdate(long l) { lastUpdate = l; } - public double getHeat() { - return heat; - } - public double getDissipation() { return dissipation; } public void addHeat (double heatToAdd) { + double heat = craft.getDataTag(HEAT); heat += heatToAdd; + craft.setDataTag(HEAT, heat); updateBossBar(); } @@ -147,16 +148,16 @@ public boolean isSilenced() { } private void updateBossBar() { - bossBar.setTitle("Heat: " + Math.round(heat*10)/10d + " / " + craft.getDataTag(HEAT_CAPACITY)); - if (heat >= craft.getDataTag(HEAT_CAPACITY)*1.5) { + bossBar.setTitle("Heat: " + Math.round(craft.getDataTag(HEAT)*10)/10d + " / " + craft.getDataTag(HEAT_CAPACITY)); + if (craft.getDataTag(HEAT) >= craft.getDataTag(HEAT_CAPACITY)*1.5) { bossBar.setColor(BarColor.RED); - } else if (heat >= craft.getDataTag(HEAT_CAPACITY)) { + } else if (craft.getDataTag(HEAT) >= craft.getDataTag(HEAT_CAPACITY)) { bossBar.setColor(BarColor.YELLOW); } else { bossBar.setColor(BarColor.GREEN); } - bossBar.setProgress(Math.min(1.0, heat / craft.getDataTag(HEAT_CAPACITY))); - bossBar.setVisible(heat != 0.0); + bossBar.setProgress(Math.min(1.0, craft.getDataTag(HEAT) / craft.getDataTag(HEAT_CAPACITY))); + bossBar.setVisible(craft.getDataTag(HEAT) != 0.0); } public void removeBossBar () { From d7c222bea399220d3b88d330c0e9d8489c832938 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 15:58:15 -0500 Subject: [PATCH 03/14] Switch dissipation to datatag --- .../movecraftoverheat/MovecraftOverheatCommand.java | 2 +- .../movecraftoverheat/tracking/CraftHeat.java | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java index bf979a8..3932262 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheatCommand.java @@ -79,7 +79,7 @@ private boolean checkCommand (CommandSender sender, Player player) { sender.sendMessage(ChatUtils.MOVECRAFT_COMMAND_PREFIX + " Checking craft of type " + c.getType().getStringProperty(CraftType.NAME) + " commanded by " + player.getDisplayName() + ":"); sender.sendMessage("Current Heat: " + craftHeat.getCraft().getDataTag(CraftHeat.HEAT)); sender.sendMessage("Capacity: " + craftHeat.getCraft().getDataTag(CraftHeat.HEAT_CAPACITY)); - sender.sendMessage("Dissipation / second: " + craftHeat.getDissipation()); + sender.sendMessage("Dissipation / second: " + craftHeat.getCraft().getDataTag(CraftHeat.DISSIPATION)); return true; } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index b037e11..a0eb4ea 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -25,8 +25,8 @@ public class CraftHeat { public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> 0D); public static final CraftDataTagKey HEAT = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); + public static final CraftDataTagKey DISSIPATION = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> 0D); private final Craft craft; - private double dissipation; private long lastUpdate; private long lastDisaster; private boolean silenced; @@ -78,7 +78,7 @@ public void recalculate () { craft.setDataTag(HEAT, heat); } craft.setDataTag(HEAT_CAPACITY, newCapacity); - dissipation = newDissipation; + craft.setDataTag(DISSIPATION, newDissipation); updateBossBar(); } @@ -86,7 +86,7 @@ public void recalculate () { public void processDissipation () { double heat = craft.getDataTag(HEAT); if (heat > 0.0) { - heat -= dissipation; + heat -= craft.getDataTag(DISSIPATION); } if (heat < 0.0) { heat = 0.0; @@ -128,10 +128,6 @@ public void setLastUpdate(long l) { lastUpdate = l; } - public double getDissipation() { - return dissipation; - } - public void addHeat (double heatToAdd) { double heat = craft.getDataTag(HEAT); heat += heatToAdd; From fab389de8c26ca5e39c49ee789678d52fdb68183 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 16:02:07 -0500 Subject: [PATCH 04/14] Update CraftHeat.java --- .../movecraft/movecraftoverheat/tracking/CraftHeat.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index a0eb4ea..fd33fba 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -38,7 +38,7 @@ public class CraftHeat { public CraftHeat (@NotNull Craft c) { this.craft = c; this.bossBar = Bukkit.createBossBar("Heat", BarColor.GREEN, BarStyle.SEGMENTED_6); - this.recalculate(); + bossBar.setVisible(false); if (craft instanceof PlayerCraft) { this.bossBar.addPlayer(((PlayerCraft) this.craft).getPilot()); } From b28558259fa8d9e80b6cbe328988168d992c9107 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 16:04:48 -0500 Subject: [PATCH 05/14] Update MovecraftOverheat.java --- .../movecraft/movecraftoverheat/Keys.java | 8 +++++++- .../movecraftoverheat/MovecraftOverheat.java | 17 ++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java index 5fc7dea..f3cee32 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java @@ -4,6 +4,8 @@ import net.countercraft.movecraft.craft.type.property.BooleanProperty; import net.countercraft.movecraft.craft.type.property.DoubleProperty; import org.bukkit.NamespacedKey; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; public class Keys { public static final NamespacedKey BASE_HEAT_CAPACITY = build("base_heat_capacity"); @@ -24,5 +26,9 @@ public static void register() { CraftType.registerProperty(new BooleanProperty("UseHeat", USE_HEAT, craftType -> false)); } - private static NamespacedKey build (String key) {return new NamespacedKey("movecraft-overheat", key);} + @NotNull + @Contract("_ -> new") + private static NamespacedKey build(String key) { + return new NamespacedKey("movecraft-overheat", key); + } } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java index ef71ec8..0f1343d 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java @@ -36,16 +36,16 @@ public void onEnable() { if (!MovecraftCombat.getInstance().getConfig().getBoolean("EnableTNTTracking")) { getLogger().log(Level.SEVERE, "[ERROR] Movecraft-Overheat requires TNTTracking to be enabled in Movecraft-Combat. Disabling..."); - this.setEnabled(false); + setEnabled(false); return; } if (!MovecraftCombat.getInstance().getConfig().getBoolean("EnableFireballTracking")) { getLogger().log(Level.SEVERE, "[ERROR] Movecraft-Overheat requires FireballTracking to be enabled in Movecraft-Combat. Disabling..."); - this.setEnabled(false); + setEnabled(false); return; } - this.manager = new HeatManager(); + manager = new HeatManager(); getCommand("movecraftoverheat").setExecutor(new MovecraftOverheatCommand()); @@ -119,24 +119,19 @@ public void onEnable() { manager.runTaskTimer(this, 20, 1); } - - @Override - public void onDisable() { - // Plugin shutdown logic - } - public static void addDisasterType(DisasterType d) { disasterTypes.add(d); } + public HeatManager getHeatManager() { return manager; } - public static MovecraftOverheat getInstance () { + public static MovecraftOverheat getInstance() { return instance; } - public static HashSet getDisasterTypes () { + public static HashSet getDisasterTypes() { return disasterTypes; } } From c6fb30b6819a5b9851cc90e5d312ce059ac9de78 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 16:06:28 -0500 Subject: [PATCH 06/14] Update CraftPilotListener.java --- .../listener/CraftPilotListener.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java index 70574fc..70f8f67 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java @@ -9,30 +9,29 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.jetbrains.annotations.NotNull; public class CraftPilotListener implements Listener { - @EventHandler(priority = EventPriority.LOW) - public void onCraftPilot (CraftDetectEvent event) { - if (!(event.getCraft() instanceof PlayerCraft) | event.isCancelled()) { + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) + public void onCraftPilot(@NotNull CraftDetectEvent event) { + if (!(event.getCraft() instanceof PlayerCraft) || !event.getCraft().getType().getBoolProperty(Keys.USE_HEAT)) return; - } - if (event.getCraft().getType().getBoolProperty(Keys.USE_HEAT)) { - MovecraftOverheat.getInstance().getHeatManager().registerCraft(event.getCraft()); - } + + MovecraftOverheat.getInstance().getHeatManager().registerCraft(event.getCraft()); } - @EventHandler(priority = EventPriority.LOW) - public void onCraftRelease (CraftReleaseEvent event) { - if(!(event.getCraft() instanceof PlayerCraft) | (event.isCancelled() | MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft())==null)) { + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) + public void onCraftRelease(@NotNull CraftReleaseEvent event) { + if(!(event.getCraft() instanceof PlayerCraft) || (MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()) == null)) { return; } MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()).removeBossBar(); MovecraftOverheat.getInstance().getHeatManager().removeCraft(event.getCraft()); } - @EventHandler - public void onCraftSink (CraftSinkEvent event) { - if(!(event.getCraft() instanceof PlayerCraft) | (event.isCancelled() | MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft())==null)) { + @EventHandler(ignoreCancelled = true) + public void onCraftSink(@NotNull CraftSinkEvent event) { + if(!(event.getCraft() instanceof PlayerCraft) || (MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()) == null)) { return; } MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()).removeBossBar(); From d34be9bd07c10d8e1016a7da4a7c982f4cc29d39 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 16:26:38 -0500 Subject: [PATCH 07/14] Set up recalculate to be done on status update --- .../movecraftoverheat/MovecraftOverheat.java | 1 + .../movecraftoverheat/tracking/HeatManager.java | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java index 0f1343d..4d82057 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java @@ -117,6 +117,7 @@ public void onEnable() { } manager.runTaskTimer(this, 20, 1); + getServer().getPluginManager().registerEvents(manager, this); } public static void addDisasterType(DisasterType d) { diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java index 1ff2b74..d932f62 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java @@ -4,16 +4,20 @@ import net.countercraft.movecraft.movecraftoverheat.MovecraftOverheat; import net.countercraft.movecraft.movecraftoverheat.config.Settings; import net.countercraft.movecraft.movecraftoverheat.disaster.Disaster; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; -public class HeatManager extends BukkitRunnable { +public class HeatManager extends BukkitRunnable implements Listener { private final HashMap heatTracking = new HashMap<>(); - private final Queue disasterQueue = new ConcurrentLinkedQueue(); + private final Queue disasterQueue = new ConcurrentLinkedQueue<>(); @Override public void run() { @@ -23,7 +27,6 @@ public void run() { if (heat.getLastUpdate() + Settings.HeatCheckInterval >= time) { continue; } - heat.recalculate(); heat.processDissipation(); heat.setLastUpdate(time); if (heat.getLastDisaster() + Settings.DisasterCheckInterval <= time) { @@ -59,4 +62,12 @@ public CraftHeat getHeat(Craft c) { public void addDisaster (Disaster disaster) { disasterQueue.add(disaster); } + + @EventHandler(priority = EventPriority.NORMAL) + public void onCraftStatusUpdate(@NotNull CraftStatusUpdateEvent event) { + if (!heatTracking.containsKey(event.getCraft())) + return; + + heatTracking.get(event.getCraft()).recalculate(); + } } From 4c7a22dc782cb6458dcbe2a6ea9d8d1551891d8a Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 16:37:29 -0500 Subject: [PATCH 08/14] Use cached movecraft materials for calculations --- .../movecraftoverheat/tracking/CraftHeat.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index fd33fba..8aaf69f 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -10,6 +10,7 @@ import net.countercraft.movecraft.movecraftoverheat.config.Settings; import net.countercraft.movecraft.movecraftoverheat.disaster.DisasterType; import net.countercraft.movecraft.util.ChatUtils; +import net.countercraft.movecraft.util.Counter; import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; @@ -50,21 +51,19 @@ public void recalculate () { double cPerBlock = craft.getType().getDoubleProperty(Keys.HEAT_CAPACITY_PER_BLOCK); double dPerBlock = craft.getType().getDoubleProperty(Keys.HEAT_DISSIPATION_PER_BLOCK); - for (MovecraftLocation location : craft.getHitBox()) { - Material type = craft.getWorld().getBlockAt(location.getX(), location.getY(), location.getZ()).getType(); - if (type == Material.AIR || type == Material.CAVE_AIR || type == Material.FIRE) { - continue; - } - if (Settings.HeatSinkBlocks.containsKey(type)) { - newCapacity += Settings.HeatSinkBlocks.get(type) * cPerBlock; + Counter materials = craft.getDataTag(Craft.MATERIALS); + for (Material m : materials.getKeySet()) { + if (Settings.HeatSinkBlocks.containsKey(m)) { + newCapacity += Settings.HeatSinkBlocks.get(m) * cPerBlock * materials.get(m); } else { - newCapacity += cPerBlock; + newCapacity += cPerBlock * materials.get(m); } - if (Settings.RadiatorBlocks.containsKey(type)) { - newDissipation += Settings.RadiatorBlocks.get(type) * dPerBlock; + if (Settings.RadiatorBlocks.containsKey(m)) { + newDissipation += Settings.RadiatorBlocks.get(m) * dPerBlock * materials.get(m); } else { - newDissipation += dPerBlock; + newDissipation += dPerBlock * materials.get(m); } + } if (newCapacity <= 1.0) { @@ -116,7 +115,7 @@ public void checkDisasters () { } } - public Craft getCraft () { + public Craft getCraft() { return craft; } From abc3fe5afbeba3d04aa16e2ccb66a2d9d3331331 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 18:39:44 -0500 Subject: [PATCH 09/14] Fix build --- build.gradle.kts | 2 +- .../movecraft/movecraftoverheat/tracking/HeatManager.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 77a3d40..379e30b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ repositories { dependencies { api("org.jetbrains:annotations-java5:24.1.0") compileOnly("io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT") - compileOnly("net.countercraft:movecraft:+") + compileOnly("net.countercraft:movecraft:8.0.0_beta-5_dev-1") compileOnly("net.countercraft.movecraft.combat:movecraft-combat:+") } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java index d932f62..498c827 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java @@ -1,6 +1,7 @@ package net.countercraft.movecraft.movecraftoverheat.tracking; import net.countercraft.movecraft.craft.Craft; +import net.countercraft.movecraft.features.status.events.CraftStatusUpdateEvent; import net.countercraft.movecraft.movecraftoverheat.MovecraftOverheat; import net.countercraft.movecraft.movecraftoverheat.config.Settings; import net.countercraft.movecraft.movecraftoverheat.disaster.Disaster; From 71d12083909751f4b13a38a68d032497cde64c6b Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 18:45:35 -0500 Subject: [PATCH 10/14] Clean up --- .../movecraft/movecraftoverheat/Keys.java | 8 +----- .../movecraftoverheat/MovecraftOverheat.java | 17 ++++++++----- .../listener/CraftPilotListener.java | 25 ++++++++++--------- .../movecraftoverheat/tracking/CraftHeat.java | 1 - .../tracking/HeatManager.java | 2 +- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java index f3cee32..5fc7dea 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/Keys.java @@ -4,8 +4,6 @@ import net.countercraft.movecraft.craft.type.property.BooleanProperty; import net.countercraft.movecraft.craft.type.property.DoubleProperty; import org.bukkit.NamespacedKey; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; public class Keys { public static final NamespacedKey BASE_HEAT_CAPACITY = build("base_heat_capacity"); @@ -26,9 +24,5 @@ public static void register() { CraftType.registerProperty(new BooleanProperty("UseHeat", USE_HEAT, craftType -> false)); } - @NotNull - @Contract("_ -> new") - private static NamespacedKey build(String key) { - return new NamespacedKey("movecraft-overheat", key); - } + private static NamespacedKey build (String key) {return new NamespacedKey("movecraft-overheat", key);} } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java index 4d82057..bc3bdd1 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/MovecraftOverheat.java @@ -36,16 +36,16 @@ public void onEnable() { if (!MovecraftCombat.getInstance().getConfig().getBoolean("EnableTNTTracking")) { getLogger().log(Level.SEVERE, "[ERROR] Movecraft-Overheat requires TNTTracking to be enabled in Movecraft-Combat. Disabling..."); - setEnabled(false); + this.setEnabled(false); return; } if (!MovecraftCombat.getInstance().getConfig().getBoolean("EnableFireballTracking")) { getLogger().log(Level.SEVERE, "[ERROR] Movecraft-Overheat requires FireballTracking to be enabled in Movecraft-Combat. Disabling..."); - setEnabled(false); + this.setEnabled(false); return; } - manager = new HeatManager(); + this.manager = new HeatManager(); getCommand("movecraftoverheat").setExecutor(new MovecraftOverheatCommand()); @@ -120,19 +120,24 @@ public void onEnable() { getServer().getPluginManager().registerEvents(manager, this); } + + @Override + public void onDisable() { + // Plugin shutdown logic + } + public static void addDisasterType(DisasterType d) { disasterTypes.add(d); } - public HeatManager getHeatManager() { return manager; } - public static MovecraftOverheat getInstance() { + public static MovecraftOverheat getInstance () { return instance; } - public static HashSet getDisasterTypes() { + public static HashSet getDisasterTypes () { return disasterTypes; } } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java index 70f8f67..70574fc 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/CraftPilotListener.java @@ -9,29 +9,30 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.jetbrains.annotations.NotNull; public class CraftPilotListener implements Listener { - @EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) - public void onCraftPilot(@NotNull CraftDetectEvent event) { - if (!(event.getCraft() instanceof PlayerCraft) || !event.getCraft().getType().getBoolProperty(Keys.USE_HEAT)) + @EventHandler(priority = EventPriority.LOW) + public void onCraftPilot (CraftDetectEvent event) { + if (!(event.getCraft() instanceof PlayerCraft) | event.isCancelled()) { return; - - MovecraftOverheat.getInstance().getHeatManager().registerCraft(event.getCraft()); + } + if (event.getCraft().getType().getBoolProperty(Keys.USE_HEAT)) { + MovecraftOverheat.getInstance().getHeatManager().registerCraft(event.getCraft()); + } } - @EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) - public void onCraftRelease(@NotNull CraftReleaseEvent event) { - if(!(event.getCraft() instanceof PlayerCraft) || (MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()) == null)) { + @EventHandler(priority = EventPriority.LOW) + public void onCraftRelease (CraftReleaseEvent event) { + if(!(event.getCraft() instanceof PlayerCraft) | (event.isCancelled() | MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft())==null)) { return; } MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()).removeBossBar(); MovecraftOverheat.getInstance().getHeatManager().removeCraft(event.getCraft()); } - @EventHandler(ignoreCancelled = true) - public void onCraftSink(@NotNull CraftSinkEvent event) { - if(!(event.getCraft() instanceof PlayerCraft) || (MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()) == null)) { + @EventHandler + public void onCraftSink (CraftSinkEvent event) { + if(!(event.getCraft() instanceof PlayerCraft) | (event.isCancelled() | MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft())==null)) { return; } MovecraftOverheat.getInstance().getHeatManager().getHeat(event.getCraft()).removeBossBar(); diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index 8aaf69f..25786e5 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -63,7 +63,6 @@ public void recalculate () { } else { newDissipation += dPerBlock * materials.get(m); } - } if (newCapacity <= 1.0) { diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java index 498c827..cf314d1 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/HeatManager.java @@ -18,7 +18,7 @@ public class HeatManager extends BukkitRunnable implements Listener { private final HashMap heatTracking = new HashMap<>(); - private final Queue disasterQueue = new ConcurrentLinkedQueue<>(); + private final Queue disasterQueue = new ConcurrentLinkedQueue(); @Override public void run() { From a206f64abf196f8560300997b5e135e374fd4e7a Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 18:48:13 -0500 Subject: [PATCH 11/14] Switch silenced to datatag --- .../listener/WeaponFireListener.java | 2 +- .../movecraftoverheat/tracking/CraftHeat.java | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/WeaponFireListener.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/WeaponFireListener.java index a76d81d..dbad55b 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/WeaponFireListener.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/listener/WeaponFireListener.java @@ -58,7 +58,7 @@ public void onBlockDispense (BlockDispenseEvent event) { if (craft == null) return; CraftHeat heat = MovecraftOverheat.getInstance().getHeatManager().getHeat(craft); if (heat != null) { - if (heat.isSilenced() && craft.getHitBox().contains(MathUtils.bukkit2MovecraftLoc(event.getBlock().getLocation()))) { + if (craft.getDataTag(CraftHeat.SILENCED) && craft.getHitBox().contains(MathUtils.bukkit2MovecraftLoc(event.getBlock().getLocation()))) { event.setCancelled(true); craft.getAudience().playSound(Sound.sound(Key.key("block.dispenser.fail"), Sound.Source.BLOCK, 1f, 1f)); } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index 25786e5..4cad33c 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -27,10 +27,10 @@ public class CraftHeat { public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> 0D); public static final CraftDataTagKey HEAT = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); public static final CraftDataTagKey DISSIPATION = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> 0D); + public static final CraftDataTagKey SILENCED = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "silenced"), craft -> false); private final Craft craft; private long lastUpdate; private long lastDisaster; - private boolean silenced; private boolean firedThisTick; private int explosionsThisTick; @@ -94,16 +94,16 @@ public void processDissipation () { public void checkDisasters () { // Update whether the craft is silenced - if (silenced) { + if (craft.getDataTag(SILENCED)) { if (craft.getDataTag(HEAT) < craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + "No longer silenced!")); - silenced = false; + craft.setDataTag(SILENCED, false); } } else { if (Settings.SilenceOverheatedCrafts && craft.getDataTag(HEAT) > craft.getDataTag(HEAT_CAPACITY) * Settings.SilenceHeatThreshold) { craft.getAudience().sendMessage(Component.text(ChatUtils.MOVECRAFT_COMMAND_PREFIX + ChatColor.RED + "Silenced! Your guns are too hot to fire!")); craft.getAudience().playSound(Sound.sound(Key.key("entity.blaze.death"), Sound.Source.BLOCK, 2.0f, 1.0f)); - silenced = true; + craft.setDataTag(SILENCED, true); } } for (DisasterType type : MovecraftOverheat.getDisasterTypes()) { @@ -137,10 +137,6 @@ public long getLastDisaster() { return lastDisaster; } - public boolean isSilenced() { - return silenced; - } - private void updateBossBar() { bossBar.setTitle("Heat: " + Math.round(craft.getDataTag(HEAT)*10)/10d + " / " + craft.getDataTag(HEAT_CAPACITY)); if (craft.getDataTag(HEAT) >= craft.getDataTag(HEAT_CAPACITY)*1.5) { From fb618e016a02f0a312451fddde7128cece221dd2 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 19:22:33 -0500 Subject: [PATCH 12/14] Fix initial conditions and bossbar title --- .../movecraft/movecraftoverheat/tracking/CraftHeat.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index 4cad33c..272349c 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -24,9 +24,9 @@ import org.jetbrains.annotations.NotNull; public class CraftHeat { - public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> 0D); + public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_CAPACITY_PER_BLOCK)); public static final CraftDataTagKey HEAT = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); - public static final CraftDataTagKey DISSIPATION = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> 0D); + public static final CraftDataTagKey DISSIPATION = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_DISSIPATION_PER_BLOCK)); public static final CraftDataTagKey SILENCED = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "silenced"), craft -> false); private final Craft craft; private long lastUpdate; @@ -52,6 +52,9 @@ public void recalculate () { double dPerBlock = craft.getType().getDoubleProperty(Keys.HEAT_DISSIPATION_PER_BLOCK); Counter materials = craft.getDataTag(Craft.MATERIALS); + if (materials.isEmpty()) + return; + for (Material m : materials.getKeySet()) { if (Settings.HeatSinkBlocks.containsKey(m)) { newCapacity += Settings.HeatSinkBlocks.get(m) * cPerBlock * materials.get(m); @@ -138,7 +141,7 @@ public long getLastDisaster() { } private void updateBossBar() { - bossBar.setTitle("Heat: " + Math.round(craft.getDataTag(HEAT)*10)/10d + " / " + craft.getDataTag(HEAT_CAPACITY)); + bossBar.setTitle(String.format("Heat: %.1f / %.1f", craft.getDataTag(HEAT), craft.getDataTag(HEAT_CAPACITY))); if (craft.getDataTag(HEAT) >= craft.getDataTag(HEAT_CAPACITY)*1.5) { bossBar.setColor(BarColor.RED); } else if (craft.getDataTag(HEAT) >= craft.getDataTag(HEAT_CAPACITY)) { From 4e77272e03f5d62526f7f0014f2d0a39015864a1 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sat, 27 Jul 2024 19:44:04 -0500 Subject: [PATCH 13/14] Update CraftHeat.java --- .../movecraft/movecraftoverheat/tracking/CraftHeat.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index 272349c..b670750 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -93,6 +93,7 @@ public void processDissipation () { heat = 0.0; } craft.setDataTag(HEAT, heat); + updateBossBar(); } public void checkDisasters () { From dfec4bf491a38ba0022aca6e7463be57b6790fe4 Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Sun, 11 Aug 2024 10:28:06 -0500 Subject: [PATCH 14/14] Update to latest movecraft dev build --- build.gradle.kts | 2 +- .../movecraft/movecraftoverheat/tracking/CraftHeat.java | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 379e30b..5c6476c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ repositories { dependencies { api("org.jetbrains:annotations-java5:24.1.0") compileOnly("io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT") - compileOnly("net.countercraft:movecraft:8.0.0_beta-5_dev-1") + compileOnly("net.countercraft:movecraft:8.0.0_beta-5_dev-2") compileOnly("net.countercraft.movecraft.combat:movecraft-combat:+") } diff --git a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java index b670750..5bdb87f 100644 --- a/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java +++ b/src/main/java/net/countercraft/movecraft/movecraftoverheat/tracking/CraftHeat.java @@ -5,6 +5,7 @@ import net.countercraft.movecraft.craft.PlayerCraft; import net.countercraft.movecraft.craft.datatag.CraftDataTagContainer; import net.countercraft.movecraft.craft.datatag.CraftDataTagKey; +import net.countercraft.movecraft.craft.datatag.CraftDataTagRegistry; import net.countercraft.movecraft.movecraftoverheat.Keys; import net.countercraft.movecraft.movecraftoverheat.MovecraftOverheat; import net.countercraft.movecraft.movecraftoverheat.config.Settings; @@ -24,10 +25,10 @@ import org.jetbrains.annotations.NotNull; public class CraftHeat { - public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_CAPACITY_PER_BLOCK)); - public static final CraftDataTagKey HEAT = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); - public static final CraftDataTagKey DISSIPATION = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_DISSIPATION_PER_BLOCK)); - public static final CraftDataTagKey SILENCED = CraftDataTagContainer.tryRegisterTagKey(new NamespacedKey("movecraft-overheat", "silenced"), craft -> false); + public static final CraftDataTagKey HEAT_CAPACITY = CraftDataTagRegistry.INSTANCE.registerTagKey(new NamespacedKey("movecraft-overheat", "heat-capacity"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_CAPACITY_PER_BLOCK)); + public static final CraftDataTagKey HEAT = CraftDataTagRegistry.INSTANCE.registerTagKey(new NamespacedKey("movecraft-overheat", "heat"), craft -> 0D); + public static final CraftDataTagKey DISSIPATION = CraftDataTagRegistry.INSTANCE.registerTagKey(new NamespacedKey("movecraft-overheat", "dissipation"), craft -> (double) craft.getOrigBlockCount() * craft.getType().getDoubleProperty(Keys.HEAT_DISSIPATION_PER_BLOCK)); + public static final CraftDataTagKey SILENCED = CraftDataTagRegistry.INSTANCE.registerTagKey(new NamespacedKey("movecraft-overheat", "silenced"), craft -> false); private final Craft craft; private long lastUpdate; private long lastDisaster;