fixed name issue with plguin startup

This commit is contained in:
kai ohara 2025-01-29 15:57:31 -05:00
parent cc7497a9aa
commit 9ca9103388
24 changed files with 157 additions and 21 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MCPluginDebuggerConfig">
<option name="serverJarFile" value="$USER_HOME$/Downloads/untitled folder/server.jar" />
<option name="pluginJarFile" value="$PROJECT_DIR$" />
<option name="pluginName" value="EX" />
<option name="host" value="localhost" />
<option name="port" value="9000" />
</component>
</project>

View File

@ -3,7 +3,7 @@ plugins {
}
group = 'com.newt-tech'
version = '1.3-BETA'
version = '1.4-BETA'
repositories {
mavenCentral()

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
CoswayUtilname: CoswayUtil
version: '1.3-BETA'
name: CoswayUtil
version: '1.4-BETA'
main: CoswayUtil.CoswayUtil
description: "utility plugin for Cosway servers, a yescraft network server"
api-version: '1.21'

View File

@ -0,0 +1,138 @@
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<Location, ArmorStand> 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);
}
}
}

View File

@ -15,16 +15,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.RayTraceResult;
import org.bukkit.util.Vector;
import org.bukkit.*;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import java.util.*;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
@ -37,7 +27,6 @@ public final class CoswayUtil extends JavaPlugin {
serverMessage(ColorKey("&aaw sheit here we go again...."));
Bukkit.getPluginManager().registerEvents(new AnchorShield(), this);
}
@Override
@ -57,7 +46,7 @@ public final class CoswayUtil extends JavaPlugin {
}
public String prefix() {
return "[Cosway Utility] ";
return ColorKey("[&7Cosway Utility&r] ");
}
public void setScale(Player player, float value) {
RayTraceResult result = player.getWorld().rayTraceEntities(
@ -97,8 +86,7 @@ public final class CoswayUtil extends JavaPlugin {
public void serverMessage(String msg) {
getServer().broadcastMessage(prefix()+msg);
}
//------------------------------------------------------------------------
public class AnchorShield implements Listener {
private final Map<Location, ArmorStand> activeAnchors = new HashMap<>();
private final int RING_RADIUS = 15;
@ -127,7 +115,7 @@ public final class CoswayUtil extends JavaPlugin {
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
loc.clone().add(0, 2, 0).getBlock().getType() == Material.HEAVY_CORE; // Assuming Heavy Core
}
private void manageAnchor(Location loc) {
@ -216,5 +204,5 @@ public final class CoswayUtil extends JavaPlugin {
}
}
}
}

View File

@ -1,5 +1,5 @@
CoswayUtilname: CoswayUtil
version: '1.3-BETA'
name: CoswayUtil
version: '1.4-BETA'
main: CoswayUtil.CoswayUtil
description: "utility plugin for Cosway servers, a yescraft network server"
api-version: '1.21'