Added a bypass for dupeban
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
|||||||
/.idea/
|
/.idea/
|
||||||
|
/.gradle/
|
||||||
|
/build/
|
||||||
|
|||||||
Binary file not shown.
BIN
.gradle/8.2-rc-2/checksums/md5-checksums.bin
Normal file
BIN
.gradle/8.2-rc-2/checksums/md5-checksums.bin
Normal file
Binary file not shown.
BIN
.gradle/8.2-rc-2/checksums/sha1-checksums.bin
Normal file
BIN
.gradle/8.2-rc-2/checksums/sha1-checksums.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
.gradle/8.2-rc-2/executionHistory/executionHistory.lock
Normal file
BIN
.gradle/8.2-rc-2/executionHistory/executionHistory.lock
Normal file
Binary file not shown.
BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
Binary file not shown.
2
.gradle/buildOutputCleanup/cache.properties
Normal file
2
.gradle/buildOutputCleanup/cache.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#Tue Feb 27 07:35:11 CST 2024
|
||||||
|
gradle.version=8.2-rc-2
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
package io.github.thetrouper.ultradupe.cmds;
|
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.Global;
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
|
||||||
import io.github.thetrouper.ultradupe.data.DupeBanStorage;
|
|
||||||
import io.github.thetrouper.ultradupe.data.GUIs.DupeBanGUI;
|
|
||||||
import io.github.thetrouper.ultradupe.server.functions.DupeBanCheck;
|
|
||||||
import io.github.thetrouper.ultradupe.server.sound.SoundPlayer;
|
|
||||||
import io.github.thetrouper.ultradupe.server.util.Text;
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "dupebans", permission = @Permission("ultradupe.dupebans"), printStackTrace = true)
|
|
||||||
public class DupeBansCommand implements CustomCommand {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
|
||||||
Player p = (Player) sender;
|
|
||||||
switch (args.get(0).toString()) {
|
|
||||||
case "add" -> {
|
|
||||||
if (!p.hasPermission("ultradupe.dupebans.edit")) return;
|
|
||||||
Material m = p.getInventory().getItemInMainHand().getType();
|
|
||||||
if (UltraDupe.dupeBanStorage.dupeBans.contains(m)) {
|
|
||||||
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is already on the dupe ban listr.".formatted(Text.cleanName(m.toString())))));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UltraDupe.dupeBanStorage.dupeBans.add(m);
|
|
||||||
p.sendMessage(Component.text(Text.prefix("&7You have added &c%s&7 to the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
|
||||||
UltraDupe.dupeBanStorage.save();
|
|
||||||
}
|
|
||||||
case "remove" -> {
|
|
||||||
if (!p.hasPermission("ultradupe.dupebans.edit")) return;
|
|
||||||
Material m = p.getInventory().getItemInMainHand().getType();
|
|
||||||
if (!UltraDupe.dupeBanStorage.dupeBans.contains(m)) {
|
|
||||||
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is not on the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UltraDupe.dupeBanStorage.dupeBans.remove(m);
|
|
||||||
p.sendMessage(Component.text(Text.prefix("&7You have removed &a%s&7 from the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
|
||||||
UltraDupe.dupeBanStorage.save();
|
|
||||||
}
|
|
||||||
default -> {
|
|
||||||
StringBuilder dupeBanList = new StringBuilder(Text.prefix("&7There are currently &e%s&7 dupe bans.".formatted(UltraDupe.dupeBanStorage.dupeBans.size())));
|
|
||||||
for (Material dupeBan : UltraDupe.dupeBanStorage
|
|
||||||
.dupeBans) {
|
|
||||||
dupeBanList.append(Global.instance.color("\n&6 - &c%s".formatted(Text.cleanName(dupeBan.toString()))));
|
|
||||||
}
|
|
||||||
p.sendMessage(dupeBanList.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
|
||||||
b.then(b.arg("add","remove"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
package io.github.thetrouper.ultradupe;
|
package me.trouper.ultradupe;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.PDK;
|
import io.github.itzispyder.pdk.PDK;
|
||||||
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
import io.github.thetrouper.ultradupe.cmds.DupeBansCommand;
|
import me.trouper.ultradupe.cmds.DupeBansCommand;
|
||||||
import io.github.thetrouper.ultradupe.cmds.DupeCommand;
|
import me.trouper.ultradupe.cmds.DupeCommand;
|
||||||
import io.github.thetrouper.ultradupe.cmds.MultiplyCommand;
|
import me.trouper.ultradupe.cmds.MultiplyCommand;
|
||||||
import io.github.thetrouper.ultradupe.data.DupeBanStorage;
|
import me.trouper.ultradupe.cmds.UltraDupeCommand;
|
||||||
import io.github.thetrouper.ultradupe.data.config.Config;
|
import me.trouper.ultradupe.data.DupeBanStorage;
|
||||||
import io.github.thetrouper.ultradupe.events.GuiEvents;
|
import me.trouper.ultradupe.data.config.Config;
|
||||||
|
import me.trouper.ultradupe.events.GuiEvents;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
@@ -22,8 +23,6 @@ public final class UltraDupe extends JavaPlugin {
|
|||||||
private static final File dupeBans = new File("plugins/UltraDupe/dupebans.json");
|
private static final File dupeBans = new File("plugins/UltraDupe/dupebans.json");
|
||||||
public static Config config = JsonSerializable.load(cfgfile, Config.class, new Config());
|
public static Config config = JsonSerializable.load(cfgfile, Config.class, new Config());
|
||||||
public static DupeBanStorage dupeBanStorage = JsonSerializable.load(dupeBans, DupeBanStorage.class, new DupeBanStorage());
|
public static DupeBanStorage dupeBanStorage = JsonSerializable.load(dupeBans, DupeBanStorage.class, new DupeBanStorage());
|
||||||
public static final PluginManager manager = Bukkit.getPluginManager();
|
|
||||||
|
|
||||||
public static final Logger log = Bukkit.getLogger();
|
public static final Logger log = Bukkit.getLogger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,6 +52,7 @@ public final class UltraDupe extends JavaPlugin {
|
|||||||
new DupeCommand().register();
|
new DupeCommand().register();
|
||||||
new DupeBansCommand().register();
|
new DupeBansCommand().register();
|
||||||
new MultiplyCommand().register();
|
new MultiplyCommand().register();
|
||||||
|
new UltraDupeCommand().register();
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
new GuiEvents().register();
|
new GuiEvents().register();
|
||||||
43
src/main/java/me/trouper/ultradupe/cmds/DupeBansCommand.java
Normal file
43
src/main/java/me/trouper/ultradupe/cmds/DupeBansCommand.java
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package me.trouper.ultradupe.cmds;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.Global;
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
|
import me.trouper.ultradupe.server.util.Text;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "dupebans", permission = @Permission("ultradupe.dupebans"), printStackTrace = true)
|
||||||
|
public class DupeBansCommand implements CustomCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender sender, Args args) {
|
||||||
|
Player p = (Player) sender;
|
||||||
|
handleListBans(p);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder b) {
|
||||||
|
b.then(b.arg("item")
|
||||||
|
.then(b.arg("add","remove"))
|
||||||
|
.then(b.arg("material")
|
||||||
|
.then(b.arg("add","remove"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void handleListBans(Player p) {
|
||||||
|
StringBuilder dupeBanList = new StringBuilder(Text.prefix("&7There are currently &e%s&7 dupe bans.".formatted(UltraDupe.dupeBanStorage.bannedMaterials.size())));
|
||||||
|
for (Material dupeBan : UltraDupe.dupeBanStorage
|
||||||
|
.bannedMaterials) {
|
||||||
|
dupeBanList.append(Global.instance.color("\n&6 - &c%s".formatted(Text.cleanName(dupeBan.toString()))));
|
||||||
|
}
|
||||||
|
p.sendMessage(dupeBanList.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.cmds;
|
package me.trouper.ultradupe.cmds;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
@@ -6,18 +6,17 @@ import io.github.itzispyder.pdk.commands.CustomCommand;
|
|||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
||||||
import io.github.thetrouper.ultradupe.server.functions.DupeBanCheck;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
import io.github.thetrouper.ultradupe.server.sound.SoundPlayer;
|
import me.trouper.ultradupe.server.functions.DupeBanCheck;
|
||||||
import io.github.thetrouper.ultradupe.server.util.Text;
|
import me.trouper.ultradupe.server.sound.SoundPlayer;
|
||||||
|
import me.trouper.ultradupe.server.util.Text;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
@CommandRegistry(value = "duplicate", permission = @Permission("ultradupe.dupe"), printStackTrace = true)
|
||||||
|
|
||||||
@CommandRegistry(value = "ultradupe", permission = @Permission("ultradupe.dupe"), printStackTrace = true)
|
|
||||||
public class DupeCommand implements CustomCommand {
|
public class DupeCommand implements CustomCommand {
|
||||||
|
|
||||||
DupeBanCheck check = new DupeBanCheck();
|
DupeBanCheck check = new DupeBanCheck();
|
||||||
@@ -33,9 +32,15 @@ public class DupeCommand implements CustomCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int factor = args.get(0).toInt();
|
int factor = args.get(0).toInt();
|
||||||
|
|
||||||
|
if (factor > UltraDupe.config.plugin.maxDupe) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You are not allowed to dupe with a factor greater than &c%s&7!".formatted(UltraDupe.config.plugin.maxDupe))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
||||||
|
|
||||||
if (check.itemPasses(i)) {
|
if (check.itemPasses(i) || (p.hasPermission("ultradupe.bypass.bans") && UltraDupeCommand.bypassingBans.contains(p.getUniqueId()))) {
|
||||||
if (factor == 0) factor = i.getAmount();
|
if (factor == 0) factor = i.getAmount();
|
||||||
SchedulerUtils.loop(1,factor,(time)->{
|
SchedulerUtils.loop(1,factor,(time)->{
|
||||||
i.setAmount(1);
|
i.setAmount(1);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.cmds;
|
package me.trouper.ultradupe.cmds;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
@@ -6,9 +6,10 @@ import io.github.itzispyder.pdk.commands.CustomCommand;
|
|||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
||||||
import io.github.thetrouper.ultradupe.server.functions.DupeBanCheck;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
import io.github.thetrouper.ultradupe.server.sound.SoundPlayer;
|
import me.trouper.ultradupe.server.functions.DupeBanCheck;
|
||||||
import io.github.thetrouper.ultradupe.server.util.Text;
|
import me.trouper.ultradupe.server.sound.SoundPlayer;
|
||||||
|
import me.trouper.ultradupe.server.util.Text;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -26,22 +27,29 @@ public class MultiplyCommand implements CustomCommand {
|
|||||||
SoundPlayer no = new SoundPlayer(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 10,1);
|
SoundPlayer no = new SoundPlayer(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 10,1);
|
||||||
|
|
||||||
if (p.getInventory().getItemInMainHand().isEmpty()) {
|
if (p.getInventory().getItemInMainHand().isEmpty()) {
|
||||||
p.sendMessage(Component.text(Text.prefix("That was air... it was duped, but you still didn't get anything.")));
|
p.sendMessage(Component.text(Text.prefix("That was air... it was multiplied, but you still didn't get anything.")));
|
||||||
no.play(p);
|
no.play(p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int factor = args.get(0).toInt();
|
|
||||||
|
int exponent = args.get(0).toInt();
|
||||||
|
|
||||||
|
if (exponent > UltraDupe.config.plugin.maxMult) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You are not allowed to multiply with an exponent greater than &c%s&7!".formatted(UltraDupe.config.plugin.maxMult))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
||||||
|
|
||||||
if (check.itemPasses(i)) {
|
if (check.itemPasses(i) || (p.hasPermission("ultradupe.bypass.bans") && UltraDupeCommand.bypassingBans.contains(p.getUniqueId()))) {
|
||||||
if (factor == 0) factor = i.getAmount();
|
if (exponent == 0) exponent = i.getAmount();
|
||||||
SchedulerUtils.loop(1,factor,(time)->{
|
SchedulerUtils.loop(1,exponent,(time)->{
|
||||||
yes.play(p);
|
yes.play(p);
|
||||||
p.getInventory().addItem(i);
|
p.getInventory().addItem(i);
|
||||||
});
|
});
|
||||||
p.sendMessage(Component.text(Text.prefix("&7You have duped &a%s %s&7.".formatted(factor, Text.cleanName(i.getType().toString())))));
|
p.sendMessage(Component.text(Text.prefix("&7You have multiply &a%s %s&7.".formatted(exponent, Text.cleanName(i.getType().toString())))));
|
||||||
} else {
|
} else {
|
||||||
p.sendMessage(Component.text(Text.prefix("&cYou are not allowed to dupe &7%s&c.".formatted(Text.cleanName(i.getType().toString())))));
|
p.sendMessage(Component.text(Text.prefix("&cYou are not allowed to multiply &7%s&c.".formatted(Text.cleanName(i.getType().toString())))));
|
||||||
no.play(p);
|
no.play(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
123
src/main/java/me/trouper/ultradupe/cmds/UltraDupeCommand.java
Normal file
123
src/main/java/me/trouper/ultradupe/cmds/UltraDupeCommand.java
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
package me.trouper.ultradupe.cmds;
|
||||||
|
|
||||||
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
|
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
||||||
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
|
import me.trouper.ultradupe.server.functions.DupeBanCheck;
|
||||||
|
import me.trouper.ultradupe.server.sound.SoundPlayer;
|
||||||
|
import me.trouper.ultradupe.server.util.Text;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "ultradupe", permission = @Permission("ultradupe.admin"), printStackTrace = true)
|
||||||
|
public class UltraDupeCommand implements CustomCommand {
|
||||||
|
|
||||||
|
public static List<UUID> bypassingBans = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCommand(CommandSender sender, Args args) {
|
||||||
|
Player p = (Player) sender;
|
||||||
|
|
||||||
|
switch (args.get(0).toString()) {
|
||||||
|
case "dupebans" -> {
|
||||||
|
switch (args.get(1).toString()) {
|
||||||
|
case "item" -> handleItemEdit(p,args);
|
||||||
|
case "material" -> handleMaterialEdit(p,args);
|
||||||
|
default -> DupeBansCommand.handleListBans(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "toggle" -> {
|
||||||
|
switch (args.get(1).toString()) {
|
||||||
|
case "debug" -> {
|
||||||
|
UltraDupe.config.debugMode = !UltraDupe.config.debugMode;
|
||||||
|
UltraDupe.config.save();
|
||||||
|
}
|
||||||
|
case "bypass" -> {
|
||||||
|
if (!bypassingBans.contains(p.getUniqueId())) {
|
||||||
|
bypassingBans.add(p.getUniqueId());
|
||||||
|
} else {
|
||||||
|
bypassingBans.remove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You are now %s dupe bans".formatted(bypassingBans.contains(p.getUniqueId()) ? "&aBypassing&7" : "&cObeying&7"))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchCompletions(CompletionBuilder b) {
|
||||||
|
b.then(b.arg("[<INT>]"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleItemEdit(Player p, Args args) {
|
||||||
|
if (!p.hasPermission("ultradupe.dupebans.edit")) {
|
||||||
|
DupeBansCommand.handleListBans(p);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (args.get(2).toString()) {
|
||||||
|
case "add" -> {
|
||||||
|
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
||||||
|
if (UltraDupe.dupeBanStorage.bannedItems.contains(i)) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is already on the dupe ban list.".formatted(Text.cleanName(i.getType().toString())))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UltraDupe.dupeBanStorage.bannedItems.add(i);
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You have added &c%s&7 to the dupe ban list.".formatted(Text.cleanName(i.getType().toString())))));
|
||||||
|
UltraDupe.dupeBanStorage.save();
|
||||||
|
}
|
||||||
|
case "remove" -> {
|
||||||
|
ItemStack i = p.getInventory().getItemInMainHand().clone();
|
||||||
|
if (!UltraDupe.dupeBanStorage.bannedItems.contains(i)) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is not on the dupe ban list.".formatted(Text.cleanName(i.getType().toString())))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UltraDupe.dupeBanStorage.bannedItems.remove(i);
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You have removed &a%s&7 from the dupe ban list.".formatted(Text.cleanName(i.getType().toString())))));
|
||||||
|
UltraDupe.dupeBanStorage.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleMaterialEdit(Player p, Args args) {
|
||||||
|
if (!p.hasPermission("ultradupe.dupebans.edit")) {
|
||||||
|
DupeBansCommand.handleListBans(p);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (args.get(2).toString()) {
|
||||||
|
case "add" -> {
|
||||||
|
|
||||||
|
Material m = p.getInventory().getItemInMainHand().getType();
|
||||||
|
if (UltraDupe.dupeBanStorage.bannedMaterials.contains(m)) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is already on the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UltraDupe.dupeBanStorage.bannedMaterials.add(m);
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You have added &c%s&7 to the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
||||||
|
UltraDupe.dupeBanStorage.save();
|
||||||
|
}
|
||||||
|
case "remove" -> {
|
||||||
|
Material m = p.getInventory().getItemInMainHand().getType();
|
||||||
|
if (!UltraDupe.dupeBanStorage.bannedMaterials.contains(m)) {
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7The material &c%s&7 is not on the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UltraDupe.dupeBanStorage.bannedMaterials.remove(m);
|
||||||
|
p.sendMessage(Component.text(Text.prefix("&7You have removed &a%s&7 from the dupe ban list.".formatted(Text.cleanName(m.toString())))));
|
||||||
|
UltraDupe.dupeBanStorage.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
package io.github.thetrouper.ultradupe.data;
|
package me.trouper.ultradupe.data;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
|
import me.trouper.ultradupe.data.GUIs.GuiItems;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -16,8 +18,13 @@ public class DupeBanStorage implements JsonSerializable<DupeBanStorage> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
public int bannedModelData = 1111;
|
public int bannedModelData = 1111;
|
||||||
public List<Material> dupeBans = Arrays.asList(
|
public List<Material> bannedMaterials = Arrays.asList(
|
||||||
Material.AZALEA,
|
Material.ANCIENT_DEBRIS,
|
||||||
Material.BIG_DRIPLEAF
|
Material.NETHERITE_INGOT,
|
||||||
|
Material.TOTEM_OF_UNDYING
|
||||||
|
);
|
||||||
|
public List<ItemStack> bannedItems = Arrays.asList(
|
||||||
|
GuiItems.backArrow,
|
||||||
|
GuiItems.nextArrow
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,11 @@
|
|||||||
package io.github.thetrouper.ultradupe.data.GUIs;
|
package me.trouper.ultradupe.data.GUIs;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.Global;
|
import io.github.itzispyder.pdk.Global;
|
||||||
import io.github.itzispyder.pdk.plugin.builders.ItemBuilder;
|
|
||||||
import io.github.itzispyder.pdk.plugin.gui.CustomGui;
|
import io.github.itzispyder.pdk.plugin.gui.CustomGui;
|
||||||
import io.github.itzispyder.pdk.utils.misc.SoundPlayer;
|
import io.github.itzispyder.pdk.utils.misc.SoundPlayer;
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
|
||||||
import io.github.thetrouper.ultradupe.data.DupeBanStorage;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.data.GUIs;
|
package me.trouper.ultradupe.data.GUIs;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.Global;
|
import io.github.itzispyder.pdk.Global;
|
||||||
import io.github.itzispyder.pdk.plugin.builders.ItemBuilder;
|
import io.github.itzispyder.pdk.plugin.builders.ItemBuilder;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.data.config;
|
package me.trouper.ultradupe.data.config;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
|
|
||||||
@@ -18,6 +18,8 @@ public class Config implements JsonSerializable<Config> {
|
|||||||
public Plugin plugin = new Plugin();
|
public Plugin plugin = new Plugin();
|
||||||
|
|
||||||
public class Plugin {
|
public class Plugin {
|
||||||
|
public int dupeCooldown = 0;
|
||||||
|
public int multCooldown = 0;
|
||||||
public int maxDupe = 128;
|
public int maxDupe = 128;
|
||||||
public int maxMult = 10;
|
public int maxMult = 10;
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
package io.github.thetrouper.ultradupe.events;
|
package me.trouper.ultradupe.events;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.events.CustomListener;
|
import io.github.itzispyder.pdk.events.CustomListener;
|
||||||
import io.github.thetrouper.ultradupe.data.GUIs.DupeBanGUI;
|
import me.trouper.ultradupe.data.GUIs.DupeBanGUI;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
||||||
|
|
||||||
public class GuiEvents implements CustomListener {
|
public class GuiEvents implements CustomListener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@@ -1,15 +1,13 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.functions;
|
package me.trouper.ultradupe.server.functions;
|
||||||
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
import io.github.thetrouper.ultradupe.data.DupeBanStorage;
|
import me.trouper.ultradupe.server.util.ServerUtils;
|
||||||
import io.github.thetrouper.ultradupe.server.util.ServerUtils;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.Container;
|
import org.bukkit.block.Container;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.BlockStateMeta;
|
import org.bukkit.inventory.meta.BlockStateMeta;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
public class DupeBanCheck {
|
public class DupeBanCheck {
|
||||||
private boolean isContainer(ItemStack itemStack) {
|
private boolean isContainer(ItemStack itemStack) {
|
||||||
@@ -66,7 +64,7 @@ public class DupeBanCheck {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (UltraDupe.dupeBanStorage.dupeBans.contains(i.getType())) {
|
if (UltraDupe.dupeBanStorage.bannedMaterials.contains(i.getType())) {
|
||||||
ServerUtils.verbose("DUPEBANS: No pass T");
|
ServerUtils.verbose("DUPEBANS: No pass T");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -6,9 +6,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package io.github.thetrouper.ultradupe.server.sound;
|
package me.trouper.ultradupe.server.sound;
|
||||||
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
public class FileUtils {
|
public class FileUtils {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package io.github.thetrouper.ultradupe.server.util;
|
package me.trouper.ultradupe.server.util;
|
||||||
|
|
||||||
|
|
||||||
import io.github.thetrouper.ultradupe.UltraDupe;
|
import me.trouper.ultradupe.UltraDupe;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -1,24 +1,35 @@
|
|||||||
name: UltraDupe
|
name: UltraDupe
|
||||||
version: '${version}'
|
version: '${version}'
|
||||||
main: io.github.thetrouper.ultradupe.UltraDupe
|
main: me.trouper.ultradupe.UltraDupe
|
||||||
api-version: 1.19
|
api-version: 1.19
|
||||||
authors: [ TheTrouper ]
|
authors: [ TheTrouper ]
|
||||||
description: Detect Block and Ban players who attempt to grief your server.
|
description: The only acceptable dupe plugin.
|
||||||
website: https://thetrouper.github.io/
|
website: https://thetrouper.github.io/
|
||||||
softdepend: [ ProtocolLib ]
|
|
||||||
permissions:
|
permissions:
|
||||||
|
ultradupe.multiply:
|
||||||
|
default: op
|
||||||
|
description: Access to the multiply/exponential dupe feature
|
||||||
ultradupe.dupe:
|
ultradupe.dupe:
|
||||||
description: Access to the dupe
|
|
||||||
default: op
|
default: op
|
||||||
ultradupe.dupebans.edit:
|
description: Access to the dupe feature
|
||||||
description: edit the dupe ban list
|
ultradupe.bypass.mult-cooldown:
|
||||||
default: op
|
default: op
|
||||||
|
description: Bypass the multiply cooldown
|
||||||
|
ultradupe.bypass.dupe-cooldown:
|
||||||
|
default: op
|
||||||
|
description: Bypass the dupe cooldown
|
||||||
|
ultradupe.bypass.bans:
|
||||||
|
default: op
|
||||||
|
description: Bypass all the dupe bans
|
||||||
ultradupe.dupebans:
|
ultradupe.dupebans:
|
||||||
description: see the dupe ban list
|
|
||||||
default: op
|
default: op
|
||||||
|
description: see the dupe ban list
|
||||||
|
ultradupe.dupebans.edit:
|
||||||
|
default: op
|
||||||
|
description: edit the dupe ban list
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
ultradupe:
|
duplicate:
|
||||||
description: A command for testing.
|
description: A command for testing.
|
||||||
usage: /ultradupe
|
usage: /ultradupe
|
||||||
permission: ultradupe.info
|
permission: ultradupe.info
|
||||||
@@ -26,7 +37,6 @@ commands:
|
|||||||
aliases:
|
aliases:
|
||||||
- dupe
|
- dupe
|
||||||
- d
|
- d
|
||||||
- ud
|
|
||||||
multiply:
|
multiply:
|
||||||
description: A command for testing.
|
description: A command for testing.
|
||||||
usage: /ultradupe
|
usage: /ultradupe
|
||||||
@@ -35,7 +45,6 @@ commands:
|
|||||||
aliases:
|
aliases:
|
||||||
- mult
|
- mult
|
||||||
- m
|
- m
|
||||||
- um
|
|
||||||
dupebans:
|
dupebans:
|
||||||
description: dupe bans
|
description: dupe bans
|
||||||
usage: /dupebans [add|remove]
|
usage: /dupebans [add|remove]
|
||||||
|
|||||||
Reference in New Issue
Block a user