diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/LiteCommandsSetup.java b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/LiteCommandsSetup.java index bf46256e6..acaf81d73 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/LiteCommandsSetup.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/LiteCommandsSetup.java @@ -3,6 +3,7 @@ import com.eternalcode.core.injector.annotations.Bean; import com.eternalcode.core.injector.annotations.component.BeanSetup; import com.eternalcode.core.injector.bean.BeanFactory; +import com.eternalcode.core.notice.NoticeService; import com.eternalcode.core.publish.Subscribe; import com.eternalcode.core.publish.Subscriber; import com.eternalcode.core.publish.event.EternalInitializeEvent; @@ -12,6 +13,7 @@ import dev.rollczi.litecommands.adventure.bukkit.platform.LiteAdventurePlatformExtension; import dev.rollczi.litecommands.annotations.LiteCommandsAnnotations; import dev.rollczi.litecommands.bukkit.LiteBukkitFactory; +import dev.rollczi.litecommands.bukkit.LiteBukkitMessages; import net.kyori.adventure.platform.AudienceProvider; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Server; @@ -27,10 +29,21 @@ class LiteCommandsSetup implements Subscriber { Server server, AudienceProvider audiencesProvider, MiniMessage miniMessage, + NoticeService noticeService, LiteCommandsAnnotations liteCommandsAnnotations ) { return LiteBukkitFactory.builder("eternalcore", plugin, server) .commands(liteCommandsAnnotations) + .message(LiteBukkitMessages.WORLD_NOT_EXIST, (invocation, world) -> noticeService.create() + .sender(invocation.sender()) + .notice(translation -> translation.argument().worldDoesntExist()) + .placeholder("{WORLD}", world) + ) + .message(LiteBukkitMessages.LOCATION_INVALID_FORMAT, (invocation, input) -> noticeService.create() + .sender(invocation.sender()) + .notice(translation -> translation.argument().incorrectLocation()) + .placeholder("{LOCATION}", input) + ) .extension(new LiteAdventurePlatformExtension(audiencesProvider), extension -> extension .serializer(miniMessage) ); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java index 24db4bc7c..ca3f0103b 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java @@ -369,6 +369,9 @@ public static class Items { @Description({ " ", "# The default item give amount, when no amount is specified in the command." }) public int defaultGiveAmount = 1; + + @Description({ " ", "# Determines whether items should be dropped on the ground when the player's inventory is full" }) + public boolean dropOnFullInventory = true; } @Description({ " ", "# Warp Section" }) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveCommand.java index 730cbf9eb..5c291915c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveCommand.java @@ -2,91 +2,69 @@ import com.eternalcode.annotations.scan.command.DescriptionDocs; import com.eternalcode.core.configuration.implementation.PluginConfiguration; -import com.eternalcode.core.feature.essentials.item.enchant.EnchantArgument; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.notice.NoticeService; import com.eternalcode.core.util.MaterialUtil; -import com.eternalcode.core.viewer.Viewer; import dev.rollczi.litecommands.annotations.argument.Arg; import dev.rollczi.litecommands.annotations.context.Context; import dev.rollczi.litecommands.annotations.execute.Execute; import dev.rollczi.litecommands.annotations.permission.Permission; import dev.rollczi.litecommands.annotations.command.Command; -import dev.triumphteam.gui.builder.item.ItemBuilder; import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; @Command(name = "give", aliases = { "i", "item" }) @Permission("eternalcore.give") class GiveCommand { private final NoticeService noticeService; - private final PluginConfiguration pluginConfig; + private final GiveService giveService; + private final PluginConfiguration config; @Inject - GiveCommand(NoticeService noticeService, PluginConfiguration pluginConfig) { + GiveCommand(NoticeService noticeService, GiveService giveService, PluginConfiguration config) { this.noticeService = noticeService; - this.pluginConfig = pluginConfig; + this.giveService = giveService; + this.config = config; } @Execute @DescriptionDocs(description = "Gives you an item", arguments = "") void execute(@Context Player player, @Arg Material material) { - String formattedMaterial = MaterialUtil.format(material); - - this.giveItem(player, material); - - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .notice(translation -> translation.item().giveReceived()) - .player(player.getUniqueId()) - .send(); + this.execute(player, material, this.config.items.defaultGiveAmount); } @Execute @DescriptionDocs(description = "Gives an item to another player", arguments = " ") - void execute(@Context Viewer viewer, @Arg Material material, @Arg Player target) { - String formattedMaterial = MaterialUtil.format(material); - - this.giveItem(target, material); - - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .notice(translation -> translation.item().giveReceived()) - .player(target.getUniqueId()) - .send(); - - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .placeholder("{PLAYER}", target.getName()) - .notice(translation -> translation.item().giveGiven()) - .viewer(viewer) - .send(); + void execute(@Context CommandSender sender, @Arg Material material, @Arg Player target) { + this.execute(sender, material, this.config.items.defaultGiveAmount, target); } @Execute @DescriptionDocs(description = "Gives you an item with a custom amount", arguments = " ") void execute(@Context Player player, @Arg Material material, @Arg(GiveArgument.KEY) int amount) { - String formattedMaterial = MaterialUtil.format(material); - - this.giveItem(player, material, amount); + boolean isSuccess = this.giveService.giveItem(player, player, material, amount); - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .notice(translation -> translation.item().giveReceived()) - .player(player.getUniqueId()) - .send(); + if (isSuccess) { + this.noticeService.create() + .placeholder("{ITEM}", MaterialUtil.format(material)) + .notice(translation -> translation.item().giveReceived()) + .player(player.getUniqueId()) + .send(); + } } @Execute @DescriptionDocs(description = "Gives an item with a custom amount to another player", arguments = " ") - void execute(@Context Viewer viewer, @Arg Material material, @Arg(GiveArgument.KEY) int amount, @Arg Player target) { - String formattedMaterial = MaterialUtil.format(material); + void execute(@Context CommandSender sender, @Arg Material material, @Arg(GiveArgument.KEY) int amount, @Arg Player target) { + boolean isSuccess = this.giveService.giveItem(sender, target, material, amount); - this.giveItem(target, material, amount); + if (!isSuccess) { + return; + } + String formattedMaterial = MaterialUtil.format(material); this.noticeService.create() .placeholder("{ITEM}", formattedMaterial) .notice(translation -> translation.item().giveReceived()) @@ -97,68 +75,8 @@ void execute(@Context Viewer viewer, @Arg Material material, @Arg(GiveArgument.K .placeholder("{ITEM}", formattedMaterial) .placeholder("{PLAYER}", target.getName()) .notice(translation -> translation.item().giveGiven()) - .viewer(viewer) - .send(); - } - - @Execute - @DescriptionDocs(description = "Gives an item with a custom amount to another player", arguments = " ") - void execute(@Context Viewer viewer, @Arg Material material, @Arg(GiveArgument.KEY) int amount, @Arg Enchantment enchantment, @Arg(EnchantArgument.KEY) int level, @Arg Player target) { - String formattedMaterial = MaterialUtil.format(material); - - this.giveItem(target, material, amount, enchantment, level); - - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .placeholder("{ENCHANTMENT}", enchantment.getKey().getKey()) - .placeholder("{ENCHANTMENT_LEVEL}", String.valueOf(level)) - .notice(translation -> translation.item().giveReceivedEnchantment()) - .player(target.getUniqueId()) - .send(); - - this.noticeService.create() - .placeholder("{ITEM}", formattedMaterial) - .placeholder("{PLAYER}", target.getName()) - .placeholder("{ENCHANTMENT}", enchantment.getKey().getKey()) - .placeholder("{ENCHANTMENT_LEVEL}", String.valueOf(level)) - .notice(translation -> translation.item().giveGivenEnchantment()) - .viewer(viewer) + .sender(sender) .send(); } - private void giveItem(Player player, Material material) { - int amount = this.pluginConfig.items.defaultGiveAmount; - - if (!material.isItem()) { - this.noticeService.create() - .notice(translation -> translation.item().giveNotItem()) - .player(player.getUniqueId()) - .send(); - return; - } - - ItemStack item = ItemBuilder.from(material) - .amount(amount) - .build(); - - player.getInventory().addItem(item); - } - - private void giveItem(Player player, Material material, int amount) { - ItemStack item = ItemBuilder.from(material) - .amount(amount) - .build(); - - player.getInventory().addItem(item); - } - - private void giveItem(Player player, Material material, int amount, Enchantment enchantment, int level) { - ItemStack item = ItemBuilder.from(material) - .amount(amount) - .enchant(enchantment, level) - .build(); - - player.getInventory().addItem(item); - } - } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveService.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveService.java new file mode 100644 index 000000000..3b6b56649 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/item/give/GiveService.java @@ -0,0 +1,135 @@ +package com.eternalcode.core.feature.essentials.item.give; + +import com.eternalcode.core.configuration.implementation.PluginConfiguration; +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Service; +import com.eternalcode.core.notice.NoticeService; +import java.util.Optional; +import org.bukkit.Material; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; + +@Service +class GiveService { + + private final PluginConfiguration pluginConfiguration; + private final NoticeService noticeService; + + @Inject + public GiveService(PluginConfiguration pluginConfiguration, NoticeService noticeService) { + this.pluginConfiguration = pluginConfiguration; + this.noticeService = noticeService; + } + + public boolean giveItem(CommandSender sender, Player player, Material material, int amount) { + if (this.isInvalidMaterial(material)) { + this.noticeService.create() + .notice(translation -> translation.item().giveNotItem()) + .sender(sender) + .send(); + + return false; + } + + PlayerInventory inventory = player.getInventory(); + GiveResult giveResult = this.processGive(new PlayerContents(inventory.getStorageContents(), inventory.getItemInOffHand()), new ItemStack(material, amount)); + Optional rest = giveResult.rest(); + + if (rest.isPresent() && !this.pluginConfiguration.items.dropOnFullInventory) { + this.noticeService.create() + .notice(translation -> translation.item().giveNoSpace()) + .sender(sender) + .send(); + return false; + } + + inventory.setStorageContents(giveResult.contents().storage); + inventory.setItemInOffHand(giveResult.contents().extraSlot); + + if (rest.isPresent()) { + player.getWorld().dropItemNaturally(player.getLocation(), rest.get()); + } + + return true; + } + + private boolean isInvalidMaterial(Material material) { + return !material.isItem(); + } + + private GiveResult processGive(PlayerContents contents, ItemStack itemToGive) { + for (int i = 0; i < contents.size(); i++) { + if (itemToGive.getAmount() < 0) { + throw new IllegalArgumentException("Item amount cannot be negative"); + } + + if (itemToGive.getAmount() == 0) { + return new GiveResult(contents, Optional.empty()); + } + + ItemStack content = contents.get(i); + + if (content == null || content.getType().isAir()) { + contents.set(i, processContentSlot(itemToGive, 0, itemToGive.clone())); + continue; + } + + if (!content.isSimilar(itemToGive)) { + continue; + } + + contents.set(i, processContentSlot(itemToGive, content.getAmount(), content.clone())); + } + + if (itemToGive.getAmount() > 0) { + return new GiveResult(contents, Optional.of(itemToGive)); + } + + return new GiveResult(contents, Optional.empty()); + } + + private static ItemStack processContentSlot(ItemStack itemToGive, int amount, ItemStack cloned) { + int amountToConsume = Math.min(itemToGive.getAmount(), itemToGive.getMaxStackSize() - amount); + + cloned.setAmount(amount + amountToConsume); + itemToGive.setAmount(itemToGive.getAmount() - amountToConsume); + + return cloned; + } + + private record GiveResult(PlayerContents contents, Optional rest) {} + + private static class PlayerContents { + private final ItemStack[] storage; + private ItemStack extraSlot; + + private PlayerContents(ItemStack[] storage, ItemStack extraSlot) { + this.storage = storage; + this.extraSlot = extraSlot; + } + + int size() { + return this.storage.length + 1; + } + + ItemStack get(int index) { + if (index == this.size() - 1) { + return this.extraSlot; + } + + return this.storage[index]; + } + + void set(int index, ItemStack item) { + if (index == this.size() - 1) { + this.extraSlot = item; + return; + } + + this.storage[index] = item; + } + } + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/notice/EternalCoreBroadcastImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/notice/EternalCoreBroadcastImpl.java index a3666bfe6..1f9eb47a2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/notice/EternalCoreBroadcastImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/notice/EternalCoreBroadcastImpl.java @@ -7,11 +7,8 @@ import com.eternalcode.multification.locate.LocaleProvider; import com.eternalcode.multification.notice.Notice; import com.eternalcode.multification.notice.NoticeBroadcastImpl; -import com.eternalcode.multification.notice.NoticeKey; import com.eternalcode.multification.notice.provider.TextMessageProvider; -import com.eternalcode.multification.notice.resolver.NoticeContent; import com.eternalcode.multification.notice.resolver.NoticeResolverRegistry; -import com.eternalcode.multification.notice.resolver.chat.ChatContent; import com.eternalcode.multification.notice.resolver.text.TextContent; import com.eternalcode.multification.platform.PlatformBroadcaster; import com.eternalcode.multification.shared.Replacer; @@ -21,6 +18,8 @@ import java.util.Collections; import java.util.List; import java.util.function.Function; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; /** * This class is an extension of {@link NoticeBroadcastImpl} that provides more methods for creating notices. @@ -54,6 +53,14 @@ public B placeholders(Placeholders placeholders, CONTEXT cont return this.formatter(placeholders.toFormatter(context)); } + public B sender(CommandSender sender) { + if (sender instanceof Player player) { + return this.player(player.getUniqueId()); + } + + return this.console(); + } + public B user(User user) { return this.player(user.getUniqueId()); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/notice/NoticeService.java b/eternalcore-core/src/main/java/com/eternalcode/core/notice/NoticeService.java index 4b4ecb1c1..d984a9281 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/notice/NoticeService.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/notice/NoticeService.java @@ -1,9 +1,7 @@ package com.eternalcode.core.notice; import com.eternalcode.commons.scheduler.Scheduler; -import com.eternalcode.core.injector.annotations.Bean; import com.eternalcode.core.injector.annotations.Inject; -import com.eternalcode.core.injector.annotations.component.BeanSetup; import com.eternalcode.core.injector.annotations.component.Service; import com.eternalcode.core.placeholder.PlaceholderRegistry; import com.eternalcode.core.translation.Translation; @@ -13,10 +11,8 @@ import com.eternalcode.core.viewer.Viewer; import com.eternalcode.multification.Multification; import com.eternalcode.multification.adventure.AudienceConverter; -import com.eternalcode.multification.bukkit.notice.resolver.sound.SoundBukkitResolver; import com.eternalcode.multification.executor.AsyncExecutor; import com.eternalcode.multification.locate.LocaleProvider; -import com.eternalcode.multification.notice.resolver.NoticeResolverDefaults; import com.eternalcode.multification.notice.resolver.NoticeResolverRegistry; import com.eternalcode.multification.platform.PlatformBroadcaster; import com.eternalcode.multification.shared.Replacer; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java index 1367f8533..c7d8b8745 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java @@ -35,7 +35,6 @@ interface ArgumentSection { Notice noValidEnchantmentLevel(); Notice invalidTimeFormat(); Notice worldDoesntExist(); - Notice youMustGiveWorldName(); Notice incorrectNumberOfChunks(); Notice incorrectLocation(); } @@ -385,10 +384,8 @@ interface ItemSection { // give Notice giveReceived(); - Notice giveReceivedEnchantment(); Notice giveGiven(); - Notice giveGivenEnchantment(); - + Notice giveNoSpace(); Notice giveNotItem(); // others diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java index f77de1e3a..6ec7080a1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java @@ -120,10 +120,9 @@ public static class ENArgumentSection implements ArgumentSection { public Notice noEnchantment = Notice.chat("This enchantment doesn't exist"); public Notice noValidEnchantmentLevel = Notice.chat("This enchantment level is not supported!"); public Notice invalidTimeFormat = Notice.chat("Invalid time format!"); - public Notice worldDoesntExist = Notice.chat("This world doesn't exist!"); - public Notice youMustGiveWorldName = Notice.chat("You must provide a world name!"); - public Notice incorrectLocation = Notice.chat("Incorrect location!"); + public Notice worldDoesntExist = Notice.chat("World {WORLD} doesn't exist!"); public Notice incorrectNumberOfChunks = Notice.chat("Incorrect number of chunks!"); + public Notice incorrectLocation = Notice.chat("Incorrect location format! ({LOCATION})"); } @Description({ @@ -749,13 +748,7 @@ public static class ENItemSection implements ItemSection { @Description({" ", "# {PLAYER} - Name of item receiver, {ITEM} - the item"}) public Notice giveGiven = Notice.chat("Player {PLAYER} has received {ITEM}"); - - @Description({" ", "# {PLAYER} - Name of item receiver, {ITEM} - the item, {ENCHANTMENT} - enchantment name, " - + "{ENCHANTMENT_LEVEL} - enchantment level"}) - public Notice giveGivenEnchantment = Notice.chat("Player {PLAYER} has received {ITEM} with enchantment: {ENCHANTMENT}"); - - @Description({" ", "# {ITEM} - the item, {ENCHANTMENT} - enchantment name, {ENCHANTMENT_LEVEL} - enchantment level"}) - public Notice giveReceivedEnchantment = Notice.chat("You have received {ITEM} with enchantment: {ENCHANTMENT}"); + public Notice giveNoSpace = Notice.chat("Not enough space in inventory!"); @Description(" ") public Notice giveNotItem = Notice.chat("Not a valid obtainable item!"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java index 28c5efcc6..eaf6cbd24 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java @@ -97,7 +97,7 @@ public class PLTranslation extends AbstractTranslation { @Contextual public static class PLArgumentSection implements ArgumentSection { @Description("# {PERMISSIONS} - Wyświetla wymagane uprawnienia") - public Notice permissionMessage = Notice.chat("Błąd: Nie masz uprawnień do tej komendy! ({PERMISSIONS})"); + public Notice permissionMessage = Notice.chat("Nie masz uprawnień do tej komendy! ({PERMISSIONS})"); @Description({" ", "# {USAGE} - Wyświetla poprawne użycie komendy"}) public Notice usageMessage = Notice.chat("Poprawne użycie: {USAGE}"); @@ -106,21 +106,20 @@ public static class PLArgumentSection implements ArgumentSection { @Description(" ") public Notice missingPlayerName = Notice.chat("Błąd: Musisz podać nazwę gracza!"); - public Notice offlinePlayer = Notice.chat("Błąd: Ten gracz jest obecnie offline!"); - public Notice onlyPlayer = Notice.chat("Błąd: Ta komenda jest dostępna tylko dla graczy!"); - public Notice numberBiggerThanOrEqualZero = Notice.chat("Błąd: Liczba musi być równa lub większa od 0!"); - public Notice noItem = Notice.chat("Błąd: Musisz trzymać przedmiot w dłoni!"); - public Notice noMaterial = Notice.chat("Błąd: Taki materiał nie istnieje!"); - public Notice noArgument = Notice.chat("Błąd: Taki argument nie istnieje!"); - public Notice noDamaged = Notice.chat("Błąd: Ten przedmiot nie może być naprawiony!"); - public Notice noDamagedItems = Notice.chat("Błąd: Musisz posiadać uszkodzone przedmioty!"); - public Notice noEnchantment = Notice.chat("Błąd: Takie zaklęcie nie istnieje!"); - public Notice noValidEnchantmentLevel = Notice.chat("Błąd: Ten poziom zaklęcia nie jest wspierany!"); - public Notice invalidTimeFormat = Notice.chat("Błąd: Nieprawidłowy format czasu!"); - public Notice worldDoesntExist = Notice.chat("Błąd: Taki świat nie istnieje!"); - public Notice youMustGiveWorldName = Notice.chat("Błąd: Musisz podać nazwę świata!"); - public Notice incorrectLocation = Notice.chat("Błąd: Nieprawidłowa lokalizacja!"); - public Notice incorrectNumberOfChunks = Notice.chat("Błąd: Niepoprawna liczba chunków!"); + public Notice offlinePlayer = Notice.chat("Ten gracz jest obecnie offline!"); + public Notice onlyPlayer = Notice.chat("Ta komenda jest dostępna tylko dla graczy!"); + public Notice numberBiggerThanOrEqualZero = Notice.chat("Liczba musi być równa lub większa od 0!"); + public Notice noItem = Notice.chat("Musisz trzymać przedmiot w dłoni!"); + public Notice noMaterial = Notice.chat("Taki materiał nie istnieje!"); + public Notice noArgument = Notice.chat("Taki argument nie istnieje!"); + public Notice noDamaged = Notice.chat("Ten przedmiot nie może być naprawiony!"); + public Notice noDamagedItems = Notice.chat("Musisz posiadać uszkodzone przedmioty!"); + public Notice noEnchantment = Notice.chat("Takie zaklęcie nie istnieje!"); + public Notice noValidEnchantmentLevel = Notice.chat("Ten poziom zaklęcia nie jest wspierany!"); + public Notice invalidTimeFormat = Notice.chat("Nieprawidłowy format czasu!"); + public Notice worldDoesntExist = Notice.chat("Świat {WORLD} nie istnieje!"); + public Notice incorrectNumberOfChunks = Notice.chat("Niepoprawna liczba chunków!"); + public Notice incorrectLocation = Notice.chat("Niepoprawna lokalizacja! ({LOCATION})"); } @Description({ @@ -210,8 +209,8 @@ public static class PLTeleportSection implements TeleportSection { .build(); public Notice teleporting = Notice.chat("Teleportowanie..."); - public Notice teleportTaskCanceled = Notice.chat("Błąd: Ruszyłeś się, teleportacja została przerwana!"); - public Notice teleportTaskAlreadyExist = Notice.chat("Błąd: Teleportujesz się już!"); + public Notice teleportTaskCanceled = Notice.chat("Ruszyłeś się, teleportacja została przerwana!"); + public Notice teleportTaskAlreadyExist = Notice.chat("Teleportujesz się już!"); // Coordinates XYZ @Description({" ", "# {X} - Koordynat X, {Y} - Koordynat Y, {Z} - Koordynat Z"}) @@ -244,7 +243,7 @@ public static class PLTeleportSection implements TeleportSection { public static class PLRandomTeleportSection implements RandomTeleportSection { @Description(" ") public Notice randomTeleportStarted = Notice.chat("Rozpoczynanie procesu losowania lokalizacji..."); - public Notice randomTeleportFailed = Notice.chat("Błąd: Nie udało się znaleźć bezpiecznej lokalizacji, spróbuj ponownie!"); + public Notice randomTeleportFailed = Notice.chat("Nie udało się znaleźć bezpiecznej lokalizacji, spróbuj ponownie!"); public Notice teleportedToRandomLocation = Notice.chat("Zostałeś przeteleportowany na losową lokalizację!"); @@ -252,7 +251,7 @@ public static class PLRandomTeleportSection implements RandomTeleportSection { public Notice teleportedSpecifiedPlayerToRandomLocation = Notice.chat("Przeteleportowałeś gracza {PLAYER} na losową lokalizację! Jego aktualna lokalizacja to: świat: {WORLD} x: {X}, y: {Y}, z: {Z}."); @Description({" ", "# {TIME} - Czas do następnego użycia komendy (cooldown)"}) - public Notice randomTeleportDelay = Notice.chat("Błąd: Możesz skorzystać z losowej teleportacji dopiero za {TIME}!"); + public Notice randomTeleportDelay = Notice.chat("Możesz skorzystać z losowej teleportacji dopiero za {TIME}!"); } @Description({ @@ -270,8 +269,8 @@ public static class PLChatSection implements ChatSection { public Notice cleared = Notice.chat("Czat został wyczyszczony przez {PLAYER}!"); @Description(" ") - public Notice alreadyDisabled = Notice.chat("Błąd: Czat jest już wyłączony!"); - public Notice alreadyEnabled = Notice.chat("Błąd: Czat jest już włączony!"); + public Notice alreadyDisabled = Notice.chat("Czat jest już wyłączony!"); + public Notice alreadyEnabled = Notice.chat("Czat jest już włączony!"); @Description({" ", "# {SLOWMODE} - Czas powolnego wysyłania wiadomości"}) public Notice slowModeSet = Notice.chat("Tryb powolnego wysyłania został ustawiony na {SLOWMODE}"); @@ -297,7 +296,7 @@ public static class PLChatSection implements ChatSection { public Notice tellrawAllInfo = Notice.chat("Wysłano wiadomość typu {TYPE} do wszystkich o treści: {MESSAGE}"); public Notice tellrawSaved = Notice.chat("Zapisano wiadomość w kolejce!"); - public Notice tellrawNoSaved = Notice.chat("Błąd: Nie ma zapisanych wiadomości!"); + public Notice tellrawNoSaved = Notice.chat("Nie ma zapisanych wiadomości!"); public Notice tellrawMultipleSent = Notice.chat("Wysłano wszystkie zapisane wiadomości!"); public Notice tellrawCleared = Notice.chat("Wyczyszczono zapisane wiadomości!"); } @@ -312,8 +311,8 @@ public static class PLChatSection implements ChatSection { @Getter @Contextual public static class PLTpaSection implements TpaSection { - public Notice tpaSelfMessage = Notice.chat("Błąd: Nie możesz teleportować się samodzielnie!"); - public Notice tpaAlreadySentMessage = Notice.chat("Błąd: Już wysłałeś prośbę o teleportację!"); + public Notice tpaSelfMessage = Notice.chat("Nie możesz teleportować się samodzielnie!"); + public Notice tpaAlreadySentMessage = Notice.chat("Już wysłałeś prośbę o teleportację!"); @Description({" ", "# {PLAYER} - Gracz który wysłał prośbę o teleportację"}) public Notice tpaSentMessage = Notice.chat("Wysłałeś prośbę o teleportację do gracza: {PLAYER}!"); @@ -331,7 +330,7 @@ public static class PLTpaSection implements TpaSection { .build(); @Description(" ") - public Notice tpaDenyNoRequestMessage = Notice.chat("Błąd: Nie otrzymałeś prośby o teleportację od tego gracza!"); + public Notice tpaDenyNoRequestMessage = Notice.chat("Nie otrzymałeś prośby o teleportację od tego gracza!"); @Description({" ", "# {PLAYER} - Gracz który wysłał prośbę o teleportacje do innego gracza"}) public Notice tpaDenyDoneMessage = Notice.chat("Odrzuciłeś prośbę o teleportację od gracza: {PLAYER}!"); @@ -346,7 +345,7 @@ public static class PLTpaSection implements TpaSection { public Notice tpaAcceptMessage = Notice.chat("Zaakceptowałeś prośbę o teleportację od gracza: {PLAYER}!"); @Description(" ") - public Notice tpaAcceptNoRequestMessage = Notice.chat("Błąd: Ten gracz nie wysłał do ciebie prośby o teleportację!"); + public Notice tpaAcceptNoRequestMessage = Notice.chat("Ten gracz nie wysłał do ciebie prośby o teleportację!"); @Description({" ", "# {PLAYER} - Gracz który wysłał prośbę o teleportacje do innego gracza"}) public Notice tpaAcceptReceivedMessage = Notice.chat("Gracz: {PLAYER} zaakceptował twoją prośbę o teleportację!"); @@ -368,13 +367,13 @@ public static class PLTpaSection implements TpaSection { @Contextual public static class PLWarpSection implements WarpSection { @Description("# {WARP} - Nazwa warpu") - public Notice warpAlreadyExists = Notice.chat("Błąd: Warp o nazwie {WARP} już istnieje!"); + public Notice warpAlreadyExists = Notice.chat("Warp o nazwie {WARP} już istnieje!"); public Notice create = Notice.chat("Stworzono warp {WARP}!"); public Notice remove = Notice.chat("Usunięto warp {WARP}!"); public Notice notExist = Notice.chat("Nie odnaleziono takiego warpu!"); public Notice itemAdded = Notice.chat("Dodano warp do GUI!"); - public Notice noWarps = Notice.chat("Błąd: Nie ma dostępnych warpów!"); - public Notice itemLimit = Notice.chat("Błąd: Osiągnąłeś limit warpów w GUI! Limit to: {LIMIT}!"); + public Notice noWarps = Notice.chat("Nie ma dostępnych warpów!"); + public Notice itemLimit = Notice.chat("Osiągnąłeś limit warpów w GUI! Limit to: {LIMIT}!"); @Description({" ", "# {WARPS} - Lista dostępnych warpów"}) public Notice available = Notice.chat("Dostepne warpy: {WARPS}!"); @@ -443,7 +442,7 @@ public static class PLHomeSection implements HomeSection { @Description({" ", "# {LIMIT} - Limit domów"}) public Notice limit = Notice.chat("Osiągnąłeś limit domów! Twój limit to {LIMIT}."); - public Notice noHomesOwned = Notice.chat("Błąd: Nie posiadasz żadnego domu!"); + public Notice noHomesOwned = Notice.chat("Nie posiadasz żadnego domu!"); @Description({" ", "# Wiadomości placeholderów"}) public String noHomesOwnedPlaceholder = "Nie posiadasz żadnego domu."; @@ -640,8 +639,8 @@ public static class PLPlayerSection implements PlayerSection { public Notice killedMessage = Notice.chat("Zabito gracza {PLAYER}"); @Description(" ") - public Notice speedBetweenZeroAndTen = Notice.chat("Błąd: Ustaw prędkość w zakresie 0-10!"); - public Notice speedTypeNotCorrect = Notice.chat("Błąd: Nieprawidłowy typ prędkości"); + public Notice speedBetweenZeroAndTen = Notice.chat("Ustaw prędkość w zakresie 0-10!"); + public Notice speedTypeNotCorrect = Notice.chat("Nieprawidłowy typ prędkości"); @Description("# {SPEED} - Ustawiona prędkość chodzenia lub latania") public Notice speedWalkSet = Notice.chat("Ustawiono prędkość chodzenia na {SPEED}"); @@ -672,7 +671,7 @@ public static class PLPlayerSection implements PlayerSection { public Notice pingOtherMessage = Notice.chat("Gracz {PLAYER} ma ping: {PING}ms"); @Description(" ") - public Notice gameModeNotCorrect = Notice.chat("Błąd: Niepoprawny typ!"); + public Notice gameModeNotCorrect = Notice.chat("Niepoprawny typ!"); @Description("# {GAMEMODE} - Ustawiony tryb gry") public Notice gameModeMessage = Notice.chat("Ustawiono tryb gry na: {GAMEMODE}"); @Description("# {PLAYER} - Gracz któremu został ustawiony tryb gry, {GAMEMODE} - Ustawiony tryb gry dla gracza") @@ -716,7 +715,7 @@ public static class PLPlayerSection implements PlayerSection { public Notice butcherCommand = Notice.chat("Zabiłeś {KILLED} mobów!"); @Description({" ", "# {SAFE_CHUNKS} - Liczba bezpiecznych chunków"}) - public Notice safeChunksMessage = Notice.chat("Błąd: Przekroczyłeś liczbę bezpiecznych chunków {SAFE_CHUNKS}"); + public Notice safeChunksMessage = Notice.chat("Przekroczyłeś liczbę bezpiecznych chunków {SAFE_CHUNKS}"); } @Description({" ", "# Ta sekcja odpowiada za zmianę punktu spawn oraz teleportację graczy na spawn"}) @@ -726,7 +725,7 @@ public static class PLPlayerSection implements PlayerSection { @Contextual public static class PLSpawnSection implements SpawnSection { public Notice spawnSet = Notice.chat("Ustawiono spawn!"); - public Notice spawnNoSet = Notice.chat("Błąd: Spawn nie został ustawiony!"); + public Notice spawnNoSet = Notice.chat("Spawn nie został ustawiony!"); @Description({" ", "# {PLAYER} - Gracz który teleportował cię na spawn"}) public Notice spawnTeleportedBy = Notice.chat("Zostałeś przeteleportowany na spawn przez gracza {PLAYER}!"); @Description("# {PLAYER} - Gracz który został przeteleportowany na spawn") @@ -765,21 +764,15 @@ public static class PLItemSection implements ItemSection { @Description({" ", "# {PLAYER} - Osoba której został przydzielony przedmiot, {ITEM} - Nazwa otrzymanego przedmiotu"}) public Notice giveGiven = Notice.chat("Gracz {PLAYER} otrzymał: {ITEM}"); - @Description({" ", "# {PLAYER} - Gracz który otrzymał przedmiot, {ITEM} - Nazwa przedmiotu, {ENCHANTMENT} - " - + "Nazwa zaklęcia, {ENCHANTMENT_LEVEL} - Poziom zaklęcia"}) - public Notice giveGivenEnchantment = Notice.chat("Gracz {PLAYER} otrzymał: {ITEM} z zaklęciem: {ENCHANTMENT}"); - - @Description({" ", "# {ITEM} - Nazwa przedmiotu, {ENCHANTMENT} - Nazwa zaklęcia, {ENCHANTMENT_LEVEL} - Poziom " - + "zaklęcia"}) - public Notice giveReceivedEnchantment = Notice.chat("Otrzymałeś: {ITEM} z zaklęciem: {ENCHANTMENT}"); + public Notice giveNoSpace = Notice.chat("Brak miejsca w ekwipunku!"); @Description(" ") - public Notice giveNotItem = Notice.chat("Błąd: Podany przedmiot nie istnieje!"); + public Notice giveNotItem = Notice.chat("Podany przedmiot nie istnieje!"); public Notice repairMessage = Notice.chat("Naprawiono trzymany przedmiot!"); public Notice repairAllMessage = Notice.chat("Naprawiono wszystkie przedmioty!"); @Description({" ", "# {TIME} - Czas przed wysłaniem następnej wiadomości (cooldown)"}) - public Notice repairDelayMessage = Notice.chat("Błąd: Możesz użyć tej komendy za {TIME}!"); + public Notice repairDelayMessage = Notice.chat("Możesz użyć tej komendy za {TIME}!"); @Description({" ", "# {SKULL} - Nazwa gracza do którego należy głowa"}) public Notice skullMessage = Notice.chat("Otrzymałeś głowę gracza: {SKULL}"); @@ -908,12 +901,12 @@ public static class PLJailSection implements JailSection { @Description({" ", "# Sekcja odpowiedzialna za ustawianie lokalizacji jail'a"}) public Notice jailLocationSet = Notice.chat("Ustawiono lokalizację jail'a!"); public Notice jailLocationRemove = Notice.chat("Usunięto lokalizację jail'a!"); - public Notice jailLocationNotSet = Notice.chat("Błąd: Lokalizacja jail'a nie została ustawiona!"); + public Notice jailLocationNotSet = Notice.chat("Lokalizacja jail'a nie została ustawiona!"); public Notice jailLocationOverride = Notice.chat("Nadpisałeś lokalizację jail'a!"); @Description({" ", "# Sekcja odpowiedzialna za wiadomości dotyczące uwięzienia gracza"}) public Notice jailDetainPrivate = Notice.chat("Zostałeś uwięziony!"); - public Notice jailCannotUseCommand = Notice.chat("Błąd: Nie możesz użyć tej komendy!"); + public Notice jailCannotUseCommand = Notice.chat("Nie możesz użyć tej komendy!"); @Description({" ", "# {PLAYER} - Gracz który został uwięziony"}) public Notice jailDetainBroadcast = Notice.chat("Gracz {PLAYER} został uwięziony!"); @Description({" ", "# {PLAYER} - Gracz który został uwięziony"}) @@ -928,13 +921,13 @@ public static class PLJailSection implements JailSection { public Notice jailReleaseBroadcast = Notice.chat("Gracz {PLAYER} został uwolniony!"); public Notice jailReleasePrivate = Notice.actionbar("Zostałeś uwolniony!"); public Notice jailReleaseAll = Notice.chat("Wszyscy gracze zostali uwolnieni!"); - public Notice jailReleaseNoPlayers = Notice.chat("Błąd: Nikt nie jest uwięziony!"); + public Notice jailReleaseNoPlayers = Notice.chat("Nikt nie jest uwięziony!"); @Description({" ", "# {PLAYER} - Nazwa gracza"}) - public Notice jailIsNotPrisoner = Notice.chat("Błąd: Gracz {PLAYER} nie jest uwięziony!"); + public Notice jailIsNotPrisoner = Notice.chat("Gracz {PLAYER} nie jest uwięziony!"); @Description({" ", "# Sekcja odpowiedzialna za wiadomości dotyczące listy graczy w jail'u"}) public Notice jailListHeader = Notice.chat("Lista graczy w jail'u:"); - public Notice jailListEmpty = Notice.chat("Błąd: Nikt nie jest uwięziony!"); + public Notice jailListEmpty = Notice.chat("Nikt nie jest uwięziony!"); @Description({" ", "# {PLAYER} - Gracz który jest uwięziony, {DETAINED_BY} - Gracz który uwięził gracza, {REMAINING_TIME} - Czas pozostały do uwolnienia"}) public Notice jailListPlayerEntry = Notice.chat("Gracz {PLAYER} został uwięziony przez {DETAINED_BY} na czas {REMAINING_TIME} !"); }