Bedrock UI for furnace placing, Use Adventure API for better handling of the java message, use MiniMessage for Totem Popping (for gradient), Sort stuff better in Main Class, /ping, change permission in PlaceholderAPIExpansion, Move stuff in PlayerChatListener, use MiniMessage for death messages (gradients, also removed suicide message), remove the Elytra Event check

This commit is contained in:
2024-07-26 15:51:16 -07:00
parent c591a1c235
commit 4a01e0b078
11 changed files with 188 additions and 181 deletions

22
pom.xml
View File

@@ -64,6 +64,10 @@
<id>bstats-repo</id>
<url>https://repo.codemc.io/repository/maven-public/</url>
</repository>
<repository>
<id>opencollab-snapshot</id>
<url>https://repo.opencollab.dev/main/</url>
</repository>
</repositories>
<dependencies>
<dependency>
@@ -96,6 +100,24 @@
<version>7.1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId>
<version>4.17.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.geysermc.geyser</groupId>
<artifactId>api</artifactId>
<version>2.2.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.geysermc.floodgate</groupId>
<artifactId>api</artifactId>
<version>2.2.2-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<java.version>21</java.version>

View File

@@ -10,6 +10,8 @@ import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.geyser.api.GeyserApi;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@@ -22,45 +24,27 @@ import java.util.*;
import java.util.logging.Level;
public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor {
public final Map<UUID, Boolean> autoCompressStatus = new HashMap<>();
public String serverRules;
public boolean chatLocked = false;
private Essentials essentials;
public boolean fixRanTooOften = false;
public GeyserApi geyserApi;
public FloodgateApi floodgateApi;
@Override
public void onEnable() {
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) {
getLogger().warning("PlaceholderAPI not found. Disabling plugin.");
getServer().getPluginManager().disablePlugin(this);
return;
}
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) {
getLogger().warning("PlaceholderAPI not found. Disabling plugin.");
getServer().getPluginManager().disablePlugin(this);
return;
}
if (Bukkit.getPluginManager().getPlugin("Essentials") == null) {
getLogger().warning("Essentials not found. Disabling plugin.");
getServer().getPluginManager().disablePlugin(this);
return;
}
geyserApi = GeyserApi.api();
floodgateApi = FloodgateApi.getInstance();
Plugin essentialsPlugin = Bukkit.getServer().getPluginManager().getPlugin("Essentials");
if (essentialsPlugin == null) {
getLogger().warning("Essentials not found. Disabling plugin.");
getServer().getPluginManager().disablePlugin(this);
return;
getLogger().info("Essentials detected. Attempting to hook...");
if (essentialsPlugin instanceof Essentials) {
essentials = (Essentials) essentialsPlugin;
getLogger().info("Essentials hooked successfully.");
} else {
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.");
}
getLogger().info("Essentials failed to hook. Disabling plugin");
getServer().getPluginManager().disablePlugin(this);
}
if (new PlaceholderAPIExpansion().register()) {
@@ -71,7 +55,20 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor
return;
}
getServer().getPluginManager().registerEvents(new BlockPlaceListener(), this);
registerEvents();
registerCommands();
loadAutoCompressStatus();
loadServerRules();
}
@Override
public void onDisable() {
saveAutoCompressStatus();
}
private void registerEvents() {
getServer().getPluginManager().registerEvents(new BlockPlaceListener(this), this);
getServer().getPluginManager().registerEvents(new BlockBreakListener(this), this);
getServer().getPluginManager().registerEvents(new CraftItemListener(), this);
getServer().getPluginManager().registerEvents(new EntityDamageListener(this), this);
@@ -82,33 +79,26 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor
getServer().getPluginManager().registerEvents(new PlayerChatListener(this), this);
getServer().getPluginManager().registerEvents(new PlayerDeathListener(), this);
getServer().getPluginManager().registerEvents(new PlayerDropItemListener(this), this);
getServer().getPluginManager().registerEvents(new PlayerElytraBoostListener(), this);
getServer().getPluginManager().registerEvents(new PlayerItemConsumeListener(), this);
getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this);
getServer().getPluginManager().registerEvents(new PlayerMoveListener(), this);
getServer().getPluginManager().registerEvents(new PortalCreateListener(), 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);
getServer().getPluginManager().registerEvents(this, this);
}
loadAutoCompressStatus();
loadServerRules();
private void registerCommands() {
Objects.requireNonNull(getCommand("autocompress")).setExecutor(new Autocompress(this));
Objects.requireNonNull(getCommand("clearchat")).setExecutor(new Clearchat());
Objects.requireNonNull(getCommand("fix")).setExecutor(new Fix(this));
Objects.requireNonNull(getCommand("link")).setExecutor(new Link());
Objects.requireNonNull(getCommand("lockchat")).setExecutor(new Lockchat(this));
Objects.requireNonNull(getCommand("ping")).setExecutor(new Ping(this));
Objects.requireNonNull(getCommand("rules")).setExecutor(new Rules(this));
Objects.requireNonNull(getCommand("sky")).setExecutor(new Sky());
Objects.requireNonNull(getCommand("Unlink")).setExecutor(new Unlink());
}
@Override
public void onDisable() {
saveAutoCompressStatus();
Objects.requireNonNull(getCommand("unlink")).setExecutor(new Unlink());
}
public boolean isRestrictedMaterial(Material material) {

View File

@@ -84,7 +84,7 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
case "afk_staff" -> {
int staffAfkCount = 0;
for (Player p : Bukkit.getServer().getOnlinePlayers()) {
if (p.hasPermission("lncvrtutils.staff") && isAfk(p)) {
if (p.hasPermission("lncvrtbox.staff") && isAfk(p)) {
staffAfkCount++;
}
}
@@ -115,24 +115,18 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
case "total_joins_formatted" -> {
return formatCompact(Bukkit.getOfflinePlayers().length);
}
case "seasontwocountdown" -> {
long targetTime = 1719804600L;
long currentTime = System.currentTimeMillis() / 1000;
if (currentTime >= targetTime) {
return "Starting Soon!";
} else {
long remainingSeconds = targetTime - currentTime;
return formatTime(remainingSeconds);
}
}
case "kdr" -> {
int kills = Integer.parseInt(PlaceholderAPI.setPlaceholders(player, "%statistic_player_kills%"));
int deaths = Integer.parseInt(PlaceholderAPI.setPlaceholders(player, "%statistic_deaths%"));
int kills = getPlayerKills(player);
int deaths = getPlayerDeaths(player);
double kdr = (deaths == 0) ? kills : (double) kills / deaths;
String format = decimalPlaces > 0 ? "0." + repeat("0", decimalPlaces) : "0";
return new DecimalFormat(format).format(kdr);
}
case "playtime" -> {
long playtimeTicks = player.getStatistic(org.bukkit.Statistic.PLAY_ONE_MINUTE);
long playtimeSeconds = playtimeTicks / 20;
return formatTime(playtimeSeconds);
}
}
return null;
@@ -150,7 +144,7 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
private String formatCompact(int number) {
DecimalFormat decimalFormat = new DecimalFormat("#.#");
if (number >= 1_000_000) {
return decimalFormat.format(number / 1_000_000.0) + "M";
return decimalFormat.format(number / 1_000_000.0) + "M";
} else if (number >= 1_000) {
return decimalFormat.format(number / 1_000.0) + "k";
} else {
@@ -159,8 +153,6 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
}
private String formatTime(long seconds) {
if (seconds <= 0) return "Starting Soon!";
long days = seconds / 86400;
seconds %= 86400;
long hours = seconds / 3600;
@@ -169,11 +161,19 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion {
seconds %= 60;
StringBuilder formattedTime = new StringBuilder();
if (days > 0) formattedTime.append(days).append("d ");
if (hours > 0 || days > 0) formattedTime.append(hours).append("h ");
if (minutes > 0 || hours > 0 || days > 0) formattedTime.append(minutes).append("m ");
if (seconds > 0 || minutes > 0 || hours > 0 || days > 0) formattedTime.append(seconds).append("s");
if (days > 0) formattedTime.append(days).append(" days, ");
if (hours > 0 || days > 0) formattedTime.append(hours).append(" hours, ");
if (minutes > 0 || hours > 0 || days > 0) formattedTime.append(minutes).append(" minutes, ");
formattedTime.append(seconds).append(" seconds");
return formattedTime.toString().trim();
}
public int getPlayerKills(Player player) {
return player.getStatistic(org.bukkit.Statistic.PLAYER_KILLS);
}
public int getPlayerDeaths(Player player) {
return player.getStatistic(org.bukkit.Statistic.DEATHS);
}
}

View File

@@ -0,0 +1,50 @@
package io.github.lncvrt.lncvrtbox.commands;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
import org.bukkit.ChatColor;
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 static org.bukkit.ChatColor.*;
public class Ping implements CommandExecutor {
private final LncvrtBox plugin;
public Ping(LncvrtBox plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender instanceof Player player) {
String targetName = (args.length > 0 && args[0] != null && !args[0].isEmpty() && !args[0].equals("!")) ? args[0].replaceAll("\\.[^a-zA-Z0-9_]", "").substring(0, Math.min(args[0].replaceAll("[^a-zA-Z0-9_]", "").length(), 16)) : player.getName();
Player target = player;
if (!targetName.equalsIgnoreCase(player.getName())) {
target = plugin.getServer().getPlayer(targetName);
if (target == null) {
player.sendMessage(String.format("%s%s%s is not online!", RED, targetName, GRAY));
return true;
}
}
targetName = target.getName();
int ping = target.getPing();
ChatColor color;
if (ping < 79) {
color = GREEN;
} else if (ping < 150) {
color = YELLOW;
} else {
color = RED;
}
player.sendMessage(String.format("%s%s%s's ping is: %s%s%sms", RED, targetName, GRAY, color, ping, GRAY));
}
return true;
}
}

View File

@@ -1,47 +1,62 @@
package io.github.lncvrt.lncvrtbox.events;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.ChatColor;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
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 static org.bukkit.ChatColor.*;
import org.geysermc.cumulus.form.CustomForm;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
public class BlockPlaceListener implements Listener {
private final LncvrtBox plugin;
public BlockPlaceListener(LncvrtBox 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()) {
String displayName = ChatColor.stripColor(event.getItemInHand().getItemMeta().getDisplayName());
String displayName = event.getItemInHand().getItemMeta().getDisplayName();
if (displayName.equalsIgnoreCase("Coal Fragment")) {
event.setCancelled(true);
}
}
} else if (event.getBlockPlaced().getType() == Material.FURNACE || event.getBlockPlaced().getType() == Material.FURNACE_MINECART || event.getBlockPlaced().getType() == Material.BLAST_FURNACE) {
} else if (event.getBlockPlaced().getType() == Material.FURNACE ||
event.getBlockPlaced().getType() == Material.FURNACE_MINECART ||
event.getBlockPlaced().getType() == Material.BLAST_FURNACE) {
Player player = event.getPlayer();
String message = String.format("%s%s[TIP]%s%s If you are trying to smelt iron, gold, etc you can use the Smelter Shop. Click %s[HERE]%s to teleport to the smelter shop! (if you are on bedrock, instead of clicking there run %s/warp smelter%s.", GREEN, BOLD, RESET, GREEN, UNDERLINE, GREEN, UNDERLINE, GREEN);
TextComponent fullMessage;
int hereIndex = message.indexOf("[HERE]");
if (plugin.geyserApi.isBedrockPlayer(player.getUniqueId())) {
FloodgatePlayer floodgatePlayer = plugin.floodgateApi.getPlayer(player.getUniqueId());
floodgatePlayer.sendForm(CustomForm.builder()
.title("Smelter Shop")
.label("If you are trying to smelt iron, gold, etc, you can use the Smelter Shop.")
.toggle("Warp to smelter?")
.validResultHandler(response -> {
if (Boolean.TRUE.equals(response.next())) {
player.performCommand("warp smelter");
}
})
.build());
} else {
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));
TextComponent clickableHere = new TextComponent("[HERE]");
clickableHere.setColor(net.md_5.bungee.api.ChatColor.GREEN);
clickableHere.setUnderlined(true);
clickableHere.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/warp smelter"));
TextComponent[] components = new TextComponent[] {
new TextComponent(message.substring(0, hereIndex)),
clickableHere,
new TextComponent(message.substring(hereIndex + "[HERE]".length()))
};
fullMessage = new TextComponent(components);
player.spigot().sendMessage(fullMessage);
player.sendMessage(message);
}
}
}
}

View File

@@ -1,14 +1,13 @@
package io.github.lncvrt.lncvrtbox.events;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityResurrectEvent;
import static org.bukkit.ChatColor.*;
public class EntityResurrectListener implements Listener {
private final LncvrtBox plugin;
@@ -25,7 +24,7 @@ public class EntityResurrectListener implements Listener {
return;
}
player.setCooldown(Material.TOTEM_OF_UNDYING, 20 * 5);
plugin.getServer().broadcastMessage("%s%sLncvrtBox %s%s» %s%s has popped their totem".formatted(GOLD, BOLD, GRAY, BOLD, RESET, player.getName()));
plugin.getServer().broadcast(MiniMessage.miniMessage().deserialize("<b><gradient:#FFAA00:#FFFF55>LncvrtBox</gradient></b> <gray>»</gray> " + player.getName() + " has popped their totem"));
}
}
}

View File

@@ -6,7 +6,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerChatEvent;
import java.util.Base64;
@@ -21,40 +20,37 @@ public class PlayerChatListener implements Listener {
@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event) {
event.setMessage(event.getMessage().replace("wlc", "welcome").replace("linqverted", "Lncvrt").replace("linqvert", "Lncvrt"));
if (plugin.chatLocked && !event.getPlayer().hasPermission("chatlock.bypass")) {
event.setCancelled(true);
event.getPlayer().sendMessage("Chat is currently locked. Admins can still view your message.");
for (Player admin : Bukkit.getServer().getOnlinePlayers()) {
if (admin.hasPermission("chatlock.admin")) {
admin.sendMessage("%s%s%s tried to say: %s".formatted(GRAY, ITALIC, event.getPlayer().getName(), event.getMessage()));
}
}
}
}
@EventHandler
public void onPlayerChat(PlayerChatEvent event) {
String message = event.getMessage().toLowerCase();
String message = event.getMessage().replaceAll("[^a-zA-Z0-9\\p{Punct}\\s]", "").replaceAll("\\s+", " ").trim();
Player player = event.getPlayer();
String[] slurs = {"bmlnZ2Vy", "bmlnZ2E="};
event.setMessage(message);
if (plugin.chatLocked && !player.hasPermission("chatlock.bypass")) {
event.setCancelled(true);
player.sendMessage("Chat is currently locked. Admins can still view your message.");
for (Player admin : Bukkit.getServer().getOnlinePlayers()) {
if (admin.hasPermission("chatlock.admin")) {
admin.sendMessage("%s%s%s tried to say: %s".formatted(GRAY, ITALIC, player.getName(), event.getMessage()));
}
}
}
for (String slur : slurs) {
if (message.contains(new String(Base64.getDecoder().decode(slur)))) {
if (message.toLowerCase().contains(new String(Base64.getDecoder().decode(slur)))) {
player.chat("Oops! I'm now banned because I said a slur.");
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1w Slurs".formatted(player.getName()));
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1w Slurs".formatted(player.getName()));
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute %s 1mo Slurs".formatted(player.getName()));
plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1w Slurs".formatted(player.getName()));
plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1w Slurs".formatted(player.getName()));
plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "mute %s 1mo Slurs".formatted(player.getName()));
event.setCancelled(true);
break;
}
}
if (message.contains("chillindabox") || (message.contains("minehut.gg") && !(message.contains("lncvrtboxffa.minehut.gg") || message.contains("lncvrtboxes.minehut.gg")))) {
if (message.toLowerCase().contains("minehut.gg")) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1m Advertising".formatted(player.getName()));
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1m Advertising".formatted(player.getName()));
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute %s 3m Advertising".formatted(player.getName()));

View File

@@ -1,17 +1,13 @@
package io.github.lncvrt.lncvrtbox.events;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import static org.bukkit.ChatColor.*;
public class PlayerDeathListener implements Listener {
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
String suicideMsg = "";
if (event.getEntity() == event.getEntity().getKiller()) suicideMsg = "%s (suicide)".formatted(RESET);
event.setDeathMessage("%s%sLncvrtBox %s%s» %s%s%s".formatted(GOLD, BOLD, GRAY, BOLD, RESET, event.getDeathMessage(), suicideMsg));
event.deathMessage(MiniMessage.miniMessage().deserialize("<b><gradient:#FFAA00:#FFFF55>LncvrtBox</gradient></b> <gray>»</gray> " + event.getDeathMessage()));
}
}

View File

@@ -1,32 +0,0 @@
package io.github.lncvrt.lncvrtbox.events;
import com.destroystokyo.paper.event.player.PlayerElytraBoostEvent;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import static org.bukkit.ChatColor.RED;
public class PlayerElytraBoostListener implements Listener {
@EventHandler
public void onElytraRocketBoost(PlayerElytraBoostEvent event) {
RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(event.getPlayer().getWorld()));
if (regionManager != null) {
BlockVector3 location = BlockVector3.at(event.getPlayer().getLocation().getX(), event.getPlayer().getLocation().getY(), event.getPlayer().getLocation().getZ());
ApplicableRegionSet applicableRegions = regionManager.getApplicableRegions(location);
for (ProtectedRegion region : applicableRegions) {
if (region.getId().equalsIgnoreCase("event")) {
event.setCancelled(true);
event.getPlayer().setGliding(false);
event.getPlayer().sendMessage(RED + "Elytras are disabled in events.");
break;
}
}
}
}
}

View File

@@ -1,34 +0,0 @@
package io.github.lncvrt.lncvrtbox.events;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import static org.bukkit.ChatColor.RED;
public class PlayerMoveListener implements Listener {
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
if (event.getPlayer().isGliding()) {
RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(event.getPlayer().getWorld()));
if (regionManager != null) {
BlockVector3 location = BlockVector3.at(event.getPlayer().getLocation().getX(), event.getPlayer().getLocation().getY(), event.getPlayer().getLocation().getZ());
ApplicableRegionSet applicableRegions = regionManager.getApplicableRegions(location);
for (ProtectedRegion region : applicableRegions) {
if (region.getId().equalsIgnoreCase("event")) {
event.setCancelled(true);
event.getPlayer().setGliding(false);
event.getPlayer().sendMessage(RED + "Elytras are disabled in events.");
break;
}
}
}
}
}
}

View File

@@ -7,6 +7,8 @@ depend:
- Essentials
- WorldEdit
- WorldGuard
- Geyser-Spigot
- floodgate
commands:
autocompress:
description: Auto compressor
@@ -27,6 +29,9 @@ commands:
lockchat:
description: Lockchat
usage: /lockchat
ping:
description: Shows your ping
usage: /ping [player]
rules:
description: Rules
usage: /rules