Properly sort & put commands in their spots

This commit is contained in:
2024-07-14 17:40:41 -07:00
parent 02d30c3c3e
commit 3c63ef1fe9
10 changed files with 279 additions and 176 deletions

View File

@@ -1,10 +1,7 @@
package io.github.lncvrt.lncvrtbox; package io.github.lncvrt.lncvrtbox;
import com.earth2me.essentials.Essentials; import com.earth2me.essentials.Essentials;
import com.sk89q.worldedit.EditSession; import io.github.lncvrt.lncvrtbox.commands.*;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.function.pattern.RandomPattern;
import com.sk89q.worldedit.world.block.BlockState;
import io.github.lncvrt.lncvrtbox.events.*; import io.github.lncvrt.lncvrtbox.events.*;
import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.LuckPermsProvider;
@@ -13,24 +10,16 @@ import net.luckperms.api.node.Node;
import net.luckperms.api.node.NodeType; import net.luckperms.api.node.NodeType;
import net.luckperms.api.node.types.SuffixNode; import net.luckperms.api.node.types.SuffixNode;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException; import org.json.simple.parser.ParseException;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -38,14 +27,11 @@ import java.io.*;
import java.util.*; import java.util.*;
import java.util.logging.Level; import java.util.logging.Level;
import static org.bukkit.ChatColor.*;
import static org.bukkit.ChatColor.translateAlternateColorCodes;
public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor { public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor {
private LuckPerms luckPerms; private LuckPerms luckPerms;
public final Map<UUID, Boolean> autoCompressStatus = new HashMap<>(); public final Map<UUID, Boolean> autoCompressStatus = new HashMap<>();
private String serverRules; public String serverRules;
public boolean chatLocked = false; public boolean chatLocked = false;
private Essentials essentials; private Essentials essentials;
@@ -124,13 +110,14 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor
loadAutoCompressStatus(); loadAutoCompressStatus();
loadServerRules(); loadServerRules();
Objects.requireNonNull(getCommand("autocompress")).setExecutor(this); Objects.requireNonNull(getCommand("autocompress")).setExecutor(new Autocompress(this));
Objects.requireNonNull(getCommand("sky")).setExecutor(this); Objects.requireNonNull(getCommand("clearchat")).setExecutor(new Clearchat());
Objects.requireNonNull(getCommand("rules")).setExecutor(this); Objects.requireNonNull(getCommand("fix")).setExecutor(new Fix());
Objects.requireNonNull(getCommand("link")).setExecutor(this); Objects.requireNonNull(getCommand("link")).setExecutor(new Link());
Objects.requireNonNull(getCommand("unlink")).setExecutor(this); Objects.requireNonNull(getCommand("lockchat")).setExecutor(new Lockchat(this));
Objects.requireNonNull(getCommand("clearchat")).setExecutor(this); Objects.requireNonNull(getCommand("rules")).setExecutor(new Rules(this));
Objects.requireNonNull(getCommand("settag")).setExecutor(this); Objects.requireNonNull(getCommand("sky")).setExecutor(new Sky());
Objects.requireNonNull(getCommand("Unlink")).setExecutor(new Unlink());
} }
@Override @Override
@@ -268,137 +255,6 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor
} }
} }
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, String label, String[] args) {
if (label.equalsIgnoreCase("autocompress")) {
if (!(sender instanceof Player player)) {
sender.sendMessage(RED + "This command can only be executed by a player.");
return true;
}
UUID playerId = player.getUniqueId();
boolean currentStatus = autoCompressStatus.getOrDefault(playerId, false);
autoCompressStatus.put(playerId, !currentStatus);
if (!currentStatus) {
player.sendMessage(GREEN + "Auto-compress enabled.");
} else {
player.sendMessage(RED + "Auto-compress disabled.");
}
return true;
} else if (label.equalsIgnoreCase("sky")) {
if (sender instanceof Player player) {
player.performCommand("warp sky");
}
return true;
} else if (label.equalsIgnoreCase("rules")) {
if (serverRules != null && !serverRules.isEmpty()) {
sender.sendMessage(translateAlternateColorCodes('&', serverRules));
} else {
sender.sendMessage("%sServer rules are currently unavailable.".formatted(RED));
}
return true;
} else if (label.equalsIgnoreCase("link")) {
if (sender instanceof Player player) {
player.performCommand("discord link");
}
return true;
} else if (label.equalsIgnoreCase("unlink")) {
if (sender instanceof Player player) {
player.performCommand("discord unlink");
}
return true;
} else if (label.equalsIgnoreCase("clearchat")) {
if (sender instanceof Player player) {
if (!player.hasPermission("lncvrtbox.clearchat")) {
player.sendMessage("%sYou do not have permission to use this command.".formatted(RED));
return true;
}
}
for (int i = 0; i < 1000; i++) {
Bukkit.broadcastMessage("");
}
return true;
} else if (label.equalsIgnoreCase("settag")) {
sender.sendMessage(RED + "Setting tags has been removed. Sorry!");
return true;
} else if (label.equalsIgnoreCase("lockchat")) {
if (sender.hasPermission("chatlock.lock")) {
chatLocked = !chatLocked;
sender.sendMessage("Chat " + (chatLocked ? "locked." : "unlocked."));
} else {
sender.sendMessage("You do not have permission to use this command.");
}
return true;
} else if (label.equalsIgnoreCase("fix")) {
//TODO: make selectionwall4 (front wall)
com.sk89q.worldedit.world.World world = BukkitAdapter.adapt(Bukkit.getWorld("world"));
CuboidRegion selectionground1 = new CuboidRegion(world, BlockVector3.at(131, 100, 105), BlockVector3.at(-67, 100, -123));
CuboidRegion selectionwall1 = new CuboidRegion(world, BlockVector3.at(-66, 139, 105), BlockVector3.at(130, 101, 105));
CuboidRegion selectionwall2 = new CuboidRegion(world, BlockVector3.at(-67, 139, 104), BlockVector3.at(-67, 101, -122));
CuboidRegion selectionwall3 = new CuboidRegion(world, BlockVector3.at(-67, 139, -123), BlockVector3.at(130, 101, -123));
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState deepslate_tiles = BukkitAdapter.adapt(Material.DEEPSLATE_TILES.createBlockData());
BlockState deepslate_bricks = BukkitAdapter.adapt(Material.DEEPSLATE_BRICKS.createBlockData());
pat.add(deepslate_tiles, 0.5);
pat.add(deepslate_bricks, 0.5);
editSession.setBlocks(selectionground1, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState gold_block = BukkitAdapter.adapt(Material.GOLD_BLOCK.createBlockData());
BlockState raw_gold_block = BukkitAdapter.adapt(Material.RAW_GOLD_BLOCK.createBlockData());
BlockState yellow_concrete = BukkitAdapter.adapt(Material.YELLOW_CONCRETE.createBlockData());
pat.add(gold_block, 0.33333333333);
pat.add(raw_gold_block, 0.33333333333);
pat.add(yellow_concrete, 0.33333333333);
editSession.setBlocks(selectionwall1, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState lapis_block = BukkitAdapter.adapt(Material.LAPIS_BLOCK.createBlockData());
BlockState blue_concrete_powder = BukkitAdapter.adapt(Material.BLUE_CONCRETE_POWDER.createBlockData());
BlockState blue_concrete = BukkitAdapter.adapt(Material.BLUE_CONCRETE.createBlockData());
pat.add(lapis_block, 0.33333333333);
pat.add(blue_concrete_powder, 0.33333333333);
pat.add(blue_concrete, 0.33333333333);
editSession.setBlocks(selectionwall2, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState lime_concrete = BukkitAdapter.adapt(Material.LIME_CONCRETE.createBlockData());
BlockState melon = BukkitAdapter.adapt(Material.MELON.createBlockData());
BlockState green_glazed_terracotta = BukkitAdapter.adapt(Material.GREEN_GLAZED_TERRACOTTA.createBlockData());
pat.add(lime_concrete, 0.33333333333);
pat.add(melon, 0.33333333333);
pat.add(green_glazed_terracotta, 0.33333333333);
editSession.setBlocks(selectionwall3, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
sender.sendMessage("fixed!");
return true;
}
return false;
}
public boolean isAfk(Player player) { public boolean isAfk(Player player) {
com.earth2me.essentials.User user = essentials.getUser(player); com.earth2me.essentials.User user = essentials.getUser(player);
return user.isAfk(); return user.isAfk();

View File

@@ -0,0 +1,36 @@
package io.github.lncvrt.lncvrtbox.commands;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
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 java.util.UUID;
import static org.bukkit.ChatColor.GREEN;
import static org.bukkit.ChatColor.RED;
public record Autocompress(LncvrtBox plugin) implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (!(sender instanceof Player player)) {
sender.sendMessage(RED + "This command can only be executed by a player.");
return true;
}
UUID playerId = player.getUniqueId();
boolean currentStatus = plugin.autoCompressStatus.getOrDefault(playerId, false);
plugin.autoCompressStatus.put(playerId, !currentStatus);
if (!currentStatus) {
player.sendMessage(GREEN + "Auto-compress enabled.");
} else {
player.sendMessage(RED + "Auto-compress disabled.");
}
return true;
}
}

View File

@@ -0,0 +1,28 @@
package io.github.lncvrt.lncvrtbox.commands;
import org.bukkit.Bukkit;
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.RED;
public class Clearchat implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender instanceof Player player) {
if (!player.hasPermission("lncvrtbox.clearchat")) {
player.sendMessage("%sYou do not have permission to use this command.".formatted(RED));
return true;
}
}
for (int i = 0; i < 1000; i++) {
Bukkit.broadcastMessage("");
}
return true;
}
}

View File

@@ -0,0 +1,86 @@
package io.github.lncvrt.lncvrtbox.commands;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.function.pattern.RandomPattern;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.world.block.BlockState;
import org.bukkit.Bukkit;
import org.bukkit.Material;
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;
public class Fix implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
//TODO: make selectionwall4 (front wall)
com.sk89q.worldedit.world.World world = BukkitAdapter.adapt(Bukkit.getWorld("world"));
CuboidRegion selectionground1 = new CuboidRegion(world, BlockVector3.at(131, 100, 105), BlockVector3.at(-67, 100, -123));
CuboidRegion selectionwall1 = new CuboidRegion(world, BlockVector3.at(-66, 139, 105), BlockVector3.at(130, 101, 105));
CuboidRegion selectionwall2 = new CuboidRegion(world, BlockVector3.at(-67, 139, 104), BlockVector3.at(-67, 101, -122));
CuboidRegion selectionwall3 = new CuboidRegion(world, BlockVector3.at(-67, 139, -123), BlockVector3.at(130, 101, -123));
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState deepslate_tiles = BukkitAdapter.adapt(Material.DEEPSLATE_TILES.createBlockData());
BlockState deepslate_bricks = BukkitAdapter.adapt(Material.DEEPSLATE_BRICKS.createBlockData());
pat.add(deepslate_tiles, 0.5);
pat.add(deepslate_bricks, 0.5);
editSession.setBlocks(selectionground1, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState gold_block = BukkitAdapter.adapt(Material.GOLD_BLOCK.createBlockData());
BlockState raw_gold_block = BukkitAdapter.adapt(Material.RAW_GOLD_BLOCK.createBlockData());
BlockState yellow_concrete = BukkitAdapter.adapt(Material.YELLOW_CONCRETE.createBlockData());
pat.add(gold_block, 0.33333333333);
pat.add(raw_gold_block, 0.33333333333);
pat.add(yellow_concrete, 0.33333333333);
editSession.setBlocks(selectionwall1, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState lapis_block = BukkitAdapter.adapt(Material.LAPIS_BLOCK.createBlockData());
BlockState blue_concrete_powder = BukkitAdapter.adapt(Material.BLUE_CONCRETE_POWDER.createBlockData());
BlockState blue_concrete = BukkitAdapter.adapt(Material.BLUE_CONCRETE.createBlockData());
pat.add(lapis_block, 0.33333333333);
pat.add(blue_concrete_powder, 0.33333333333);
pat.add(blue_concrete, 0.33333333333);
editSession.setBlocks(selectionwall2, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
RandomPattern pat = new RandomPattern();
BlockState lime_concrete = BukkitAdapter.adapt(Material.LIME_CONCRETE.createBlockData());
BlockState melon = BukkitAdapter.adapt(Material.MELON.createBlockData());
BlockState green_glazed_terracotta = BukkitAdapter.adapt(Material.GREEN_GLAZED_TERRACOTTA.createBlockData());
pat.add(lime_concrete, 0.33333333333);
pat.add(melon, 0.33333333333);
pat.add(green_glazed_terracotta, 0.33333333333);
editSession.setBlocks(selectionwall3, pat);
} catch (MaxChangedBlocksException ex) {
ex.printStackTrace();
}
sender.sendMessage("fixed!");
return true;
}
}

View File

@@ -0,0 +1,18 @@
package io.github.lncvrt.lncvrtbox.commands;
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;
public class Link implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender instanceof Player player) {
player.performCommand("discord link");
}
return true;
}
}

View File

@@ -0,0 +1,24 @@
package io.github.lncvrt.lncvrtbox.commands;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import static org.bukkit.ChatColor.RED;
import static org.bukkit.ChatColor.translateAlternateColorCodes;
public record Lockchat(LncvrtBox plugin) implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender.hasPermission("chatlock.lock")) {
plugin.chatLocked = !plugin.chatLocked;
sender.sendMessage("Chat " + (plugin.chatLocked ? "locked." : "unlocked."));
} else {
sender.sendMessage("You do not have permission to use this command.");
}
return true;
}
}

View File

@@ -0,0 +1,22 @@
package io.github.lncvrt.lncvrtbox.commands;
import io.github.lncvrt.lncvrtbox.LncvrtBox;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import static org.bukkit.ChatColor.*;
public record Rules(LncvrtBox plugin) implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (plugin.serverRules != null && !plugin.serverRules.isEmpty()) {
sender.sendMessage(translateAlternateColorCodes('&', plugin.serverRules));
} else {
sender.sendMessage("%sServer rules are currently unavailable.".formatted(RED));
}
return true;
}
}

View File

@@ -0,0 +1,18 @@
package io.github.lncvrt.lncvrtbox.commands;
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;
public class Sky implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender instanceof Player player) {
player.performCommand("warp sky");
}
return true;
}
}

View File

@@ -0,0 +1,18 @@
package io.github.lncvrt.lncvrtbox.commands;
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;
public class Unlink implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if (sender instanceof Player player) {
player.performCommand("discord link");
}
return true;
}
}

View File

@@ -7,34 +7,31 @@ depend:
- LuckPerms - LuckPerms
- Essentials - Essentials
commands: commands:
settag: autocompress:
description: Command has been removed description: Auto compressor
usage: /settag usage: /autocompress
sky:
description: Teleports you to sky world
usage: /sky
clearchat: clearchat:
description: Clears chat description: Clears chat
usage: /clearchat usage: /clearchat
aliases: aliases:
- cc - cc
permission: lncvrtbox.clearchat permission: lncvrtbox.clearchat
link:
description: Links your discord
usage: /link
unlink:
description: Unlinks your discord
usage: /unlink
autocompress:
description: Auto compressor
usage: /autocompress
rules:
description: Rules
usage: /rules
lockchat:
description: Lockchat
usage: /lockchat
fix: fix:
description: fix description: fix
permission: lncvrtbox.admin permission: lncvrtbox.admin
usage: /fix usage: /fix
link:
description: Links your discord
usage: /link
lockchat:
description: Lockchat
usage: /lockchat
rules:
description: Rules
usage: /rules
sky:
description: Teleports you to sky world
usage: /sky
unlink:
description: Unlinks your discord
usage: /unlink