v1.1.0 - 1.21 support, itemsadder fix
1.21.X support, update messages.yml, replace kotlin libs to java libs, itemsadder material search fix, documented (no) ignoreConfirm command, onDrag handle in singlepage gui, colorful name fix in singlepage
This commit is contained in:
1 parent
5cd86f3850
commit
50bb40d701
14 files changed
+279
-96
No files matched your search
+13
-16
@@ -2,11 +2,10 @@ plugins {
|
||||
id 'java'
|
||||
id("com.github.johnrengelman.shadow") version "7.0.0"
|
||||
id("xyz.jpenilla.run-paper") version "2.1.0"
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.9.23'
|
||||
}
|
||||
|
||||
group = 'me.redtea'
|
||||
version = '1.0.5-HOTFIX'
|
||||
version = '1.1.0-STABLE'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@@ -33,22 +32,25 @@ repositories {
|
||||
maven {
|
||||
url 'https://jitpack.io'
|
||||
}
|
||||
maven {
|
||||
url = "https://repo.triumphteam.dev/snapshots/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
runtimeOnly("org.jetbrains.kotlin:kotlin-reflect:1.9.23")
|
||||
implementation "org.jetbrains:annotations:24.0.0"
|
||||
compileOnly "org.projectlombok:lombok:1.18.26"
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.26'
|
||||
compileOnly "com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT"
|
||||
// implementation "me.mattstudios.utils:matt-framework:1.4"
|
||||
implementation "tech.carcadex:kotlinbukkitkit-commands:1.0.0.4b-SNAPSHOT"
|
||||
implementation "de.tr7zw:item-nbt-api:2.12.3"
|
||||
// implementation "tech.carcadex:kotlinbukkitkit-commands:1.0.0.4b-SNAPSHOT"
|
||||
implementation "de.tr7zw:item-nbt-api:2.15.3"
|
||||
implementation "net.kyori:adventure-api:4.14.0"
|
||||
implementation "net.kyori:adventure-platform-bukkit:4.3.0"
|
||||
implementation files("libs/MiniMessages.jar")
|
||||
implementation "dev.triumphteam:triumph-gui:3.1.2"
|
||||
compileOnly "com.github.LoneDev6:API-ItemsAdder:3.5.0b"
|
||||
implementation "dev.triumphteam:triumph-gui:3.1.13"
|
||||
implementation "dev.triumphteam:triumph-cmd-bukkit:2.0.0-BETA-4"
|
||||
|
||||
compileOnly "com.github.LoneDev6:API-ItemsAdder:3.6.1"
|
||||
compileOnly files("libs/nodropxforgebridge-1.4.jar")
|
||||
}
|
||||
|
||||
@@ -68,11 +70,7 @@ tasks.withType(JavaCompile).configureEach {
|
||||
}
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
jvmTarget=1.8
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
processResources {
|
||||
def props = [version: version]
|
||||
@@ -85,9 +83,8 @@ processResources {
|
||||
|
||||
|
||||
shadowJar {
|
||||
relocate 'de.tr7zw.changeme.nbtapi', 'me.redtea.nodropx.libs.tr7zw.nbt'
|
||||
relocate 'de.tr7zw.annotations', 'me.redtea.nodropx.libs.tr7zw.annotations'
|
||||
relocate 'dev.triumphteam', 'me.redtea.nodropx.libs.gui'
|
||||
relocate 'de.tr7zw', 'me.redtea.nodropx.libs.tr7zw'
|
||||
relocate 'dev.triumphteam', 'me.redtea.nodropx.libs.triumphteam'
|
||||
relocate 'org.checkerframework', 'me.redtea.nodropx.libs.message.oskarsmc.libs.checker'
|
||||
relocate 'org.intellij', 'me.redtea.nodropx.libs.intellij'
|
||||
relocate 'org.jetbrains', 'me.redtea.nodropx.libs.jetbrains'}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package me.redtea.nodropx;
|
||||
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import dev.triumphteam.cmd.bukkit.BukkitCommandManager;
|
||||
import dev.triumphteam.cmd.core.argument.keyed.Argument;
|
||||
import dev.triumphteam.cmd.core.argument.keyed.ArgumentKey;
|
||||
import dev.triumphteam.cmd.core.message.MessageKey;
|
||||
import dev.triumphteam.cmd.core.suggestion.SuggestionKey;
|
||||
import lombok.Getter;
|
||||
import me.redtea.nodropx.api.facade.NoDropAPI;
|
||||
import me.redtea.nodropx.api.facade.impl.NoDropXFacade;
|
||||
@@ -26,6 +29,7 @@ import me.redtea.nodropx.menu.Menu;
|
||||
import me.redtea.nodropx.menu.dropconfirm.DropConfirmMFGui;
|
||||
import me.redtea.nodropx.menu.facade.MenuFacade;
|
||||
import me.redtea.nodropx.menu.facade.impl.MenuFacadeImpl;
|
||||
import me.redtea.nodropx.menu.facade.impl.NullMenuFacadeImpl;
|
||||
import me.redtea.nodropx.menu.storage.pages.MFPageGui;
|
||||
import me.redtea.nodropx.menu.storage.singlepage.SinglePageController;
|
||||
import me.redtea.nodropx.menu.storage.singlepage.SinglePageGui;
|
||||
@@ -59,12 +63,13 @@ import me.redtea.nodropx.util.FoliaSupportedUtils;
|
||||
import me.redtea.nodropx.util.UpdateChecker;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.ServicePriority;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import tech.carcadex.kotlinbukkitkit.commands.manager.CommandManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -149,25 +154,65 @@ public final class NoDropX extends JavaPlugin {
|
||||
Bukkit.getServicesManager().register(NoDropAPI.class,
|
||||
noDropAPI, this, ServicePriority.Normal);
|
||||
|
||||
CommandManager commandManager = CommandManager.get(this);
|
||||
commandManager.message("#no-perm", sender -> {
|
||||
messages.get("noPerms").send(sender);
|
||||
return Unit.INSTANCE;
|
||||
// CommandManager commandManager = CommandManager.get(this);
|
||||
// commandManager.message("#no-perm", sender -> {
|
||||
// messages.get("noPerms").send(sender);
|
||||
// return Unit.INSTANCE;
|
||||
// });
|
||||
// commandManager.message("#for-players-only", sender -> {
|
||||
// messages.get("noConsole").send(sender);
|
||||
// return Unit.INSTANCE;
|
||||
// });
|
||||
// commandManager.message("#no-such-player", sender -> {
|
||||
// messages.get("noExists").send(sender);
|
||||
// return Unit.INSTANCE;
|
||||
// });
|
||||
// commandManager.message("#no-such-player", sender -> {
|
||||
// messages.get("usage").send(sender);
|
||||
// return Unit.INSTANCE;
|
||||
// });
|
||||
// commandManager.tabComplete("#materials", input -> itemStackService.allMaterials());
|
||||
// commandManager.register(new NoDropCommand(messages, noDropAPI, menuFacade, this,
|
||||
// itemStackService, dropConfirmService, eventService, allNoDropService));
|
||||
final BukkitCommandManager<CommandSender> commandManager = BukkitCommandManager.create(this, builder -> {
|
||||
|
||||
});
|
||||
commandManager.message("#for-players-only", sender -> {
|
||||
messages.get("noConsole").send(sender);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
commandManager.message("#no-such-player", sender -> {
|
||||
messages.get("noExists").send(sender);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
commandManager.message("#no-such-player", sender -> {
|
||||
|
||||
commandManager.registerNamedArguments(
|
||||
ArgumentKey.of("query-parameters"),
|
||||
Argument.forBoolean().name("rev").longName("reversed").build(),
|
||||
Argument.forInt().name("r").longName("radius").suggestion(SuggestionKey.of("radius")).build(),
|
||||
Argument.forString().name("since").build(),
|
||||
Argument.forString().name("before").build(),
|
||||
Argument.forString().name("cause").build(),
|
||||
Argument.forString().name("at").build(),
|
||||
Argument.forType(Material.class).name("material").build(),
|
||||
Argument.forString().name("bounds").build(),
|
||||
Argument.forType(Material.class).name("ma").build(),
|
||||
Argument.listOf(String.class).name("a").build(),
|
||||
Argument.listOf(Material.class).name("m").build(),
|
||||
Argument.listOf(Player.class).name("p").build()
|
||||
);
|
||||
|
||||
commandManager.registerStaticSuggestion(SuggestionKey.of("allmaterials"), itemStackService.allMaterials());
|
||||
|
||||
|
||||
|
||||
commandManager.registerMessage(MessageKey.TOO_MANY_ARGUMENTS, (sender, context) -> {
|
||||
messages.get("usage").send(sender);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
commandManager.tabComplete("#materials", input -> itemStackService.allMaterials());
|
||||
commandManager.register(new NoDropCommand(messages, noDropAPI, menuFacade, this,
|
||||
commandManager.registerMessage(MessageKey.UNKNOWN_COMMAND, (sender, context) -> {
|
||||
messages.get("usage").send(sender);
|
||||
});
|
||||
commandManager.registerMessage(MessageKey.NOT_ENOUGH_ARGUMENTS, (sender, context) -> {
|
||||
messages.get("usage").send(sender);
|
||||
});
|
||||
commandManager.registerMessage(MessageKey.INVALID_ARGUMENT, (sender, context) -> {
|
||||
messages.get("error").send(sender);
|
||||
});
|
||||
|
||||
|
||||
commandManager.registerCommand(new NoDropCommand(messages, noDropAPI, menuFacade, this,
|
||||
itemStackService, dropConfirmService, eventService, allNoDropService));
|
||||
bStatsInit();
|
||||
printCredits();
|
||||
@@ -175,24 +220,32 @@ public final class NoDropX extends JavaPlugin {
|
||||
}
|
||||
|
||||
private MenuFacade initMenus() {
|
||||
CachedMenu personalStorageCachedMenu;
|
||||
if (Objects.requireNonNull(getConfig().getString("personalStorageType")).equalsIgnoreCase("SINGLE_PAGE")) {
|
||||
SinglePageGui singlePageGui = new SinglePageGui(messages, personalStorageRepo);
|
||||
personalStorageCachedMenu = singlePageGui;
|
||||
Bukkit.getPluginManager().registerEvents(new SinglePageGuiHandler(new SinglePageController(noDropService,
|
||||
singlePageGui, personalStorageRepo, foliaSupportedUtils), singlePageGui), this);
|
||||
} else
|
||||
personalStorageCachedMenu = new MFPageGui(messages, personalStorageRepo, noDropService, itemStackService, this);
|
||||
try {
|
||||
CachedMenu personalStorageCachedMenu;
|
||||
if (Objects.requireNonNull(getConfig().getString("personalStorageType")).equalsIgnoreCase("SINGLE_PAGE")) {
|
||||
SinglePageGui singlePageGui = new SinglePageGui(messages, personalStorageRepo);
|
||||
personalStorageCachedMenu = singlePageGui;
|
||||
Bukkit.getPluginManager().registerEvents(new SinglePageGuiHandler(new SinglePageController(noDropService,
|
||||
singlePageGui, personalStorageRepo, foliaSupportedUtils), singlePageGui), this);
|
||||
} else
|
||||
personalStorageCachedMenu = new MFPageGui(messages, personalStorageRepo, noDropService, itemStackService, this);
|
||||
|
||||
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService, this);
|
||||
return new MenuFacadeImpl(personalStorageCachedMenu, confirmMenu);
|
||||
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService, this);
|
||||
return new MenuFacadeImpl(personalStorageCachedMenu, confirmMenu);
|
||||
} catch (Exception e) {
|
||||
Bukkit.getLogger().severe(e.getMessage());
|
||||
e.printStackTrace();
|
||||
printConsoleLine("&4Can not use menus on this server!");
|
||||
}
|
||||
|
||||
return new NullMenuFacadeImpl();
|
||||
}
|
||||
|
||||
private ItemStackService initItemStackService() {
|
||||
ItemStackService result = new ItemStackServiceImpl();
|
||||
if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) {
|
||||
supportItemsAdder = true;
|
||||
getLogger().info(ChatColor.GREEN + "ItemsAdder found! Registering a CustomStack provider for it.");
|
||||
printConsoleLine("ItemsAdder found! Registering a CustomStack provider for it.");
|
||||
result.registerProvider(new ItemsAdderProvider());
|
||||
}
|
||||
result.registerProvider(new ItemStackProviderDefault());
|
||||
@@ -205,10 +258,10 @@ public final class NoDropX extends JavaPlugin {
|
||||
}
|
||||
new UpdateChecker(this, 111485, foliaSupportedUtils).getVersion(version -> {
|
||||
if (this.getDescription().getVersion().equals(version)) {
|
||||
getLogger().info(ChatColor.GREEN + "There is not a new update available.");
|
||||
printConsoleLine("There is not a new update available.");
|
||||
} else {
|
||||
getLogger().info(ChatColor.YELLOW + "There is a new update available: " + ChatColor.GOLD + version);
|
||||
getLogger().info(ChatColor.YELLOW + "Download it from " + ChatColor.GOLD + "https://www.spigotmc.org/resources/nodropx.111485/");
|
||||
printConsoleLine("&eThere is a new update available: " + ChatColor.GOLD + version);
|
||||
printConsoleLine("&eDownload it from " + ChatColor.GOLD + "https://www.spigotmc.org/resources/nodropx.111485/");
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -222,7 +275,7 @@ public final class NoDropX extends JavaPlugin {
|
||||
|
||||
private void printCredits() {
|
||||
printCreditLine("&a************************************************************");
|
||||
printCreditLine("&a* &2&lNoDrop&a&lX&e version &6" + getDescription().getVersion() + "&7 (uses KotlinBukkitKIT v. 1.0.4)");
|
||||
printCreditLine("&a* &2&lNoDrop&a&lX&e version &6" + getDescription().getVersion());
|
||||
printCreditLine("&a* &eBy &citzRedTea");
|
||||
printCreditLine("&a* &eDetected bukkit version &6" + Bukkit.getBukkitVersion());
|
||||
printCreditLine("&a* &esupport HEX colors " + (supportHEX ? "&2YES" : "&4NO"));
|
||||
@@ -230,6 +283,11 @@ public final class NoDropX extends JavaPlugin {
|
||||
printCreditLine("&a************************************************************");
|
||||
}
|
||||
|
||||
private void printConsoleLine(String s) {
|
||||
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&',
|
||||
"&e[&2&lNoDrop&a&lX&e] &f" + s));
|
||||
}
|
||||
|
||||
private void printCreditLine(String s) {
|
||||
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', s));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
package me.redtea.nodropx.command;
|
||||
|
||||
import dev.triumphteam.cmd.bukkit.annotation.Permission;
|
||||
import dev.triumphteam.cmd.core.annotations.Command;
|
||||
import dev.triumphteam.cmd.core.annotations.NamedArguments;
|
||||
import dev.triumphteam.cmd.core.annotations.Optional;
|
||||
import dev.triumphteam.cmd.core.annotations.Suggestion;
|
||||
import dev.triumphteam.cmd.core.suggestion.SuggestionContext;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.val;
|
||||
import me.redtea.nodropx.NoDropX;
|
||||
@@ -12,20 +18,22 @@ import me.redtea.nodropx.service.event.EventService;
|
||||
import me.redtea.nodropx.service.material.ItemStackService;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import tech.carcadex.kotlinbukkitkit.commands.reflection.annotations.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Main command of plugin
|
||||
* <p>/nodrop - usage</p>
|
||||
* <p>/nodrop give [Player] [Material] [Amount (optional)]</p>
|
||||
*/
|
||||
@Command(name = "nodrop")
|
||||
@Command("nodrop")
|
||||
@RequiredArgsConstructor
|
||||
public class NoDropCommand {
|
||||
private final Messages messages;
|
||||
@@ -37,17 +45,20 @@ public class NoDropCommand {
|
||||
private final EventService eventService;
|
||||
private final AllNoDropService allNoDropService;
|
||||
|
||||
@Default
|
||||
@Command
|
||||
public void onDefault(final CommandSender sender) {
|
||||
messages.get("usage").send(sender);
|
||||
}
|
||||
|
||||
@SubCommand(name = "give")
|
||||
@Permission(perm = "nodropx.give")
|
||||
@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
|
||||
|
||||
@Command("give")
|
||||
@Permission("nodropx.give")
|
||||
@NamedArguments("query-parameters")
|
||||
//@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
public void onGive(final CommandSender sender,
|
||||
final Player player,
|
||||
final String material,
|
||||
@Suggestion("allmaterials") final String material,
|
||||
@Optional final Integer amount) {
|
||||
try {
|
||||
noDropAPI.giveNoDrop(player, material, amount == null || amount == 0 ? 1 : amount);
|
||||
@@ -57,22 +68,24 @@ public class NoDropCommand {
|
||||
.replaceAll("%amount%", amount == null ? "1" : amount.toString())
|
||||
.send(sender);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
messages.get("give.fail").send(sender);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubCommand(name = "reload")
|
||||
@Permission(perm = "nodropx.reload")
|
||||
@Command("reload")
|
||||
@Permission("nodropx.reload")
|
||||
public void onReload(final CommandSender sender) {
|
||||
long time = new Date().getTime();
|
||||
plugin.onReload();
|
||||
messages.get("reload").replaceAll("%time%", String.valueOf(new Date().getTime() - time)).send(sender);
|
||||
}
|
||||
|
||||
@SubCommand(name = "giveStorage")
|
||||
@Permission(perm = "nodropx.giveStorage")
|
||||
@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
@Command("givestorage")
|
||||
@Permission("nodropx.giveStorage")
|
||||
@NamedArguments("query-parameters")
|
||||
//@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
public void onGiveStorage(final CommandSender sender,
|
||||
final String playerName,
|
||||
final String material,
|
||||
@@ -96,14 +109,14 @@ public class NoDropCommand {
|
||||
|
||||
}
|
||||
|
||||
@SubCommand(name = "ignoreConfirm")
|
||||
@Permission(perm = "nodropx.ignoreConfirm")
|
||||
@Command("ignoreconfirm")
|
||||
@Permission("nodropx.ignoreConfirm")
|
||||
public void onIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
messages.get("error").send(sender);
|
||||
} else {
|
||||
messages.get("ignoreConfirm.on").send(sender);
|
||||
confirmService.forceConfirm((Player) sender);
|
||||
}
|
||||
} else {
|
||||
@@ -111,17 +124,17 @@ public class NoDropCommand {
|
||||
}
|
||||
}
|
||||
|
||||
@SubCommand(name = "ignoreConfirmTimed")
|
||||
@Permission(perm = "nodropx.ignoreConfirm.timed")
|
||||
@Command("ignoreconfirmtimed")
|
||||
@Permission("nodropx.ignoreConfirm.timed")
|
||||
public void onIgnoreConfirmTimed(final CommandSender sender, Integer sec, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
messages.get("error").send(sender);
|
||||
} else {
|
||||
confirmService.forceConfirm((Player) sender);
|
||||
try {
|
||||
Bukkit.getScheduler().runTaskLater(plugin,() -> confirmService.removeForceConfirm((Player) sender),20L*sec);
|
||||
messages.get("ignoreConfirm.on").send(sender);
|
||||
} catch (UnsupportedOperationException e) {
|
||||
sender.sendMessage(ChatColor.RED + "This operation didn't supports on your environment");
|
||||
}
|
||||
@@ -136,22 +149,22 @@ public class NoDropCommand {
|
||||
}
|
||||
}
|
||||
|
||||
@SubCommand(name = "noIgnoreConfirm")
|
||||
@Permission(perm = "nodropx.noIgnoreConfirm")
|
||||
@Command("noignoreconfirm")
|
||||
@Permission("nodropx.noIgnoreConfirm")
|
||||
public void onNoIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
messages.get("error").send(sender);
|
||||
} else {
|
||||
confirmService.removeForceConfirm((Player) sender);
|
||||
messages.get("ignoreConfirm.off").send(sender);
|
||||
}
|
||||
} else {
|
||||
confirmService.removeForceConfirm(target);
|
||||
}
|
||||
}
|
||||
@SubCommand(name = "applyHand")
|
||||
@Permission(perm = "nodropx.applyhand")
|
||||
@Command("applyhand")
|
||||
@Permission("nodropx.applyhand")
|
||||
public void onApplyHand(final Player sender) {
|
||||
try {
|
||||
val event = eventService.callPlayerChangeNoDropEvent(sender, sender.getInventory().getItemInMainHand(), true);
|
||||
@@ -162,9 +175,8 @@ public class NoDropCommand {
|
||||
}
|
||||
}
|
||||
|
||||
@SubCommand(name = "gui")
|
||||
@Aliases(aliases = "storage")
|
||||
@Permission(perm = "nodropx.gui")
|
||||
@Command(value = "gui", alias = "storage")
|
||||
@Permission("nodropx.gui")
|
||||
public void onGui(final Player sender) {
|
||||
menuFacade.openPersonalStorage(sender);
|
||||
}
|
||||
@@ -177,9 +189,10 @@ public class NoDropCommand {
|
||||
return null;
|
||||
}
|
||||
|
||||
@SubCommand(name = "giveallnodrop")
|
||||
@Permission(perm = "nodropx.giveallnodrop")
|
||||
@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
@Command("giveallnodrop")
|
||||
@Permission("nodropx.giveallnodrop")
|
||||
@NamedArguments("query-parameters")
|
||||
// @TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||
public void onGiveAllNoDrop(final CommandSender sender,
|
||||
final Player player,
|
||||
final String material,
|
||||
|
||||
@@ -26,8 +26,14 @@ public class FoliaSupporter {
|
||||
@SneakyThrows
|
||||
public void run(RespawnService respawnService, Plugin plugin) {
|
||||
try {
|
||||
boolean isFolia = false;
|
||||
try {
|
||||
Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
|
||||
isFolia = true;
|
||||
} catch (ClassNotFoundException ignored) {}
|
||||
String version = ((JsonObject) new JsonParser().parse(new FileReader("version_history.json"))).get("currentVersion").getAsString();
|
||||
if(!version.toLowerCase().contains("folia") && !plugin.getConfig().getBoolean("forceUseFoliaPatches")) {
|
||||
if(!isFolia && !version.toLowerCase().contains("folia") && !plugin.getConfig().getBoolean("forceUseFoliaPatches")
|
||||
&& !(Bukkit.getName().toLowerCase().contains("folia"))) {
|
||||
return;
|
||||
}
|
||||
runningOnFolia = true;
|
||||
@@ -56,7 +62,7 @@ public class FoliaSupporter {
|
||||
}
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryAction;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||
|
||||
public class SinglePageGuiHandler implements Listener {
|
||||
private final SinglePageController controller;
|
||||
@@ -19,6 +20,13 @@ public class SinglePageGuiHandler implements Listener {
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDrag(InventoryDragEvent event) {
|
||||
if(gui.isStorageGui(event.getInventory())) {
|
||||
controller.onDrag(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onClick(InventoryClickEvent event) {
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package me.redtea.nodropx.menu.facade.impl;
|
||||
|
||||
import me.redtea.nodropx.menu.CachedMenu;
|
||||
import me.redtea.nodropx.menu.facade.MenuFacade;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class NullMenuFacadeImpl implements MenuFacade {
|
||||
@Override
|
||||
public CachedMenu noDropStorage() {
|
||||
return new CachedMenu() {
|
||||
@Override
|
||||
public void clearCache(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearAllCache() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open(Player player) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openPersonalStorage(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openConfirmDrop(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearAllCache() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -5,10 +5,10 @@ import lombok.RequiredArgsConstructor;
|
||||
import me.redtea.nodropx.libs.carcadex.repo.MutableRepo;
|
||||
import me.redtea.nodropx.service.nodrop.NoDropService;
|
||||
import me.redtea.nodropx.util.FoliaSupportedUtils;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.InventoryAction;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.*;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -30,16 +30,28 @@ public class SinglePageController {
|
||||
if(clickActions.contains(event.getAction()) && !(noDropService.isNoDrop(event.getCurrentItem()))) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
foliaCheck(event.getInventory(), event.getWhoClicked(), event);
|
||||
|
||||
}
|
||||
|
||||
public void onDrag(InventoryDragEvent event) {
|
||||
if((event.getNewItems().entrySet().stream().anyMatch(it -> !noDropService.isNoDrop(it.getValue())))) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
foliaCheck(event.getInventory(), event.getWhoClicked(), event);
|
||||
|
||||
}
|
||||
|
||||
private void foliaCheck(Inventory inventory, HumanEntity whoClicked, InventoryEvent event) {
|
||||
foliaSupportedUtils.runTask(() -> {
|
||||
for(ItemStack itemStack : event.getInventory()) {
|
||||
for(ItemStack itemStack : inventory) {
|
||||
if (itemStack != null && !noDropService.isNoDrop(itemStack)) {
|
||||
event.getWhoClicked().getInventory().addItem(itemStack);
|
||||
event.getInventory().remove(itemStack);
|
||||
((Player) event.getWhoClicked()).updateInventory();
|
||||
whoClicked.getInventory().addItem(itemStack);
|
||||
inventory.remove(itemStack);
|
||||
((Player) whoClicked).updateInventory();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void onClose(InventoryCloseEvent event) {
|
||||
|
||||
@@ -26,7 +26,13 @@ public class SinglePageGui implements CachedMenu {
|
||||
player.openInventory(cache.get(player.getUniqueId()));
|
||||
return;
|
||||
}
|
||||
Inventory gui = Bukkit.createInventory(null, 54, MD5ColorUtils.translateHexColorCodes(messages.get("gui.personalStorage.title").asUnparsedString()));
|
||||
Inventory gui;
|
||||
try {
|
||||
gui = Bukkit.createInventory(null, 54, messages.get("gui.personalStorage.title").asComponent());
|
||||
}
|
||||
catch (Throwable e) {
|
||||
gui = Bukkit.createInventory(null, 54, MD5ColorUtils.translateHexColorCodes(messages.get("gui.personalStorage.title").asUnparsedString()));
|
||||
}
|
||||
for(ItemStack item : personalStorageRepo.get(player.getUniqueId()).orElse(new ArrayList<>())) if(item != null) gui.addItem(item);
|
||||
|
||||
cache.put(player.getUniqueId(), gui);
|
||||
|
||||
@@ -5,17 +5,21 @@ import dev.lone.itemsadder.api.ItemsAdder;
|
||||
import me.redtea.nodropx.model.materialprovider.ItemStackProvider;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ItemsAdderProvider implements ItemStackProvider {
|
||||
@Override
|
||||
public ItemStack get(String s) {
|
||||
return CustomStack.getInstance(s).getItemStack();
|
||||
CustomStack stack = CustomStack.getInstance(s);
|
||||
return (stack != null) ? stack.getItemStack() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> allMaterials() {
|
||||
return ItemsAdder.getAllItems().stream().map(CustomStack::getNamespacedID).collect(Collectors.toList());
|
||||
if((ItemsAdder.getAllItems() == null) || ItemsAdder.getAllItems().isEmpty()) return Collections.emptyList();
|
||||
return ItemsAdder.getAllItems().stream().map(CustomStack::getNamespacedID).filter(s -> !s.startsWith("_iainternal")).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ public class RespawnServiceImpl implements RespawnService {
|
||||
Pair[] pairs = toRespawn.get(player.getName());
|
||||
for(Pair pair : pairs) player.getInventory().setItem(pair.slot, pair.item);
|
||||
toRespawn.remove(player.getName());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Dev's discord tag - itzredtea
|
||||
|
||||
forceUseLegacy: false
|
||||
forceUseMD5Colors: false
|
||||
forceUseFoliaPatches: false
|
||||
@@ -8,6 +10,5 @@ checkForUpdates: true
|
||||
# Use it on your own risk
|
||||
confirmThrowNoDropItem: false
|
||||
|
||||
#Single did not supports minimessages!
|
||||
#Can be SINGLE_PAGE or MULTI_PAGES (Use MULTI_PAGES on your own risk)
|
||||
personalStorageType: SINGLE_PAGE
|
||||
@@ -1,6 +1,12 @@
|
||||
usage:
|
||||
- "&7[ &aUsage of command &e/nodrop &7]"
|
||||
- "&7| &a/nodrop give [player] [item] (amount) &e- give no drop item"
|
||||
- "&7| &a/nodrop storage &e- open no drop items storage"
|
||||
- "&7| &a/nodrop giveStorage [player] [material] (amount) &e- Gives nodrop item to the player's personal storage"
|
||||
- "&7| &a/nodrop giveallnodrop [player] [material] (amount) &e- Gives allnodrop item to player"
|
||||
- "&7| &a/nodrop ignoreconfirm &e- Ignore confirm gui (only if confirm enabled)"
|
||||
- "&7| &a/nodrop ignoreconfirmtimed [seconds] &e- Timed ignore confirm gui (only if confirm enabled)"
|
||||
- "&7| &a/nodrop noIgnoreConfirm &e- Drop ignore confirm setting (only if confirm enabled)"
|
||||
give:
|
||||
fail: "&4[!] &cFail! Check item type for valid."
|
||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
||||
@@ -11,10 +17,14 @@ applyHand:
|
||||
giveToStorage:
|
||||
fail: "&4[!] &cFail! Check item type for valid."
|
||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a to storage!"
|
||||
ignoreConfirm:
|
||||
on: "&2&l[!] &aNow you are ignore confirm menu!"
|
||||
off: "&2&l[!] &aNow you are not ignore confirm menu!"
|
||||
|
||||
noPerms: "&4&l[!] &cNo perms for this!"
|
||||
noConsole: "&4&l[!] &cOnly players can use it!"
|
||||
noExists: "&4&l[!] &cThis player doesnt exists!"
|
||||
error: "&4&l[!] &cAn error occurred during the execution of the command!"
|
||||
|
||||
gui:
|
||||
confirm:
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
usage:
|
||||
- "&7[ &aUsage of command &e/nodrop &7]"
|
||||
- "&7| &a/nodrop give [player] [item] (amount) &e- give no drop item"
|
||||
- "&7| &a/nodrop storage &e- open no drop items storage"
|
||||
- "&7| &a/nodrop giveStorage [player] [material] (amount) &e- Gives nodrop item to the player's personal storage"
|
||||
- "&7| &a/nodrop giveAllNoDrop [player] [material] (amount) &e- Gives allnodrop item to player"
|
||||
- "&7| &a/nodrop ignoreConfirm &e- Ignore confirm gui (only if confirm enabled)"
|
||||
- "&7| &a/nodrop ignoreConfirmTimed [seconds] &e- Timed ignore confirm gui (only if confirm enabled)"
|
||||
- "&7| &a/nodrop noIgnoreConfirm &e- Drop ignore confirm setting (only if confirm enabled)"
|
||||
give:
|
||||
fail: "&4[!] &cFail! Check item type for valid."
|
||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
||||
@@ -11,10 +17,14 @@ applyHand:
|
||||
giveToStorage:
|
||||
fail: "&4[!] &cFail! Check item type for valid."
|
||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a to storage!"
|
||||
ignoreConfirm:
|
||||
on: "&2&l[!] &aNow you are ignore confirm menu!"
|
||||
off: "&2&l[!] &aNow you are not ignore confirm menu!"
|
||||
|
||||
noPerms: "&4&l[!] &cNo perms for this!"
|
||||
noConsole: "&4&l[!] &cOnly players can use it!"
|
||||
noExists: "&4&l[!] &cThis player doesnt exists!"
|
||||
error: "&4&l[!] &cAn error occurred during the execution of the command!"
|
||||
|
||||
gui:
|
||||
confirm:
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
usage:
|
||||
- "<gray>[ <green>Usage of command <yellow>/nodrop <gray>]"
|
||||
- "<gray>| <green>/nodrop give [player] [item] (amount) <yellow>- give no drop item"
|
||||
- "<gray>| <green>/nodrop storage <yellow>- open no drop items storage"
|
||||
- "<gray>| <green>/nodrop giveStorage [player] [material] (amount) <yellow>- Gives nodrop item to the player's personal storage"
|
||||
- "<gray>| <green>/nodrop giveallnodrop [player] [material] (amount) <yellow>- Gives allnodrop item to player"
|
||||
- "<gray>| <green>/nodrop ignoreConfirm <yellow>- Ignore confirm gui (only if confirm enabled)"
|
||||
- "<gray>| <green>/nodrop ignoreConfirmTimed [seconds] <yellow>- Timed ignore confirm gui (only if confirm enabled)"
|
||||
- "<gray>| <green>/nodrop noIgnoreConfirm <yellow>- Drop ignore confirm setting (only if confirm enabled)"
|
||||
give:
|
||||
fail: "<dark_red><bold>[!] <red>Fail! Check item type for valid."
|
||||
success: "<green><bold>[!] <reset><green>Gived <yellow>%item%<green> to <yellow>%player%<green> amount <yellow>%amount%<green>!"
|
||||
@@ -11,10 +17,14 @@ applyHand:
|
||||
giveToStorage:
|
||||
fail: "<dark_red><bold>[!] <red>Fail! Check item type for valid."
|
||||
success: "<green><bold>[!] <reset><green>Gived <yellow>%item%<green> to <yellow>%player%<green> amount <yellow>%amount%<green> to storage!"
|
||||
ignoreConfirm:
|
||||
on: "<green><bold>[!] <reset><green>Now you are ignore confirm menu!"
|
||||
off: "<green><bold>[!] <reset><green>Now you are not ignore confirm menu!"
|
||||
|
||||
noPerms: "<dark_red><bold>[!] <red>No perms for this!"
|
||||
noConsole: "<dark_red><bold>[!] <red>Only players can use it!"
|
||||
noExists: "<dark_red><bold>[!] <red>This player doesnt exists!"
|
||||
error: "<dark_red><bold>[!] <red>An error occurred during the execution of the command!"
|
||||
|
||||
gui:
|
||||
confirm:
|
||||
|
||||
Reference in new issue
Block a user