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:
22
pom.xml
22
pom.xml
@@ -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>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
50
src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java
Normal file
50
src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user