diff --git a/pom.xml b/pom.xml
index c0b2871..7685997 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,14 +36,14 @@
placeholderapi-repo
https://repo.extendedclip.com/content/repositories/placeholderapi/
-
- essentials-releases
- https://repo.essentialsx.net/releases/
-
jitpack.io
https://jitpack.io
+
+ confuser-repo
+ https://ci.frostcast.net/plugin/repository/everything
+
@@ -58,18 +58,18 @@
2.11.6
provided
-
- net.essentialsx
- EssentialsX
- 2.21.0
- provided
-
com.github.booksaw
BetterTeams
4.11.0
provided
+
+ me.confuser.banmanager
+ BanManagerCommon
+ 7.9.0
+ provided
+
21
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/GalaxyBoxPvP.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/GalaxyBoxPvP.java
index 9ad9409..42ed530 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/GalaxyBoxPvP.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/GalaxyBoxPvP.java
@@ -2,6 +2,8 @@ package xyz.lncvrt.galaxyboxpvp;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User;
+import me.confuser.banmanager.common.BanManagerPlugin;
+import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.TabExecutor;
@@ -9,12 +11,14 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import xyz.lncvrt.galaxyboxpvp.commands.Autocompress;
import xyz.lncvrt.galaxyboxpvp.commands.Sky;
+import xyz.lncvrt.galaxyboxpvp.commands.Skyrtp;
import xyz.lncvrt.galaxyboxpvp.events.*;
import java.io.File;
@@ -29,21 +33,12 @@ import java.util.logging.Level;
public final class GalaxyBoxPvP extends JavaPlugin implements TabExecutor {
public final Map autoCompressStatus = new HashMap<>();
- private Essentials essentials;
+ public final Map skyRTPDelays = new HashMap<>();
private final PlaceholderAPIExpansion placeholderAPIExpansion = new PlaceholderAPIExpansion();
+ public final MiniMessage miniMessage = MiniMessage.miniMessage();
@Override
public void onEnable() {
- Plugin essentialsPlugin = Bukkit.getServer().getPluginManager().getPlugin("Essentials");
- getLogger().info("Essentials detected. Attempting to hook...");
- if (essentialsPlugin instanceof Essentials) {
- essentials = (Essentials) essentialsPlugin;
- getLogger().info("Essentials hooked successfully.");
- } else {
- getLogger().info("Essentials failed to hook. Disabling plugin");
- getServer().getPluginManager().disablePlugin(this);
- }
-
if (placeholderAPIExpansion.register()) {
getLogger().info("Successfully registered PlaceholderAPIExpansion!");
} else {
@@ -65,23 +60,26 @@ public final class GalaxyBoxPvP extends JavaPlugin implements TabExecutor {
}
private void registerEvents() {
- getServer().getPluginManager().registerEvents(new BlockBreakListener(this), this);
- getServer().getPluginManager().registerEvents(new BlockPlaceListener(), this);
- getServer().getPluginManager().registerEvents(new CraftItemListener(), this);
- getServer().getPluginManager().registerEvents(new EntityPickupItemListener(this), this);
- getServer().getPluginManager().registerEvents(new FurnaceBurnListener(this), this);
- getServer().getPluginManager().registerEvents(new FurnaceSmeltListener(this), this);
- getServer().getPluginManager().registerEvents(new PlayerDropItemListener(this), this);
- getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this);
- getServer().getPluginManager().registerEvents(new PrepareAnvilListener(), this);
- getServer().getPluginManager().registerEvents(new PrepareItemEnchantListener(), this);
- getServer().getPluginManager().registerEvents(new ProjectileHitListener(), this);
- getServer().getPluginManager().registerEvents(new SignChangeListener(this), this);
+ PluginManager pluginManager = getServer().getPluginManager();
+ pluginManager.registerEvents(new BlockBreakListener(this), this);
+ pluginManager.registerEvents(new BlockPlaceListener(this), this);
+ pluginManager.registerEvents(new CraftItemListener(), this);
+ pluginManager.registerEvents(new EntityPickupItemListener(this), this);
+ pluginManager.registerEvents(new EntitySpawnListener(), this);
+ pluginManager.registerEvents(new FurnaceBurnListener(this), this);
+ pluginManager.registerEvents(new FurnaceSmeltListener(this), this);
+ pluginManager.registerEvents(new PlayerDropItemListener(this), this);
+ pluginManager.registerEvents(new PlayerJoinListener(this), this);
+ pluginManager.registerEvents(new PlayerMoveListener(), this);
+ pluginManager.registerEvents(new PrepareAnvilListener(), this);
+ pluginManager.registerEvents(new PrepareItemEnchantListener(), this);
+ pluginManager.registerEvents(new SignChangeListener(this), this);
}
private void registerCommands() {
Objects.requireNonNull(getCommand("autocompress")).setExecutor(new Autocompress(this));
Objects.requireNonNull(getCommand("sky")).setExecutor(new Sky());
+ Objects.requireNonNull(getCommand("skyrtp")).setExecutor(new Skyrtp(this));
}
public boolean isRestrictedMaterial(Material material) {
@@ -194,7 +192,6 @@ public final class GalaxyBoxPvP extends JavaPlugin implements TabExecutor {
}
public boolean isMuted(Player player) {
- User user = essentials.getUser(player);
- return user.isMuted();
+ return BanManagerPlugin.getInstance().getPlayerMuteStorage().isMuted(player.getUniqueId());
}
}
\ No newline at end of file
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/PlaceholderAPIExpansion.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/PlaceholderAPIExpansion.java
index 4e4af5a..d7ad427 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/PlaceholderAPIExpansion.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/PlaceholderAPIExpansion.java
@@ -37,6 +37,8 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
@Override
public @Nullable String onPlaceholderRequest(Player player, @NotNull String identifier) {
switch (identifier) {
+ case "hearts":
+ return String.format("%.1f", player.getHealth() / 2);
case "kills":
return String.valueOf(player.getStatistic(Statistic.PLAYER_KILLS));
case "deaths":
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Autocompress.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Autocompress.java
index 620e569..45d25ae 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Autocompress.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Autocompress.java
@@ -15,7 +15,7 @@ import static org.bukkit.ChatColor.RED;
public record Autocompress(GalaxyBoxPvP plugin) implements CommandExecutor {
@Override
- public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String @NotNull [] args) {
if (!(sender instanceof Player player)) {
sender.sendMessage(RED + "This command can only be executed by a player.");
return true;
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Sky.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Sky.java
index 693c9cb..c4d6aaf 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Sky.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Sky.java
@@ -1,5 +1,6 @@
package xyz.lncvrt.galaxyboxpvp.commands;
+import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -8,9 +9,10 @@ import org.jetbrains.annotations.NotNull;
public class Sky implements CommandExecutor {
@Override
- public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String @NotNull [] args) {
if (sender instanceof Player player) {
player.performCommand("warp sky");
+ player.sendMessage(MiniMessage.miniMessage().deserialize("You can do /skyrtp (click the bold text) to randomly teleport around here!"));
}
return true;
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Skyrtp.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Skyrtp.java
new file mode 100644
index 0000000..f4c7d7b
--- /dev/null
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/commands/Skyrtp.java
@@ -0,0 +1,51 @@
+package xyz.lncvrt.galaxyboxpvp.commands;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.block.Block;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import xyz.lncvrt.galaxyboxpvp.GalaxyBoxPvP;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+public class Skyrtp implements CommandExecutor {
+ private final GalaxyBoxPvP plugin;
+
+ public Skyrtp(GalaxyBoxPvP plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String @NotNull [] args) {
+ if (sender instanceof Player player) {
+ Long last = plugin.skyRTPDelays.get(player.getUniqueId());
+ Long time = System.currentTimeMillis();
+ if (last != null && time - last < 30000) {
+ Long timeLeft = (30000 - (System.currentTimeMillis() - last)) / 1000;
+ player.sendMessage(plugin.miniMessage.deserialize("You can't RTP in the sky world so often, please wait %s second(s)!".formatted(timeLeft)));
+ return true;
+ }
+ World world = plugin.getServer().getWorld("sky");
+ if (world == null) {
+ player.sendMessage(plugin.miniMessage.deserialize("Failed, please try again!"));
+ return true;
+ }
+ int randomX = ThreadLocalRandom.current().nextInt(100, 15000);
+ int randomZ = ThreadLocalRandom.current().nextInt(100, 15000);
+ Location location = new Location(world, randomX, 100, randomZ);
+ Block block = world.getBlockAt(location);
+ if (block.getType() == Material.AIR) {
+ block.setType(Material.GRASS_BLOCK);
+ }
+ player.teleport(location.add(0.5f, 1, 0.5f));
+ player.sendMessage(plugin.miniMessage.deserialize("You have been randomly teleported to %s 100 %s".formatted(randomX, randomZ)));
+ plugin.skyRTPDelays.put(player.getUniqueId(), time);
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockBreakListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockBreakListener.java
index a468403..8a1f08c 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockBreakListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockBreakListener.java
@@ -17,5 +17,8 @@ public class BlockBreakListener implements Listener {
public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
plugin.convertInventoryItemsPrep(player, player.getUniqueId());
+ if (event.getBlock().getLocation().getY() == 100 && event.getBlock().getWorld().getName().equals("world")) {
+ event.setCancelled(true);
+ }
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockPlaceListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockPlaceListener.java
index b21cf24..9e2dec3 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockPlaceListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/BlockPlaceListener.java
@@ -1,36 +1,26 @@
package xyz.lncvrt.galaxyboxpvp.events;
-import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.event.ClickEvent;
-import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Material;
-import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
+import xyz.lncvrt.galaxyboxpvp.GalaxyBoxPvP;
public class BlockPlaceListener implements Listener {
+ private final GalaxyBoxPvP plugin;
+
+ public BlockPlaceListener(GalaxyBoxPvP plugin) {
+ this.plugin = plugin;
+ }
+
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
if (event.getBlockPlaced().getType() == Material.POLISHED_BLACKSTONE_BUTTON) {
if (event.getItemInHand().hasItemMeta() && event.getItemInHand().getItemMeta().hasDisplayName()) {
event.setCancelled(true); //temp fix
}
- } else if (event.getBlockPlaced().getType() == Material.FURNACE ||
- event.getBlockPlaced().getType() == Material.FURNACE_MINECART ||
- event.getBlockPlaced().getType() == Material.BLAST_FURNACE) {
- Player player = event.getPlayer();
-
- Component message = Component.text("[TIP] ", NamedTextColor.GREEN)
- .decorate(TextDecoration.BOLD)
- .append(Component.text("If you are trying to smelt iron, gold, etc you can use the Smelter Shop. Click ", NamedTextColor.GREEN))
- .append(Component.text("[HERE]", NamedTextColor.GREEN)
- .decorate(TextDecoration.UNDERLINED)
- .clickEvent(ClickEvent.runCommand("/warp smelter")))
- .append(Component.text(" to teleport to the smelter shop!", NamedTextColor.GREEN));
-
- player.sendMessage(message);
+ } else if (event.getBlockPlaced().getType() == Material.FURNACE || event.getBlockPlaced().getType() == Material.FURNACE_MINECART || event.getBlockPlaced().getType() == Material.BLAST_FURNACE) {
+ event.getPlayer().sendMessage(plugin.miniMessage.deserialize("[TIP] If you are trying to smelt iron, gold, etc you can use the Smelter Shop. Click [HERE] to teleport to the smelter shop!"));
}
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntityPickupItemListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntityPickupItemListener.java
index ced0ac6..fee8d9f 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntityPickupItemListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntityPickupItemListener.java
@@ -16,8 +16,6 @@ public class EntityPickupItemListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onItemPickup(EntityPickupItemEvent event) {
- if (event.getEntity() instanceof Player player) {
- plugin.convertInventoryItemsPrep(player, player.getUniqueId());
- }
+ if (event.getEntity() instanceof Player player) plugin.convertInventoryItemsPrep(player, player.getUniqueId());
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntitySpawnListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntitySpawnListener.java
new file mode 100644
index 0000000..c5ba51d
--- /dev/null
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/EntitySpawnListener.java
@@ -0,0 +1,13 @@
+package xyz.lncvrt.galaxyboxpvp.events;
+
+import org.bukkit.entity.EntityType;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntitySpawnEvent;
+
+public class EntitySpawnListener implements Listener {
+ @EventHandler
+ public void onEntitySpawnEvent(EntitySpawnEvent event) {
+ if (event.getEntityType() == EntityType.WITHER) event.setCancelled(true);
+ }
+}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceBurnListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceBurnListener.java
index df4af45..bba6697 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceBurnListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceBurnListener.java
@@ -20,9 +20,6 @@ public class FurnaceBurnListener implements Listener {
public void onFurnaceBurn(FurnaceBurnEvent event) {
Furnace furnace = (Furnace) event.getBlock().getState();
Material smelting = Objects.requireNonNull(furnace.getInventory().getSmelting()).getType();
-
- if (plugin.isRestrictedMaterial(smelting)) {
- event.setCancelled(true);
- }
+ if (plugin.isRestrictedMaterial(smelting)) event.setCancelled(true);
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceSmeltListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceSmeltListener.java
index 0a8b33d..9575e1f 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceSmeltListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/FurnaceSmeltListener.java
@@ -16,9 +16,6 @@ public class FurnaceSmeltListener implements Listener {
@EventHandler
public void onFurnaceSmelt(FurnaceSmeltEvent event) {
Material smelted = event.getSource().getType();
-
- if (plugin.isRestrictedMaterial(smelted)) {
- event.setCancelled(true);
- }
+ if (plugin.isRestrictedMaterial(smelted)) event.setCancelled(true);
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerJoinListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerJoinListener.java
index 9e7cf84..cfc8dad 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerJoinListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerJoinListener.java
@@ -22,10 +22,7 @@ public class PlayerJoinListener implements Listener {
Player player = event.getPlayer();
UUID playerId = player.getUniqueId();
- if (!plugin.autoCompressStatus.containsKey(playerId)) {
- plugin.autoCompressStatus.put(playerId, false);
- }
-
+ if (!plugin.autoCompressStatus.containsKey(playerId)) plugin.autoCompressStatus.put(playerId, false);
player.sendMessage("%sWelcome to LncvrtBox, %s! This is a PvP arena gamemode that was originally called LncvrtBox, and is almost a year old! We reset the server for GalaxyNetwork and a fresh start".formatted(GREEN, player.getName()));
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerMoveListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerMoveListener.java
new file mode 100644
index 0000000..c215222
--- /dev/null
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PlayerMoveListener.java
@@ -0,0 +1,20 @@
+package xyz.lncvrt.galaxyboxpvp.events;
+
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerMoveEvent;
+
+public class PlayerMoveListener implements Listener {
+ @EventHandler
+ private void onSignPlace(PlayerMoveEvent event) {
+ Player player = event.getPlayer();
+ int maxY = player.getWorld().getMaxHeight();
+ if (player.getLocation().getY() >= maxY) {
+ Location newLocation = player.getLocation().clone();
+ newLocation.setY(maxY - 1);
+ player.teleport(newLocation);
+ }
+ }
+}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PrepareItemEnchantListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PrepareItemEnchantListener.java
index a67d403..f873f96 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PrepareItemEnchantListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/PrepareItemEnchantListener.java
@@ -10,8 +10,6 @@ public class PrepareItemEnchantListener implements Listener {
@EventHandler
public void onPrepareItemEnchant(PrepareItemEnchantEvent event) {
ItemStack item = event.getItem();
- if (item.getType() == Material.DIAMOND_PICKAXE || item.getType() == Material.NETHERITE_PICKAXE) {
- event.setCancelled(true);
- }
+ if (item.getType() == Material.DIAMOND_PICKAXE || item.getType() == Material.NETHERITE_PICKAXE) event.setCancelled(true);
}
}
diff --git a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/SignChangeListener.java b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/SignChangeListener.java
index e91c2b2..3ed4c68 100644
--- a/src/main/java/xyz/lncvrt/galaxyboxpvp/events/SignChangeListener.java
+++ b/src/main/java/xyz/lncvrt/galaxyboxpvp/events/SignChangeListener.java
@@ -14,8 +14,6 @@ public class SignChangeListener implements Listener {
@EventHandler
private void onSignPlace(SignChangeEvent event) {
- if (plugin.isMuted(event.getPlayer())) {
- event.setCancelled(true);
- }
+ if (plugin.isMuted(event.getPlayer())) event.setCancelled(true);
}
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 639f4eb..f9ecad6 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -12,4 +12,7 @@ commands:
usage: /autocompress
sky:
description: Teleports you to sky world
+ usage: /sky
+ skyrtp:
+ description: Teleports you to a random location in sky world
usage: /sky
\ No newline at end of file