From 3ab6602c9a8b04a8c7f974bb8adec3d2c3e7fef0 Mon Sep 17 00:00:00 2001 From: befaci03 Date: Sun, 11 Jan 2026 15:20:11 +0100 Subject: [PATCH] Init commit --- .gitignore | 2 + .idea/.gitignore | 10 ++ .idea/artifacts/creeperpit_jar.xml | 9 ++ .idea/betterCommentsSettings.xml | 31 ++++ .idea/compiler.xml | 13 ++ .idea/creeperpit.iml | 13 ++ .idea/encodings.xml | 7 + .idea/jarRepositories.xml | 30 ++++ .idea/misc.xml | 14 ++ .idea/modules.xml | 8 + .idea/vcs.xml | 6 + creeperpit.iml | 13 ++ pom.xml | 73 +++++++++ .../java/eu/creeper/mc/creeperPit/Main.java | 152 ++++++++++++++++++ .../eu/creeper/mc/creeperPit/Scoreboard.java | 4 + .../mc/creeperPit/mysql/MariaDBManager.java | 4 + .../mc/creeperPit/points/PtManager.java | 4 + .../mc/creeperPit/worldguard/Handler.java | 6 + .../mc/creeperPit/worldguard/Region.java | 70 ++++++++ .../mc/creeperPit/worldguard/WGManager.java | 22 +++ src/main/resources/plugin.yml | 11 ++ 21 files changed, 502 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/artifacts/creeperpit_jar.xml create mode 100644 .idea/betterCommentsSettings.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/creeperpit.iml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 creeperpit.iml create mode 100644 pom.xml create mode 100644 src/main/java/eu/creeper/mc/creeperPit/Main.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/Scoreboard.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/mysql/MariaDBManager.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/points/PtManager.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/worldguard/Handler.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/worldguard/Region.java create mode 100644 src/main/java/eu/creeper/mc/creeperPit/worldguard/WGManager.java create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ed9c74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +out \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b60ab01 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/artifacts/creeperpit_jar.xml b/.idea/artifacts/creeperpit_jar.xml new file mode 100644 index 0000000..2ae4a11 --- /dev/null +++ b/.idea/artifacts/creeperpit_jar.xml @@ -0,0 +1,9 @@ + + + $PROJECT_DIR$/out/artifacts/creeperpit_jar + + + + + + \ No newline at end of file diff --git a/.idea/betterCommentsSettings.xml b/.idea/betterCommentsSettings.xml new file mode 100644 index 0000000..abd3134 --- /dev/null +++ b/.idea/betterCommentsSettings.xml @@ -0,0 +1,31 @@ + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..88a24ce --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/creeperpit.iml b/.idea/creeperpit.iml new file mode 100644 index 0000000..a589521 --- /dev/null +++ b/.idea/creeperpit.iml @@ -0,0 +1,13 @@ + + + + + + + SPIGOT + + 1 + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..a156f52 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..68fbe34 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..62e7bdb --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9b17f10 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/creeperpit.iml b/creeperpit.iml new file mode 100644 index 0000000..f553dad --- /dev/null +++ b/creeperpit.iml @@ -0,0 +1,13 @@ + + + + + + + SPIGOT + + 1 + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..362c0c3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + + eu.creeper.mc + creeperpit + 1.2-SNAPSHOT + jar + + creeperpit + + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + src/main/resources + true + + + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + org.spigotmc + spigot-api + 1.8.8-R0.1-SNAPSHOT + provided + + + org.jetbrains + annotations + RELEASE + compile + + + diff --git a/src/main/java/eu/creeper/mc/creeperPit/Main.java b/src/main/java/eu/creeper/mc/creeperPit/Main.java new file mode 100644 index 0000000..85e306a --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/Main.java @@ -0,0 +1,152 @@ +package eu.creeper.mc.creeperPit; + +import eu.creeper.mc.creeperPit.worldguard.WGManager; +import eu.creeper.mc.creeperPit.worldguard.Region; +import org.bukkit.*; +import org.bukkit.entity.Player; +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.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import java.util.Objects; + +public class Main extends JavaPlugin implements Listener { + private Location spawnLocation; + + public void onEnable() { + World world = getWorld(); + spawnLocation = new Location(world, -643.5D, 36D, 444.5D, -180F, 0F); + + Bukkit.getPluginManager().registerEvents(this, this); + + Region spawnRegion = new Region("spawn", new Location(world, -659.0D, 36.0D, 402.0D), new Location(world, -629.0D, 55.0D, 448.0D), "Safe"); + spawnRegion.setAllowBuild(false); + spawnRegion.setAllowBreak(false); + spawnRegion.setAllowDrop(false); + spawnRegion.setAllowPvp(false); + + Region spawnRegRegion = new Region("spawnreg", new Location(world, -650.0D, 0.0D, 423.0D), new Location(world, -639.0D, 255.0D, 411.0D), "Safe"); + spawnRegRegion.setAllowBuild(false); + spawnRegRegion.setAllowBreak(false); + spawnRegRegion.setAllowDrop(true); + spawnRegRegion.setAllowPvp(false); + + WGManager.registerRegion(spawnRegion); + WGManager.registerRegion(spawnRegRegion); + } + + private World getWorld() { + World world = Bukkit.getWorld("world"); + if (world == null || !world.isChunkLoaded(0, 0)) { + world = Bukkit.getWorlds().get(0); //fallback + } + return world; + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent ev) { + ev.setJoinMessage(ChatColor.GREEN +""+ ChatColor.BOLD + "[+] " + ChatColor.RESET + ChatColor.YELLOW + ev.getPlayer().getName()); + Player player = ev.getPlayer(); + setupPlayer(player); + } + + @EventHandler + public void onPlayerLeft(PlayerQuitEvent ev) { + ev.setQuitMessage(ChatColor.RED +""+ ChatColor.BOLD + "[-] " + ChatColor.RESET + ChatColor.YELLOW + ev.getPlayer().getName()); + } + + @EventHandler + public void onPlayerDropItem(PlayerDropItemEvent ev) { + ItemStack i = ev.getItemDrop().getItemStack(); + ev.setCancelled(i.getType() == Material.IRON_BOOTS || + i.getType() == Material.IRON_CHESTPLATE || + i.getType() == Material.IRON_HELMET || + i.getType() == Material.IRON_LEGGINGS || + (i.getType() == Material.BLAZE_ROD && Objects.equals(i.getItemMeta().getDisplayName(), ChatColor.GOLD + "CreeperStaff Manager"))); + } + + @EventHandler + public void onPlayerDie(PlayerDeathEvent ev) { + ev.setDeathMessage(ChatColor.RED + ev.getEntity().getPlayer().getName() + " got stabbed by " + ev.getEntity().getKiller().getName()); + } + + @EventHandler + public void onPlayerRespawn(PlayerRespawnEvent event) { + Bukkit.getScheduler().runTaskLater(this, () -> setupPlayer(event.getPlayer()), 5L); + } + + private void setupPlayer(Player player) { + player.teleport(this.spawnLocation); + player.setGameMode(GameMode.SURVIVAL); + + PlayerInventory inventory = player.getInventory(); + inventory.clear(); + + inventory.setHelmet(new ItemStack(Material.IRON_HELMET)); + inventory.setChestplate(new ItemStack(Material.IRON_CHESTPLATE)); + inventory.setLeggings(new ItemStack(Material.IRON_LEGGINGS)); + inventory.setBoots(new ItemStack(Material.IRON_BOOTS)); + inventory.addItem(new ItemStack(Material.IRON_SWORD)); + inventory.addItem(new ItemStack(Material.FISHING_ROD)); + inventory.addItem(new ItemStack(Material.BOW)); + inventory.addItem(new ItemStack(Material.ARROW, 16)); + inventory.addItem(new ItemStack(Material.GOLDEN_APPLE, 2)); + + PotionEffect nightVision = new PotionEffect(PotionEffectType.NIGHT_VISION, 1000000, 1, true, false); + player.addPotionEffect(nightVision); + + player.setHealth(20D); + player.setFoodLevel(20); + } + + //TODO: NEEDS TO BE MOVED TO worldguard.Handler + @EventHandler + public void onDrop(PlayerDropItemEvent event) { + Region region = WGManager.getRegionAt(event.getPlayer().getLocation()); + if (region == null) return; + event.setCancelled(!region.canDrop()); + } + @EventHandler + public void onBlockBreak(BlockBreakEvent ev) { + Player plr = ev.getPlayer(); + Region region = WGManager.getRegionAt(ev.getBlock().getLocation()); + if (region == null) return; + ev.setCancelled(!region.canBreak() && plr.getGameMode() != GameMode.CREATIVE); + } + @EventHandler + public void onBlockPlace(BlockPlaceEvent ev) { + Player plr = ev.getPlayer(); + Region region = WGManager.getRegionAt(ev.getBlock().getLocation()); + if (region == null) return; + ev.setCancelled(!region.canBuild() && plr.getGameMode() != GameMode.CREATIVE); + } + @EventHandler + public void onPvp(EntityDamageByEntityEvent event) { + if (!(event.getDamager() instanceof Player) || !(event.getEntity() instanceof Player)) return; + + Player damager = (Player)event.getDamager(); //the player* + Player plr = ((Player)event.getEntity()).getPlayer(); //the victim* + + Region pregion = WGManager.getRegionAt(plr.getLocation()); + if (pregion == null) return; + Region dregion = WGManager.getRegionAt(damager.getLocation()); + if (dregion == null) return; + + if (!dregion.canPvp() || !pregion.canPvp()) { + event.setCancelled(true); + damager.sendMessage(ChatColor.RED + "You cannot PVP here!"); + } + } +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/Scoreboard.java b/src/main/java/eu/creeper/mc/creeperPit/Scoreboard.java new file mode 100644 index 0000000..be8a3c7 --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/Scoreboard.java @@ -0,0 +1,4 @@ +package eu.creeper.mc.creeperPit; + +public class Scoreboard { +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/mysql/MariaDBManager.java b/src/main/java/eu/creeper/mc/creeperPit/mysql/MariaDBManager.java new file mode 100644 index 0000000..5027a0b --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/mysql/MariaDBManager.java @@ -0,0 +1,4 @@ +package eu.creeper.mc.creeperPit.mysql; + +public class MariaDBManager { +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/points/PtManager.java b/src/main/java/eu/creeper/mc/creeperPit/points/PtManager.java new file mode 100644 index 0000000..05e22cf --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/points/PtManager.java @@ -0,0 +1,4 @@ +package eu.creeper.mc.creeperPit.points; + +public class PtManager { +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/worldguard/Handler.java b/src/main/java/eu/creeper/mc/creeperPit/worldguard/Handler.java new file mode 100644 index 0000000..f68123c --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/worldguard/Handler.java @@ -0,0 +1,6 @@ +package eu.creeper.mc.creeperPit.worldguard; + +import org.bukkit.event.Listener; + +public class Handler implements Listener { +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/worldguard/Region.java b/src/main/java/eu/creeper/mc/creeperPit/worldguard/Region.java new file mode 100644 index 0000000..0c11b47 --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/worldguard/Region.java @@ -0,0 +1,70 @@ +package eu.creeper.mc.creeperPit.worldguard; + +import org.bukkit.Location; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Region { + private final String rname; + private final String label; + private final Location min; + private final Location max; + + private boolean allowBuild; + private boolean allowBreak; + private boolean allowPvp; + private boolean allowDrop; + + public Region(@NotNull String name, @NotNull Location min, @NotNull Location max, @Nullable String label) { + this.rname = name; + this.label = label; + + this.min = min; + this.max = max; + + this.allowBuild = false; + this.allowBreak = false; + this.allowPvp = false; + this.allowDrop = true; + } + + public boolean contains(@NotNull Location loc) { + return loc.getWorld().equals(min.getWorld()) && + loc.getX() >= min.getX() && loc.getX() <= max.getX() && + loc.getY() >= min.getY() && loc.getY() <= max.getY() && + loc.getZ() >= min.getZ() && loc.getZ() <= max.getZ(); + } + + public String getName() { + return rname; + } + public String getLabel() { + return label; + } + + public boolean canBuild() { + return allowBuild; + } + public boolean canBreak() { + return allowBreak; + } + public boolean canPvp() { + return allowPvp; + } + public boolean canDrop() { + return allowDrop; + } + + public void setAllowBuild(boolean allow) { + this.allowBuild = allow; + } + public void setAllowBreak(boolean allow) { + this.allowBreak = allow; + } + public void setAllowPvp(boolean allow) { + this.allowPvp = allow; + } + public void setAllowDrop(boolean allow) { + this.allowDrop = allow; + } +} diff --git a/src/main/java/eu/creeper/mc/creeperPit/worldguard/WGManager.java b/src/main/java/eu/creeper/mc/creeperPit/worldguard/WGManager.java new file mode 100644 index 0000000..1b976ce --- /dev/null +++ b/src/main/java/eu/creeper/mc/creeperPit/worldguard/WGManager.java @@ -0,0 +1,22 @@ +package eu.creeper.mc.creeperPit.worldguard; + +import org.bukkit.Location; +import org.bukkit.event.Listener; + +import java.util.ArrayList; +import java.util.List; + +public class WGManager implements Listener { + private static final List regions = new ArrayList<>(); + + public static void registerRegion(Region region) { + regions.add(region); + } + + public static Region getRegionAt(Location loc) { + for (Region region : regions) { + if (region.contains(loc)) return region; + } + return null; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..a474701 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,11 @@ +name: CreeperPit +version: '1.2-SNAPSHOT' +main: eu.creeper.mc.creeperPit.Main +api-version: '1.8.8' +prefix: CPit +authors: [ Befaci, creepervmuser1000 ] +description: CreeperPit gameplay management +permissions: + creeperpit.worldguard: + default: "op" + description: "Can bypass the WorldGuard"