Author SHA1 Message Date
redtea 50bb40d701 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
2025-11-06 02:05:22 +03:00
redtea 5cd86f3850 1.0.5 HOTFIX 2024-05-23 12:34:19 +03:00
15 changed files with 275 additions and 86 deletions

No files matched your search

+13 -16
View File
@@ -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.4-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'}
+82 -24
View File
@@ -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,6 +220,7 @@ public final class NoDropX extends JavaPlugin {
}
private MenuFacade initMenus() {
try {
CachedMenu personalStorageCachedMenu;
if (Objects.requireNonNull(getConfig().getString("personalStorageType")).equalsIgnoreCase("SINGLE_PAGE")) {
SinglePageGui singlePageGui = new SinglePageGui(messages, personalStorageRepo);
@@ -186,13 +232,20 @@ public final class NoDropX extends JavaPlugin {
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);
}
@@ -12,6 +12,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
@@ -46,6 +47,11 @@ public class PlayerHandler implements Listener {
respawnService.giveSavedItems(event.getPlayer());
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
respawnService.giveSavedItems(event.getPlayer());
}
@EventHandler
public void onQuit(PlayerQuitEvent event) {
menuFacade.clearCache(event.getPlayer());
@@ -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());
}
}
+2 -1
View File
@@ -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:
+10
View File
@@ -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:
+10
View File
@@ -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: