fixed name issue with plguin startup
This commit is contained in:
parent
cc7497a9aa
commit
9ca9103388
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
10
.idea/MCPluginDebugger.xml
Normal file
10
.idea/MCPluginDebugger.xml
Normal 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>
|
@ -3,7 +3,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'com.newt-tech'
|
||||
version = '1.3-BETA'
|
||||
version = '1.4-BETA'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
BIN
build/classes/java/main/CoswayUtil/AnchorShield$1.class
Normal file
BIN
build/classes/java/main/CoswayUtil/AnchorShield$1.class
Normal file
Binary file not shown.
BIN
build/classes/java/main/CoswayUtil/AnchorShield$2.class
Normal file
BIN
build/classes/java/main/CoswayUtil/AnchorShield$2.class
Normal file
Binary file not shown.
BIN
build/classes/java/main/CoswayUtil/AnchorShield.class
Normal file
BIN
build/classes/java/main/CoswayUtil/AnchorShield.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
build/libs/CoswayUtil-1.2-BETA copy.jar
Normal file
BIN
build/libs/CoswayUtil-1.2-BETA copy.jar
Normal file
Binary file not shown.
Binary file not shown.
@ -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'
|
||||
|
Binary file not shown.
Binary file not shown.
138
src/main/java/CoswayUtil/AnchorShield.java
Normal file
138
src/main/java/CoswayUtil/AnchorShield.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -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'
|
||||
|
Loading…
Reference in New Issue
Block a user