From 139ff42250d8e7368872f462a43206a1725daa7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 21 Sep 2024 16:40:09 +0200 Subject: [PATCH] prevent nether portal use and entity damage --- build.gradle.kts | 2 +- .../eu/mhsl/minecraft/WorldMuseum/Main.java | 23 ++++++++++++------- .../WorldMuseum/util/BungeeCord.java | 2 +- .../viewableWorld/ViewableWorld.java | 6 ++++- .../viewableWorld/ViewableWorldListener.java | 10 ++++++++ 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 67bc8ca..061e6f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,6 +30,6 @@ tasks.register("copyJarToTestServer") { dependsOn(tasks.jar) mustRunAfter(tasks.jar) - commandLine("cp", "build/libs/WorldMuseum-1.0-SNAPSHOT.jar", "/Users/olischma/Desktop/paper/plugins") + commandLine("cp", "build/libs/WorldMuseum-1.0-SNAPSHOT.jar", "/media/elias/Backup/world-museum/plugins") } diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/Main.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/Main.java index a5c14cb..c5152f9 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/Main.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/Main.java @@ -20,14 +20,14 @@ import java.util.logging.Logger; public class Main extends JavaPlugin { private static Main instance; - private static Logger LOGGER; + private static Logger logger; private final List worlds = new ArrayList<>(); @Override public void onEnable() { Main.instance = this; - LOGGER = getLogger(); + logger = logger(); this.saveDefaultConfig(); getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); @@ -47,11 +47,10 @@ public class Main extends JavaPlugin { public void onDisable() { this.worlds.forEach(ViewableWorld::unloadWorld); } + @Override public ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, String id) { - return new ChunkGenerator() { - - }; + return new ChunkGenerator() {}; } private void loadWorlds() { @@ -61,9 +60,12 @@ public class Main extends JavaPlugin { //noinspection ResultOfMethodCallIgnored worldFolder.mkdirs(); Arrays.stream(Objects.requireNonNull(worldFolder.listFiles())).forEach(file -> { - LOGGER.info("[Worldmuseum] Loading world " + file.getName()); - if (file.isDirectory()) this.worlds.add(new ViewableWorld(file)); - else LOGGER.info( "[Worldmuseum] " + file.getName() + " is not a valid world!"); + logger.info("[Worldmuseum] Loading world " + file.getName()); + if (file.isDirectory()) { + this.worlds.add(new ViewableWorld(file)); + } else { + logger.info( "[Worldmuseum] " + file.getName() + " is not a directory and therefore not a valid world!"); + } }); this.worlds.forEach(ViewableWorld::loadWorld); } @@ -75,4 +77,9 @@ public class Main extends JavaPlugin { public List getWorlds() { return worlds; } + + public static Logger logger() { + if(logger == null) throw new RuntimeException("Plugin not initialized yet"); + return logger; + } } \ No newline at end of file diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/util/BungeeCord.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/util/BungeeCord.java index 6d828c0..2103bca 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/util/BungeeCord.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/util/BungeeCord.java @@ -12,7 +12,7 @@ import java.util.logging.Level; public class BungeeCord { public static void connect(Player player, String server) { - Main.instance().getLogger().log(Level.INFO, String.format("Bungeecord: Sending %s to %s", player.getName(), server)); + Main.logger().log(Level.INFO, String.format("Bungeecord: Sending %s to %s", player.getName(), server)); ByteArrayDataOutput output = ByteStreams.newDataOutput(); output.writeUTF("Connect"); output.writeUTF(server); diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java index bb847c4..fc65143 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java @@ -1,5 +1,6 @@ package eu.mhsl.minecraft.WorldMuseum.viewableWorld; +import eu.mhsl.minecraft.WorldMuseum.Main; import net.kyori.adventure.text.Component; import net.kyori.adventure.util.TriState; import org.bukkit.*; @@ -13,6 +14,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.io.File; import java.io.IOException; import java.util.Objects; +import java.util.logging.Level; public class ViewableWorld { private final File worldLocation; @@ -45,7 +47,9 @@ public class ViewableWorld { data.set("isDefaultWorld", false); data.save(configFile); - } catch (IOException e) {e.printStackTrace();} + } catch (IOException e) { + Main.logger().log(Level.SEVERE, "Failed creating Configuration File", e); + } } } diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorldListener.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorldListener.java index cdd9687..9a4e4bf 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorldListener.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorldListener.java @@ -6,7 +6,9 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockGrowEvent; import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.world.ChunkUnloadEvent; public class ViewableWorldListener implements Listener { @@ -34,4 +36,12 @@ public class ViewableWorldListener implements Listener { public void onChunkUnload(ChunkUnloadEvent event) { event.setSaveChunk(false); } + @EventHandler + public void onEntityDamage(EntityDamageEvent event) { + event.setCancelled(true); + } + @EventHandler + public void preventPortal(PlayerPortalEvent event) { + event.setCancelled(true); + } }