diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin index 6fd506d..54bb344 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock index f537498..2c06a3c 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin index 878cf03..66f333a 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock index 15b6a23..42c06e2 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin index 73275c5..93f31eb 100644 Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index aaf215e..c6dcded 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/CoswayUtil/AnchorShield$1.class b/build/classes/java/main/CoswayUtil/AnchorShield$1.class deleted file mode 100644 index 43c0311..0000000 Binary files a/build/classes/java/main/CoswayUtil/AnchorShield$1.class and /dev/null differ diff --git a/build/classes/java/main/CoswayUtil/AnchorShield$2.class b/build/classes/java/main/CoswayUtil/AnchorShield$2.class deleted file mode 100644 index 449bf4c..0000000 Binary files a/build/classes/java/main/CoswayUtil/AnchorShield$2.class and /dev/null differ diff --git a/build/classes/java/main/CoswayUtil/AnchorShield.class b/build/classes/java/main/CoswayUtil/AnchorShield.class deleted file mode 100644 index 32016a9..0000000 Binary files a/build/classes/java/main/CoswayUtil/AnchorShield.class and /dev/null differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class index 594fa58..93f1dd5 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$1.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class index 91f85f1..b4cf1b3 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield$2.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class index 6cbf5d2..5e047cc 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class and b/build/classes/java/main/CoswayUtil/CoswayUtil$AnchorShield.class differ diff --git a/build/classes/java/main/CoswayUtil/CoswayUtil.class b/build/classes/java/main/CoswayUtil/CoswayUtil.class index 93ec2f9..f2b0abc 100644 Binary files a/build/classes/java/main/CoswayUtil/CoswayUtil.class and b/build/classes/java/main/CoswayUtil/CoswayUtil.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId0 index af582ce..f2b0abc 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/CoswayUtil.class.uniqueId0 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 1ac19ca..9bd4d53 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/CoswayUtil/AnchorShield.java b/src/main/java/CoswayUtil/AnchorShield.java deleted file mode 100644 index 42e5719..0000000 --- a/src/main/java/CoswayUtil/AnchorShield.java +++ /dev/null @@ -1,138 +0,0 @@ -package CoswayUtil; - -import org.bukkit.*; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.util.RayTraceResult; -import org.jetbrains.annotations.NotNull; - -import java.util.HashMap; -import java.util.Map; -public class AnchorShield implements Listener { - private final Map activeAnchors = new HashMap<>(); - private final int RING_RADIUS = 15; - private final int FUEL_DECREASE_TIME = 5 * 60 * 20; // 5 minutes in ticks - - public void startDetectionLoop() { - new BukkitRunnable() { - @Override - public void run() { - for (World world : Bukkit.getWorlds()) { - for (Chunk chunk : world.getLoadedChunks()) { - for (BlockState state : chunk.getTileEntities()) { - if (state.getBlock().getType() == Material.RESPAWN_ANCHOR) { - Location anchorLoc = state.getLocation(); - if (isMultiBlock(anchorLoc)) { - manageAnchor(anchorLoc); - } - } - } - } - } - } - }.runTaskTimer(Bukkit.getPluginManager().getPlugin("CoswayUtil"), 0, 100); // Run every 5 seconds - } - - private boolean isMultiBlock(Location loc) { - return loc.getBlock().getType() == Material.RESPAWN_ANCHOR && - loc.clone().add(0, 1, 0).getBlock().getType() == Material.LIGHTNING_ROD && - loc.clone().add(0, 2, 0).getBlock().getType() == Material.NETHERITE_BLOCK; // Assuming Heavy Core - } - - private void manageAnchor(Location loc) { - if (!activeAnchors.containsKey(loc)) { - ArmorStand marker = spawnMarker(loc); - activeAnchors.put(loc, marker); - startFuelTimer(loc); - } - - int fuelLevel = loc.getBlock().getBlockData().getAsString().contains("charges=") ? - Integer.parseInt(loc.getBlock().getBlockData().getAsString().split("charges=")[1].substring(0, 1)) : 0; - - if (fuelLevel > 0) { - createParticleRing(loc); - killHostileMobs(loc); - } - } - - private ArmorStand spawnMarker(Location loc) { - ArmorStand marker = loc.getWorld().spawn(loc.add(0.5, 1, 0.5), ArmorStand.class); - marker.setInvisible(true); - marker.setInvulnerable(true); - marker.setMarker(true); - return marker; - } - - private void createParticleRing(Location loc) { - for (int i = 0; i < 360; i += 10) { - double radians = Math.toRadians(i); - double x = loc.getX() + RING_RADIUS * Math.cos(radians); - double z = loc.getZ() + RING_RADIUS * Math.sin(radians); - Location particleLoc = new Location(loc.getWorld(), x, loc.getY() + 1, z); - loc.getWorld().spawnParticle(Particle.CRIT, particleLoc, 1, new Particle.DustOptions(Color.RED, 1)); - } - } - - private void killHostileMobs(Location loc) { - loc.getWorld().getEntitiesByClass(Monster.class).forEach(mob -> { - if (mob.getLocation().distance(loc) <= RING_RADIUS) { - mob.remove(); - } - }); - } - - private void startFuelTimer(Location loc) { - new BukkitRunnable() { - @Override - public void run() { - if (!activeAnchors.containsKey(loc)) { - cancel(); - return; - } - - Block block = loc.getBlock(); - if (block.getType() != Material.RESPAWN_ANCHOR) { - removeMarker(loc); - cancel(); - return; - } - - int fuelLevel = block.getBlockData().getAsString().contains("charges=") ? - Integer.parseInt(block.getBlockData().getAsString().split("charges=")[1].substring(0, 1)) : 0; - - if (fuelLevel > 0) { - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "data merge block " + loc.getBlockX() + " " + loc.getBlockY() + " " + loc.getBlockZ() + " {Charges:" + (fuelLevel - 1) + "}"); - } else { - removeMarker(loc); - cancel(); - } - } - }.runTaskTimer(Bukkit.getPluginManager().getPlugin("CoswayUtil"), FUEL_DECREASE_TIME, FUEL_DECREASE_TIME); - } - - private void removeMarker(Location loc) { - if (activeAnchors.containsKey(loc)) { - activeAnchors.get(loc).remove(); - activeAnchors.remove(loc); - } - } - - @EventHandler - public void onBlockBreak(BlockBreakEvent event) { - Location loc = event.getBlock().getLocation(); - if (activeAnchors.containsKey(loc) || isMultiBlock(loc)) { - removeMarker(loc); - } - } -} \ No newline at end of file diff --git a/src/main/java/CoswayUtil/CoswayUtil.java b/src/main/java/CoswayUtil/CoswayUtil.java index 21d5a83..a5c8bf9 100644 --- a/src/main/java/CoswayUtil/CoswayUtil.java +++ b/src/main/java/CoswayUtil/CoswayUtil.java @@ -10,6 +10,7 @@ import org.bukkit.entity.Monster; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -26,7 +27,8 @@ public final class CoswayUtil extends JavaPlugin { public void onEnable() { serverMessage(ColorKey("&aaw sheit here we go again....")); Bukkit.getPluginManager().registerEvents(new AnchorShield(), this); - + // Start the detection loop when the plugin is enabled + new AnchorShield().startDetectionLoop(); } @Override @@ -42,6 +44,9 @@ public final class CoswayUtil extends JavaPlugin { setScale(player, Float.parseFloat(args[0])); } } + if (cmd.getName().equalsIgnoreCase("scale") && sender instanceof Player) { + Player player = (Player) sender; + } return true; } @@ -139,6 +144,7 @@ public final class CoswayUtil extends JavaPlugin { marker.setInvisible(true); marker.setInvulnerable(true); marker.setMarker(true); + serverMessage("anchor shield created"); return marker; } @@ -203,6 +209,17 @@ public final class CoswayUtil extends JavaPlugin { removeMarker(loc); } } + + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) { + Location loc = event.getBlockPlaced().getLocation(); + Bukkit.broadcastMessage("block placed"); + if (isMultiBlock(loc)) { + Bukkit.broadcastMessage("Multiblock made"); + manageAnchor(loc); // Start managing the anchor once the multi-block structure is assembled + } + } } + }