Compare commits
4
Commits
1.0.4-HOTIFX
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af920884aa | ||
|
|
48b3955add | ||
|
|
50bb40d701 | ||
|
|
5cd86f3850 |
No files matched your search
+16
-18
@@ -2,11 +2,10 @@ plugins {
|
|||||||
id 'java'
|
id 'java'
|
||||||
id("com.github.johnrengelman.shadow") version "7.0.0"
|
id("com.github.johnrengelman.shadow") version "7.0.0"
|
||||||
id("xyz.jpenilla.run-paper") version "2.1.0"
|
id("xyz.jpenilla.run-paper") version "2.1.0"
|
||||||
id 'org.jetbrains.kotlin.jvm' version '1.9.23'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'me.redtea'
|
group = 'me.redtea'
|
||||||
version = '1.0.4-HOTFIX'
|
version = '1.1.2-STABLE'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -33,22 +32,26 @@ repositories {
|
|||||||
maven {
|
maven {
|
||||||
url 'https://jitpack.io'
|
url 'https://jitpack.io'
|
||||||
}
|
}
|
||||||
|
maven {
|
||||||
|
url = "https://repo.triumphteam.dev/snapshots/"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
runtimeOnly("org.jetbrains.kotlin:kotlin-reflect:1.9.23")
|
|
||||||
implementation "org.jetbrains:annotations:24.0.0"
|
implementation "org.jetbrains:annotations:24.0.0"
|
||||||
compileOnly "org.projectlombok:lombok:1.18.26"
|
compileOnly "org.projectlombok:lombok:1.18.26"
|
||||||
annotationProcessor '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"
|
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 "tech.carcadex:kotlinbukkitkit-commands:1.0.0.4b-SNAPSHOT"
|
implementation "de.tr7zw:item-nbt-api:2.15.3"
|
||||||
implementation "de.tr7zw:item-nbt-api:2.12.3"
|
implementation "net.kyori:adventure-api:4.25.0"
|
||||||
implementation "net.kyori:adventure-api:4.14.0"
|
|
||||||
implementation "net.kyori:adventure-platform-bukkit:4.3.0"
|
implementation "net.kyori:adventure-platform-bukkit:4.3.0"
|
||||||
implementation files("libs/MiniMessages.jar")
|
compileOnly("net.kyori:adventure-text-minimessage:4.25.0")
|
||||||
implementation "dev.triumphteam:triumph-gui:3.1.2"
|
implementation "dev.triumphteam:triumph-gui:3.1.13"
|
||||||
compileOnly "com.github.LoneDev6:API-ItemsAdder:3.5.0b"
|
implementation "dev.triumphteam:triumph-cmd-bukkit:2.0.0-BETA-4"
|
||||||
|
implementation("beer.devs:FastNbt-jar:1.4.15")
|
||||||
|
|
||||||
|
compileOnly "com.github.LoneDev6:API-ItemsAdder:3.6.1"
|
||||||
compileOnly files("libs/nodropxforgebridge-1.4.jar")
|
compileOnly files("libs/nodropxforgebridge-1.4.jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,11 +71,7 @@ tasks.withType(JavaCompile).configureEach {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compileKotlin {
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget=1.8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
def props = [version: version]
|
def props = [version: version]
|
||||||
@@ -85,9 +84,8 @@ processResources {
|
|||||||
|
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
relocate 'de.tr7zw.changeme.nbtapi', 'me.redtea.nodropx.libs.tr7zw.nbt'
|
relocate 'de.tr7zw', 'me.redtea.nodropx.libs.tr7zw'
|
||||||
relocate 'de.tr7zw.annotations', 'me.redtea.nodropx.libs.tr7zw.annotations'
|
relocate 'dev.triumphteam', 'me.redtea.nodropx.libs.triumphteam'
|
||||||
relocate 'dev.triumphteam', 'me.redtea.nodropx.libs.gui'
|
|
||||||
relocate 'org.checkerframework', 'me.redtea.nodropx.libs.message.oskarsmc.libs.checker'
|
relocate 'org.checkerframework', 'me.redtea.nodropx.libs.message.oskarsmc.libs.checker'
|
||||||
relocate 'org.intellij', 'me.redtea.nodropx.libs.intellij'
|
relocate 'org.intellij', 'me.redtea.nodropx.libs.intellij'
|
||||||
relocate 'org.jetbrains', 'me.redtea.nodropx.libs.jetbrains'}
|
relocate 'org.jetbrains', 'me.redtea.nodropx.libs.jetbrains'}
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
package me.redtea.nodropx;
|
package me.redtea.nodropx;
|
||||||
|
|
||||||
import kotlin.Unit;
|
import dev.triumphteam.cmd.bukkit.BukkitCommandManager;
|
||||||
import kotlin.jvm.functions.Function1;
|
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.SuggestionContext;
|
||||||
|
import dev.triumphteam.cmd.core.suggestion.SuggestionKey;
|
||||||
|
import dev.triumphteam.cmd.core.suggestion.SuggestionResolver;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.redtea.nodropx.api.facade.NoDropAPI;
|
import me.redtea.nodropx.api.facade.NoDropAPI;
|
||||||
import me.redtea.nodropx.api.facade.impl.NoDropXFacade;
|
import me.redtea.nodropx.api.facade.impl.NoDropXFacade;
|
||||||
@@ -26,6 +31,7 @@ import me.redtea.nodropx.menu.Menu;
|
|||||||
import me.redtea.nodropx.menu.dropconfirm.DropConfirmMFGui;
|
import me.redtea.nodropx.menu.dropconfirm.DropConfirmMFGui;
|
||||||
import me.redtea.nodropx.menu.facade.MenuFacade;
|
import me.redtea.nodropx.menu.facade.MenuFacade;
|
||||||
import me.redtea.nodropx.menu.facade.impl.MenuFacadeImpl;
|
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.pages.MFPageGui;
|
||||||
import me.redtea.nodropx.menu.storage.singlepage.SinglePageController;
|
import me.redtea.nodropx.menu.storage.singlepage.SinglePageController;
|
||||||
import me.redtea.nodropx.menu.storage.singlepage.SinglePageGui;
|
import me.redtea.nodropx.menu.storage.singlepage.SinglePageGui;
|
||||||
@@ -47,7 +53,7 @@ import me.redtea.nodropx.service.event.impl.EventServiceImpl;
|
|||||||
import me.redtea.nodropx.service.material.ItemStackService;
|
import me.redtea.nodropx.service.material.ItemStackService;
|
||||||
import me.redtea.nodropx.service.material.impl.ItemStackServiceImpl;
|
import me.redtea.nodropx.service.material.impl.ItemStackServiceImpl;
|
||||||
import me.redtea.nodropx.service.nbt.NBTService;
|
import me.redtea.nodropx.service.nbt.NBTService;
|
||||||
import me.redtea.nodropx.service.nbt.impl.Tr7zwNBTServiceImpl;
|
import me.redtea.nodropx.service.nbt.impl.FastNBTServiceImpl;
|
||||||
import me.redtea.nodropx.service.nodrop.NoDropService;
|
import me.redtea.nodropx.service.nodrop.NoDropService;
|
||||||
import me.redtea.nodropx.service.nodrop.impl.NoDropServiceImpl;
|
import me.redtea.nodropx.service.nodrop.impl.NoDropServiceImpl;
|
||||||
import me.redtea.nodropx.service.respawn.RespawnService;
|
import me.redtea.nodropx.service.respawn.RespawnService;
|
||||||
@@ -59,14 +65,17 @@ import me.redtea.nodropx.util.FoliaSupportedUtils;
|
|||||||
import me.redtea.nodropx.util.UpdateChecker;
|
import me.redtea.nodropx.util.UpdateChecker;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.ServicePriority;
|
import org.bukkit.plugin.ServicePriority;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import tech.carcadex.kotlinbukkitkit.commands.manager.CommandManager;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -112,7 +121,7 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
noDropCosmeticService.load(YamlConfiguration.loadConfiguration(textContext.getCosmetics()));
|
noDropCosmeticService.load(YamlConfiguration.loadConfiguration(textContext.getCosmetics()));
|
||||||
|
|
||||||
dropConfirmService = getConfig().getBoolean("confirmThrowNoDropItem") ? new DropConfirmServiceImpl() : new DropConfirmNull();
|
dropConfirmService = getConfig().getBoolean("confirmThrowNoDropItem") ? new DropConfirmServiceImpl() : new DropConfirmNull();
|
||||||
NBTService nbtService = new Tr7zwNBTServiceImpl();
|
NBTService nbtService = new FastNBTServiceImpl();
|
||||||
noDropService = new NoDropServiceImpl(nbtService, noDropCosmeticService);
|
noDropService = new NoDropServiceImpl(nbtService, noDropCosmeticService);
|
||||||
NoDropItemFactory noDropItemFactory = new NoDropItemFactoryImpl(noDropService);
|
NoDropItemFactory noDropItemFactory = new NoDropItemFactoryImpl(noDropService);
|
||||||
EventService eventService = new EventServiceImpl(noDropService);
|
EventService eventService = new EventServiceImpl(noDropService);
|
||||||
@@ -149,25 +158,57 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
Bukkit.getServicesManager().register(NoDropAPI.class,
|
Bukkit.getServicesManager().register(NoDropAPI.class,
|
||||||
noDropAPI, this, ServicePriority.Normal);
|
noDropAPI, this, ServicePriority.Normal);
|
||||||
|
|
||||||
CommandManager commandManager = CommandManager.get(this);
|
// CommandManager commandManager = CommandManager.get(this);
|
||||||
commandManager.message("#no-perm", sender -> {
|
// commandManager.message("#no-perm", sender -> {
|
||||||
messages.get("noPerms").send(sender);
|
// messages.get("noPerms").send(sender);
|
||||||
return Unit.INSTANCE;
|
// 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.registerSuggestion(SuggestionKey.of("allmaterials"),
|
||||||
|
new SuggestionResolver.Simple<CommandSender>() {
|
||||||
|
@Override
|
||||||
|
public @NotNull List<String> resolve(@NotNull SuggestionContext<CommandSender> context) {
|
||||||
|
return itemStackService.allMaterials();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
commandManager.message("#no-such-player", sender -> {
|
|
||||||
messages.get("noExists").send(sender);
|
|
||||||
return Unit.INSTANCE;
|
|
||||||
});
|
commandManager.registerMessage(MessageKey.TOO_MANY_ARGUMENTS, (sender, context) -> {
|
||||||
commandManager.message("#no-such-player", sender -> {
|
|
||||||
messages.get("usage").send(sender);
|
messages.get("usage").send(sender);
|
||||||
return Unit.INSTANCE;
|
|
||||||
});
|
});
|
||||||
commandManager.tabComplete("#materials", input -> itemStackService.allMaterials());
|
commandManager.registerMessage(MessageKey.UNKNOWN_COMMAND, (sender, context) -> {
|
||||||
commandManager.register(new NoDropCommand(messages, noDropAPI, menuFacade, this,
|
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));
|
itemStackService, dropConfirmService, eventService, allNoDropService));
|
||||||
bStatsInit();
|
bStatsInit();
|
||||||
printCredits();
|
printCredits();
|
||||||
@@ -175,6 +216,7 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private MenuFacade initMenus() {
|
private MenuFacade initMenus() {
|
||||||
|
try {
|
||||||
CachedMenu personalStorageCachedMenu;
|
CachedMenu personalStorageCachedMenu;
|
||||||
if (Objects.requireNonNull(getConfig().getString("personalStorageType")).equalsIgnoreCase("SINGLE_PAGE")) {
|
if (Objects.requireNonNull(getConfig().getString("personalStorageType")).equalsIgnoreCase("SINGLE_PAGE")) {
|
||||||
SinglePageGui singlePageGui = new SinglePageGui(messages, personalStorageRepo);
|
SinglePageGui singlePageGui = new SinglePageGui(messages, personalStorageRepo);
|
||||||
@@ -186,13 +228,20 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
|
|
||||||
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService, this);
|
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService, this);
|
||||||
return new MenuFacadeImpl(personalStorageCachedMenu, confirmMenu);
|
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() {
|
private ItemStackService initItemStackService() {
|
||||||
ItemStackService result = new ItemStackServiceImpl();
|
ItemStackService result = new ItemStackServiceImpl();
|
||||||
if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) {
|
if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) {
|
||||||
supportItemsAdder = true;
|
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 ItemsAdderProvider());
|
||||||
}
|
}
|
||||||
result.registerProvider(new ItemStackProviderDefault());
|
result.registerProvider(new ItemStackProviderDefault());
|
||||||
@@ -205,10 +254,10 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
new UpdateChecker(this, 111485, foliaSupportedUtils).getVersion(version -> {
|
new UpdateChecker(this, 111485, foliaSupportedUtils).getVersion(version -> {
|
||||||
if (this.getDescription().getVersion().equals(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 {
|
} else {
|
||||||
getLogger().info(ChatColor.YELLOW + "There is a new update available: " + ChatColor.GOLD + version);
|
printConsoleLine("&eThere 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("&eDownload it from " + ChatColor.GOLD + "https://www.spigotmc.org/resources/nodropx.111485/");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -222,7 +271,7 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
|
|
||||||
private void printCredits() {
|
private void printCredits() {
|
||||||
printCreditLine("&a************************************************************");
|
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* &eBy &citzRedTea");
|
||||||
printCreditLine("&a* &eDetected bukkit version &6" + Bukkit.getBukkitVersion());
|
printCreditLine("&a* &eDetected bukkit version &6" + Bukkit.getBukkitVersion());
|
||||||
printCreditLine("&a* &esupport HEX colors " + (supportHEX ? "&2YES" : "&4NO"));
|
printCreditLine("&a* &esupport HEX colors " + (supportHEX ? "&2YES" : "&4NO"));
|
||||||
@@ -230,6 +279,11 @@ public final class NoDropX extends JavaPlugin {
|
|||||||
printCreditLine("&a************************************************************");
|
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) {
|
private void printCreditLine(String s) {
|
||||||
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', s));
|
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', s));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package me.redtea.nodropx.command;
|
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.RequiredArgsConstructor;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
import me.redtea.nodropx.NoDropX;
|
import me.redtea.nodropx.NoDropX;
|
||||||
@@ -12,20 +18,23 @@ import me.redtea.nodropx.service.event.EventService;
|
|||||||
import me.redtea.nodropx.service.material.ItemStackService;
|
import me.redtea.nodropx.service.material.ItemStackService;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
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.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import tech.carcadex.kotlinbukkitkit.commands.reflection.annotations.*;
|
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main command of plugin
|
* Main command of plugin
|
||||||
* <p>/nodrop - usage</p>
|
* <p>/nodrop - usage</p>
|
||||||
* <p>/nodrop give [Player] [Material] [Amount (optional)]</p>
|
* <p>/nodrop give [Player] [Material] [Amount (optional)]</p>
|
||||||
*/
|
*/
|
||||||
@Command(name = "nodrop")
|
@Command("nodrop")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class NoDropCommand {
|
public class NoDropCommand {
|
||||||
private final Messages messages;
|
private final Messages messages;
|
||||||
@@ -37,42 +46,50 @@ public class NoDropCommand {
|
|||||||
private final EventService eventService;
|
private final EventService eventService;
|
||||||
private final AllNoDropService allNoDropService;
|
private final AllNoDropService allNoDropService;
|
||||||
|
|
||||||
@Default
|
@Command
|
||||||
public void onDefault(final CommandSender sender) {
|
public void onDefault(final CommandSender sender) {
|
||||||
messages.get("usage").send(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,
|
public void onGive(final CommandSender sender,
|
||||||
final Player player,
|
final Player player,
|
||||||
final String material,
|
@Suggestion("allmaterials") final String material,
|
||||||
@Optional final Integer amount) {
|
@Optional final Integer amount) {
|
||||||
try {
|
try {
|
||||||
noDropAPI.giveNoDrop(player, material, amount == null || amount == 0 ? 1 : amount);
|
ItemStack item = noDropAPI.getNoDrop(material, amount == null || amount == 0 ? 1 : amount);
|
||||||
|
player.getInventory().addItem(item);
|
||||||
|
|
||||||
|
|
||||||
messages.get("give.success")
|
messages.get("give.success")
|
||||||
.replaceAll("%item%", material)
|
.replaceAll("%item%", material)
|
||||||
.replaceAll("%player%", player.getName())
|
.replaceAll("%player%", player.getName())
|
||||||
.replaceAll("%amount%", amount == null ? "1" : amount.toString())
|
.replaceAll("%amount%", amount == null ? "1" : amount.toString())
|
||||||
.send(sender);
|
.send(sender);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
messages.get("give.fail").send(sender);
|
messages.get("give.fail").send(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "reload")
|
@Command("reload")
|
||||||
@Permission(perm = "nodropx.reload")
|
@Permission("nodropx.reload")
|
||||||
public void onReload(final CommandSender sender) {
|
public void onReload(final CommandSender sender) {
|
||||||
long time = new Date().getTime();
|
long time = new Date().getTime();
|
||||||
plugin.onReload();
|
plugin.onReload();
|
||||||
messages.get("reload").replaceAll("%time%", String.valueOf(new Date().getTime() - time)).send(sender);
|
messages.get("reload").replaceAll("%time%", String.valueOf(new Date().getTime() - time)).send(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "giveStorage")
|
@Command("givestorage")
|
||||||
@Permission(perm = "nodropx.giveStorage")
|
@Permission("nodropx.giveStorage")
|
||||||
@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
@NamedArguments("query-parameters")
|
||||||
|
//@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||||
public void onGiveStorage(final CommandSender sender,
|
public void onGiveStorage(final CommandSender sender,
|
||||||
final String playerName,
|
final String playerName,
|
||||||
final String material,
|
final String material,
|
||||||
@@ -96,14 +113,14 @@ public class NoDropCommand {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "ignoreConfirm")
|
@Command("ignoreconfirm")
|
||||||
@Permission(perm = "nodropx.ignoreConfirm")
|
@Permission("nodropx.ignoreConfirm")
|
||||||
public void onIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
public void onIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||||
if(target == null) {
|
if(target == null) {
|
||||||
if(!(sender instanceof Player)) {
|
if(!(sender instanceof Player)) {
|
||||||
sender.sendMessage("player only");
|
messages.get("error").send(sender);
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
|
messages.get("ignoreConfirm.on").send(sender);
|
||||||
confirmService.forceConfirm((Player) sender);
|
confirmService.forceConfirm((Player) sender);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -111,17 +128,17 @@ public class NoDropCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "ignoreConfirmTimed")
|
@Command("ignoreconfirmtimed")
|
||||||
@Permission(perm = "nodropx.ignoreConfirm.timed")
|
@Permission("nodropx.ignoreConfirm.timed")
|
||||||
public void onIgnoreConfirmTimed(final CommandSender sender, Integer sec, @Optional Player target) {
|
public void onIgnoreConfirmTimed(final CommandSender sender, Integer sec, @Optional Player target) {
|
||||||
if(target == null) {
|
if(target == null) {
|
||||||
if(!(sender instanceof Player)) {
|
if(!(sender instanceof Player)) {
|
||||||
sender.sendMessage("player only");
|
messages.get("error").send(sender);
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
confirmService.forceConfirm((Player) sender);
|
confirmService.forceConfirm((Player) sender);
|
||||||
try {
|
try {
|
||||||
Bukkit.getScheduler().runTaskLater(plugin,() -> confirmService.removeForceConfirm((Player) sender),20L*sec);
|
Bukkit.getScheduler().runTaskLater(plugin,() -> confirmService.removeForceConfirm((Player) sender),20L*sec);
|
||||||
|
messages.get("ignoreConfirm.on").send(sender);
|
||||||
} catch (UnsupportedOperationException e) {
|
} catch (UnsupportedOperationException e) {
|
||||||
sender.sendMessage(ChatColor.RED + "This operation didn't supports on your environment");
|
sender.sendMessage(ChatColor.RED + "This operation didn't supports on your environment");
|
||||||
}
|
}
|
||||||
@@ -136,22 +153,22 @@ public class NoDropCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "noIgnoreConfirm")
|
@Command("noignoreconfirm")
|
||||||
@Permission(perm = "nodropx.noIgnoreConfirm")
|
@Permission("nodropx.noIgnoreConfirm")
|
||||||
public void onNoIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
public void onNoIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||||
if(target == null) {
|
if(target == null) {
|
||||||
if(!(sender instanceof Player)) {
|
if(!(sender instanceof Player)) {
|
||||||
sender.sendMessage("player only");
|
messages.get("error").send(sender);
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
confirmService.removeForceConfirm((Player) sender);
|
confirmService.removeForceConfirm((Player) sender);
|
||||||
|
messages.get("ignoreConfirm.off").send(sender);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
confirmService.removeForceConfirm(target);
|
confirmService.removeForceConfirm(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@SubCommand(name = "applyHand")
|
@Command("applyhand")
|
||||||
@Permission(perm = "nodropx.applyhand")
|
@Permission("nodropx.applyhand")
|
||||||
public void onApplyHand(final Player sender) {
|
public void onApplyHand(final Player sender) {
|
||||||
try {
|
try {
|
||||||
val event = eventService.callPlayerChangeNoDropEvent(sender, sender.getInventory().getItemInMainHand(), true);
|
val event = eventService.callPlayerChangeNoDropEvent(sender, sender.getInventory().getItemInMainHand(), true);
|
||||||
@@ -162,9 +179,8 @@ public class NoDropCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "gui")
|
@Command(value = "gui", alias = "storage")
|
||||||
@Aliases(aliases = "storage")
|
@Permission("nodropx.gui")
|
||||||
@Permission(perm = "nodropx.gui")
|
|
||||||
public void onGui(final Player sender) {
|
public void onGui(final Player sender) {
|
||||||
menuFacade.openPersonalStorage(sender);
|
menuFacade.openPersonalStorage(sender);
|
||||||
}
|
}
|
||||||
@@ -177,9 +193,10 @@ public class NoDropCommand {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubCommand(name = "giveallnodrop")
|
@Command("giveallnodrop")
|
||||||
@Permission(perm = "nodropx.giveallnodrop")
|
@Permission("nodropx.giveallnodrop")
|
||||||
@TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
@NamedArguments("query-parameters")
|
||||||
|
// @TabComplete(complete = {"#players", "#materials", "#range:1-64"})
|
||||||
public void onGiveAllNoDrop(final CommandSender sender,
|
public void onGiveAllNoDrop(final CommandSender sender,
|
||||||
final Player player,
|
final Player player,
|
||||||
final String material,
|
final String material,
|
||||||
|
|||||||
@@ -26,8 +26,14 @@ public class FoliaSupporter {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void run(RespawnService respawnService, Plugin plugin) {
|
public void run(RespawnService respawnService, Plugin plugin) {
|
||||||
try {
|
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();
|
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;
|
return;
|
||||||
}
|
}
|
||||||
runningOnFolia = true;
|
runningOnFolia = true;
|
||||||
@@ -56,7 +62,7 @@ public class FoliaSupporter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(500);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
|
||||||
@@ -46,6 +47,11 @@ public class PlayerHandler implements Listener {
|
|||||||
respawnService.giveSavedItems(event.getPlayer());
|
respawnService.giveSavedItems(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
respawnService.giveSavedItems(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onQuit(PlayerQuitEvent event) {
|
public void onQuit(PlayerQuitEvent event) {
|
||||||
menuFacade.clearCache(event.getPlayer());
|
menuFacade.clearCache(event.getPlayer());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.event.inventory.InventoryAction;
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||||
|
|
||||||
public class SinglePageGuiHandler implements Listener {
|
public class SinglePageGuiHandler implements Listener {
|
||||||
private final SinglePageController controller;
|
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
|
@EventHandler
|
||||||
public void onClick(InventoryClickEvent event) {
|
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.libs.carcadex.repo.MutableRepo;
|
||||||
import me.redtea.nodropx.service.nodrop.NoDropService;
|
import me.redtea.nodropx.service.nodrop.NoDropService;
|
||||||
import me.redtea.nodropx.util.FoliaSupportedUtils;
|
import me.redtea.nodropx.util.FoliaSupportedUtils;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryAction;
|
import org.bukkit.event.inventory.*;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -30,16 +30,28 @@ public class SinglePageController {
|
|||||||
if(clickActions.contains(event.getAction()) && !(noDropService.isNoDrop(event.getCurrentItem()))) {
|
if(clickActions.contains(event.getAction()) && !(noDropService.isNoDrop(event.getCurrentItem()))) {
|
||||||
event.setCancelled(true);
|
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(() -> {
|
foliaSupportedUtils.runTask(() -> {
|
||||||
for(ItemStack itemStack : event.getInventory()) {
|
for(ItemStack itemStack : inventory) {
|
||||||
if (itemStack != null && !noDropService.isNoDrop(itemStack)) {
|
if (itemStack != null && !noDropService.isNoDrop(itemStack)) {
|
||||||
event.getWhoClicked().getInventory().addItem(itemStack);
|
whoClicked.getInventory().addItem(itemStack);
|
||||||
event.getInventory().remove(itemStack);
|
inventory.remove(itemStack);
|
||||||
((Player) event.getWhoClicked()).updateInventory();
|
((Player) whoClicked).updateInventory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClose(InventoryCloseEvent event) {
|
public void onClose(InventoryCloseEvent event) {
|
||||||
|
|||||||
@@ -26,7 +26,13 @@ public class SinglePageGui implements CachedMenu {
|
|||||||
player.openInventory(cache.get(player.getUniqueId()));
|
player.openInventory(cache.get(player.getUniqueId()));
|
||||||
return;
|
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);
|
for(ItemStack item : personalStorageRepo.get(player.getUniqueId()).orElse(new ArrayList<>())) if(item != null) gui.addItem(item);
|
||||||
|
|
||||||
cache.put(player.getUniqueId(), gui);
|
cache.put(player.getUniqueId(), gui);
|
||||||
|
|||||||
@@ -5,17 +5,21 @@ import dev.lone.itemsadder.api.ItemsAdder;
|
|||||||
import me.redtea.nodropx.model.materialprovider.ItemStackProvider;
|
import me.redtea.nodropx.model.materialprovider.ItemStackProvider;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ItemsAdderProvider implements ItemStackProvider {
|
public class ItemsAdderProvider implements ItemStackProvider {
|
||||||
@Override
|
@Override
|
||||||
public ItemStack get(String s) {
|
public ItemStack get(String s) {
|
||||||
return CustomStack.getInstance(s).getItemStack();
|
CustomStack stack = CustomStack.getInstance(s);
|
||||||
|
return (stack != null) ? stack.getItemStack().clone() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> allMaterials() {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package me.redtea.nodropx.service.capasity.impl;
|
package me.redtea.nodropx.service.capasity.impl;
|
||||||
|
|
||||||
|
import beer.devs.fastnbt.nms.nbt.NItem;
|
||||||
import me.redtea.nodropx.libs.carcadex.repo.Repo;
|
import me.redtea.nodropx.libs.carcadex.repo.Repo;
|
||||||
import me.redtea.nodropx.libs.carcadex.repo.impl.yaml.YamlRepo;
|
import me.redtea.nodropx.libs.carcadex.repo.impl.yaml.YamlRepo;
|
||||||
import me.redtea.nodropx.service.capasity.CapacityService;
|
import me.redtea.nodropx.service.capasity.CapacityService;
|
||||||
@@ -7,24 +8,19 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class CapacityServiceImpl implements CapacityService {
|
public class CapacityServiceImpl implements CapacityService {
|
||||||
private final Repo<String, List<Integer>> capacityRepo;
|
private final Repo<String, List<Integer>> capacityRepo;
|
||||||
private final Map<String, Integer> customModelDataRequired = new HashMap<>();
|
|
||||||
public CapacityServiceImpl(Plugin plugin) {
|
public CapacityServiceImpl(Plugin plugin) {
|
||||||
capacityRepo = new YamlRepo<>(
|
capacityRepo = new YamlRepo<>(
|
||||||
new File(plugin.getDataFolder(), "capacity.yml").toPath(),
|
new File(plugin.getDataFolder(), "capacity.yml").toPath(),
|
||||||
plugin,
|
plugin,
|
||||||
conf -> conf.getKeys(false).stream().collect(Collectors.toMap(
|
conf -> conf.getKeys(false).stream().collect(Collectors.toMap(
|
||||||
value -> {
|
value -> value,
|
||||||
if(value.contains("->")) {
|
|
||||||
String[] args = value.split("->");
|
|
||||||
customModelDataRequired.put(args[0], Integer.parseInt(args[1]));
|
|
||||||
return args[0];
|
|
||||||
} else return value;
|
|
||||||
},
|
|
||||||
conf::getIntegerList))
|
conf::getIntegerList))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -32,17 +28,18 @@ public class CapacityServiceImpl implements CapacityService {
|
|||||||
@Override
|
@Override
|
||||||
public List<Integer> get(ItemStack item) {
|
public List<Integer> get(ItemStack item) {
|
||||||
String key = item.getType().name();
|
String key = item.getType().name();
|
||||||
|
|
||||||
|
if(NItem.hasNBT(item)) {
|
||||||
|
NItem nItem = NItem.of(item);
|
||||||
|
if(nItem.hasKey("itemsadder")) {
|
||||||
|
key = nItem.getCompound("itemsadder").getString("namespace") + ":" + nItem.getCompound("itemsadder").getString("id");
|
||||||
|
} else if(item.hasItemMeta() && item.getItemMeta().hasCustomModelData()) {
|
||||||
|
key += "->" + item.getItemMeta().getCustomModelData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Optional<List<Integer>> result = capacityRepo.get(key);
|
Optional<List<Integer>> result = capacityRepo.get(key);
|
||||||
if(!result.isPresent()) {
|
return result.orElse(Collections.emptyList());
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
if(customModelDataRequired.containsKey(key)) {
|
|
||||||
int cmi = customModelDataRequired.get(key);
|
|
||||||
if(!item.getItemMeta().hasCustomModelData() || item.getItemMeta().getCustomModelData() != cmi) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package me.redtea.nodropx.service.nbt.impl;
|
||||||
|
|
||||||
|
import beer.devs.fastnbt.nms.nbt.NItem;
|
||||||
|
import de.tr7zw.changeme.nbtapi.NBTItem;
|
||||||
|
import me.redtea.nodropx.service.nbt.NBTService;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class FastNBTServiceImpl implements NBTService {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBoolTag(ItemStack item, String tag, boolean value) {
|
||||||
|
NItem nbtItem = new NItem(item);
|
||||||
|
nbtItem.setBoolean(tag, value);
|
||||||
|
nbtItem.merge(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getBoolTag(ItemStack item, String tag) {
|
||||||
|
if(item == null || item.getType() == Material.AIR) return false;
|
||||||
|
NItem nbtItem = new NItem(item);
|
||||||
|
return nbtItem.hasKey(tag) && nbtItem.getBoolean(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,8 +13,8 @@ public class NoDropServiceImpl implements NoDropService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setNoDrop(ItemStack item, boolean isNoDrop) {
|
public void setNoDrop(ItemStack item, boolean isNoDrop) {
|
||||||
nbtService.setBoolTag(item, "isNoDrop", true);
|
|
||||||
cosmeticService.applyAll(item);
|
cosmeticService.applyAll(item);
|
||||||
|
nbtService.setBoolTag(item, "isNoDrop", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public class RespawnServiceImpl implements RespawnService {
|
|||||||
Pair[] pairs = toRespawn.get(player.getName());
|
Pair[] pairs = toRespawn.get(player.getName());
|
||||||
for(Pair pair : pairs) player.getInventory().setItem(pair.slot, pair.item);
|
for(Pair pair : pairs) player.getInventory().setItem(pair.slot, pair.item);
|
||||||
toRespawn.remove(player.getName());
|
toRespawn.remove(player.getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# Dev's discord tag - itzredtea
|
||||||
|
|
||||||
forceUseLegacy: false
|
forceUseLegacy: false
|
||||||
forceUseMD5Colors: false
|
forceUseMD5Colors: false
|
||||||
forceUseFoliaPatches: false
|
forceUseFoliaPatches: false
|
||||||
@@ -8,6 +10,5 @@ checkForUpdates: true
|
|||||||
# Use it on your own risk
|
# Use it on your own risk
|
||||||
confirmThrowNoDropItem: false
|
confirmThrowNoDropItem: false
|
||||||
|
|
||||||
#Single did not supports minimessages!
|
|
||||||
#Can be SINGLE_PAGE or MULTI_PAGES (Use MULTI_PAGES on your own risk)
|
#Can be SINGLE_PAGE or MULTI_PAGES (Use MULTI_PAGES on your own risk)
|
||||||
personalStorageType: SINGLE_PAGE
|
personalStorageType: SINGLE_PAGE
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
usage:
|
usage:
|
||||||
- "&7[ &aUsage of command &e/nodrop &7]"
|
- "&7[ &aUsage of command &e/nodrop &7]"
|
||||||
- "&7| &a/nodrop give [player] [item] (amount) &e- give no drop item"
|
- "&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:
|
give:
|
||||||
fail: "&4[!] &cFail! Check item type for valid."
|
fail: "&4[!] &cFail! Check item type for valid."
|
||||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
||||||
@@ -11,10 +17,14 @@ applyHand:
|
|||||||
giveToStorage:
|
giveToStorage:
|
||||||
fail: "&4[!] &cFail! Check item type for valid."
|
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!"
|
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!"
|
noPerms: "&4&l[!] &cNo perms for this!"
|
||||||
noConsole: "&4&l[!] &cOnly players can use it!"
|
noConsole: "&4&l[!] &cOnly players can use it!"
|
||||||
noExists: "&4&l[!] &cThis player doesnt exists!"
|
noExists: "&4&l[!] &cThis player doesnt exists!"
|
||||||
|
error: "&4&l[!] &cAn error occurred during the execution of the command!"
|
||||||
|
|
||||||
gui:
|
gui:
|
||||||
confirm:
|
confirm:
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
usage:
|
usage:
|
||||||
- "&7[ &aUsage of command &e/nodrop &7]"
|
- "&7[ &aUsage of command &e/nodrop &7]"
|
||||||
- "&7| &a/nodrop give [player] [item] (amount) &e- give no drop item"
|
- "&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:
|
give:
|
||||||
fail: "&4[!] &cFail! Check item type for valid."
|
fail: "&4[!] &cFail! Check item type for valid."
|
||||||
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
success: "&2&l[!] &aGived &e%item%&a to &e%player%&a amount &e%amount%&a!"
|
||||||
@@ -11,10 +17,14 @@ applyHand:
|
|||||||
giveToStorage:
|
giveToStorage:
|
||||||
fail: "&4[!] &cFail! Check item type for valid."
|
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!"
|
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!"
|
noPerms: "&4&l[!] &cNo perms for this!"
|
||||||
noConsole: "&4&l[!] &cOnly players can use it!"
|
noConsole: "&4&l[!] &cOnly players can use it!"
|
||||||
noExists: "&4&l[!] &cThis player doesnt exists!"
|
noExists: "&4&l[!] &cThis player doesnt exists!"
|
||||||
|
error: "&4&l[!] &cAn error occurred during the execution of the command!"
|
||||||
|
|
||||||
gui:
|
gui:
|
||||||
confirm:
|
confirm:
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
usage:
|
usage:
|
||||||
- "<gray>[ <green>Usage of command <yellow>/nodrop <gray>]"
|
- "<gray>[ <green>Usage of command <yellow>/nodrop <gray>]"
|
||||||
- "<gray>| <green>/nodrop give [player] [item] (amount) <yellow>- give no drop item"
|
- "<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:
|
give:
|
||||||
fail: "<dark_red><bold>[!] <red>Fail! Check item type for valid."
|
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>!"
|
success: "<green><bold>[!] <reset><green>Gived <yellow>%item%<green> to <yellow>%player%<green> amount <yellow>%amount%<green>!"
|
||||||
@@ -11,10 +17,14 @@ applyHand:
|
|||||||
giveToStorage:
|
giveToStorage:
|
||||||
fail: "<dark_red><bold>[!] <red>Fail! Check item type for valid."
|
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!"
|
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!"
|
noPerms: "<dark_red><bold>[!] <red>No perms for this!"
|
||||||
noConsole: "<dark_red><bold>[!] <red>Only players can use it!"
|
noConsole: "<dark_red><bold>[!] <red>Only players can use it!"
|
||||||
noExists: "<dark_red><bold>[!] <red>This player doesnt exists!"
|
noExists: "<dark_red><bold>[!] <red>This player doesnt exists!"
|
||||||
|
error: "<dark_red><bold>[!] <red>An error occurred during the execution of the command!"
|
||||||
|
|
||||||
gui:
|
gui:
|
||||||
confirm:
|
confirm:
|
||||||
|
|||||||
Reference in new issue
Block a user