- funkční region command

- příprava meníček
region-rework
jakub 5 days ago
parent 71f8b0eaf4
commit 8f734eb1d1
  1. 4
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  2. 81
      src/main/java/xyz/soukup/ecoCraftCore/genericMenus/GroupSelector.java
  3. 13
      src/main/java/xyz/soukup/ecoCraftCore/genericMenus/PlayerSelector.java
  4. 32
      src/main/java/xyz/soukup/ecoCraftCore/genericMenus/TextInput.java
  5. 25
      src/main/java/xyz/soukup/ecoCraftCore/gui/GuiItemBuilder.java
  6. 8
      src/main/java/xyz/soukup/ecoCraftCore/islands/IslandAdminCommand.java
  7. 10
      src/main/java/xyz/soukup/ecoCraftCore/islands/IslandSelectorCommand.java
  8. 53
      src/main/java/xyz/soukup/ecoCraftCore/messages/LangManager.java
  9. 18
      src/main/java/xyz/soukup/ecoCraftCore/mines/MineCommand.java
  10. 24
      src/main/java/xyz/soukup/ecoCraftCore/money/MoneyCommand.java
  11. 10
      src/main/java/xyz/soukup/ecoCraftCore/objects/Island.java
  12. 6
      src/main/java/xyz/soukup/ecoCraftCore/objects/PermissionGroup.java
  13. 18
      src/main/java/xyz/soukup/ecoCraftCore/objects/Region.java
  14. 4
      src/main/java/xyz/soukup/ecoCraftCore/positionMarker/MarkerCommand.java
  15. 10
      src/main/java/xyz/soukup/ecoCraftCore/positionMarker/MarkerEvent.java
  16. 14
      src/main/java/xyz/soukup/ecoCraftCore/regions/RegionAdminCommand.java
  17. 110
      src/main/java/xyz/soukup/ecoCraftCore/regions/RegionCommand.java
  18. 161
      src/main/java/xyz/soukup/ecoCraftCore/regions/RegionMenu.java
  19. 12
      src/main/java/xyz/soukup/ecoCraftCore/shop/ShopCommand.java
  20. 56
      src/main/java/xyz/soukup/ecoCraftCore/shop/ShopLogic.java
  21. 26
      src/main/java/xyz/soukup/ecoCraftCore/sign/SignEditCommand.java
  22. 8
      src/main/java/xyz/soukup/ecoCraftCore/virtualChest/VirtualChestLogic.java
  23. 22
      src/main/resources/messages.yml

@ -60,7 +60,7 @@ import xyz.soukup.ecoCraftCore.regions.RegionEvents;
import xyz.soukup.ecoCraftCore.shop.ShopCommand; import xyz.soukup.ecoCraftCore.shop.ShopCommand;
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
import xyz.soukup.ecoCraftCore.positionMarker.MarkerEvent; import xyz.soukup.ecoCraftCore.positionMarker.MarkerEvent;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.shop.ShopLogic; import xyz.soukup.ecoCraftCore.shop.ShopLogic;
import xyz.soukup.ecoCraftCore.sign.SignEditCommand; import xyz.soukup.ecoCraftCore.sign.SignEditCommand;
import xyz.soukup.ecoCraftCore.sit.LetMeSit; import xyz.soukup.ecoCraftCore.sit.LetMeSit;
@ -100,7 +100,7 @@ public final class EcoCraftCore extends JavaPlugin {
try { try {
plugin.saveConfig(); plugin.saveConfig();
saveIslandTemplates(); saveIslandTemplates();
Messages.init(); LangManager.init();
prepareDatabase(); prepareDatabase();
registerCommands(); registerCommands();
registerEvents(); registerEvents();

@ -0,0 +1,81 @@
package xyz.soukup.ecoCraftCore.genericMenus;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
import com.github.stefvanschie.inventoryframework.pane.OutlinePane;
import com.github.stefvanschie.inventoryframework.pane.PaginatedPane;
import com.github.stefvanschie.inventoryframework.pane.component.PagingButtons;
import com.github.stefvanschie.inventoryframework.pane.util.Slot;
import com.j256.ormlite.stmt.QueryBuilder;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.objects.PermissionGroup;
import xyz.soukup.ecoCraftCore.objects.Region;
import xyz.soukup.ecoCraftCore.objects.RegionMember;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class GroupSelector {
public static ChestGui selectGroup(Player viewer, Region region, Consumer<Player> selectAction){
ChestGui chestGui = new ChestGui(3, LangManager.getLegacyString("gui.player-selector.title"));
PaginatedPane pane = new PaginatedPane(0,0, 9, 2);
List<GuiItem> guiItems = new ArrayList<>();
chestGui.setOnGlobalClick(event -> event.setCancelled(true));
RegionMember regionMember = region.getRegionMember(viewer);
if (regionMember == null){
return null;
}
QueryBuilder<PermissionGroup, Integer> queryBuilder = PermissionGroup.getDao().queryBuilder();
try {
queryBuilder
.where()
.eq("region_id", region.getId())
.and()
.lt("weight", regionMember.getPermissionGroup().getWeight());
List<PermissionGroup> groups = queryBuilder.query();
for (PermissionGroup group : groups){
GuiItem guiItem = new GuiItemBuilder(group.getIcon(),
group.getName(),
group.getDescription(),
(event -> selectAction.accept(viewer))).build();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
pane.populateWithGuiItems(guiItems);
PagingButtons pagingButtons = new PagingButtons(Slot.fromXY(0, 2),9, pane);
chestGui.addPane(pane);
return chestGui;
}
public static ChestGui selectGroup(Player viewer, Region region, Consumer<Player> selectAction, Consumer<Player> backAction){
ChestGui chestGui = selectGroup(viewer, region, selectAction);
OutlinePane pane = new OutlinePane(4,2, 1, 1);
GuiItem backButton = new GuiItemBuilder(Material.REDSTONE,
"gui.player-selector.back-button.name",
"gui.player-selector.back-button.lore",
(event -> backAction.accept(viewer)))
.build();
pane.addItem(backButton);
chestGui.addPane(pane);
return chestGui;
}
}

@ -12,17 +12,16 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.inventory.meta.SkullMeta;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder; import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.messages.Replace; import xyz.soukup.ecoCraftCore.messages.Replace;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
public class PlayerSelector { public class PlayerSelector {
public static ChestGui selectPlayer(Player viewer, List<Player> players, BiConsumer<Player, Player> selectAction){ public static ChestGui selectPlayer(Player viewer, List<Player> players, Consumer<Player> selectAction){
ChestGui chestGui = new ChestGui(3, Messages.getAsString("gui.player-selector.title")); ChestGui chestGui = new ChestGui(3, LangManager.getLegacyString("gui.player-selector.title"));
PaginatedPane pane = new PaginatedPane(0,0, 9, 2); PaginatedPane pane = new PaginatedPane(0,0, 9, 2);
List<GuiItem> guiItems = new ArrayList<>(); List<GuiItem> guiItems = new ArrayList<>();
@ -31,14 +30,14 @@ public class PlayerSelector {
for (Player player : players){ for (Player player : players){
ItemStack itemStack = new ItemStack(Material.PLAYER_HEAD); ItemStack itemStack = new ItemStack(Material.PLAYER_HEAD);
SkullMeta skullMeta = (SkullMeta) itemStack.getItemMeta(); SkullMeta skullMeta = (SkullMeta) itemStack.getItemMeta();
Component name = Messages.get("gui.player-selector.name-format", new Replace("name", player.displayName())); Component name = LangManager.get("gui.player-selector.name-format", new Replace("name", player.displayName()));
skullMeta.setOwningPlayer(player); skullMeta.setOwningPlayer(player);
skullMeta.displayName(name); skullMeta.displayName(name);
itemStack.setItemMeta(skullMeta); itemStack.setItemMeta(skullMeta);
GuiItem guiItem = new GuiItem(itemStack); GuiItem guiItem = new GuiItem(itemStack);
guiItem.setAction(event -> selectAction.accept(viewer, player)); guiItem.setAction(event -> selectAction.accept(viewer));
guiItems.add(guiItem); guiItems.add(guiItem);
} }
@ -51,7 +50,7 @@ public class PlayerSelector {
return chestGui; return chestGui;
} }
public static ChestGui selectPlayer(Player viewer, List<Player> players, BiConsumer<Player, Player> selectAction, Consumer<Player> backAction){ public static ChestGui selectPlayer(Player viewer, List<Player> players, Consumer<Player> selectAction, Consumer<Player> backAction){
ChestGui chestGui = selectPlayer(viewer, players, selectAction); ChestGui chestGui = selectPlayer(viewer, players, selectAction);
OutlinePane pane = new OutlinePane(4,2, 1, 1); OutlinePane pane = new OutlinePane(4,2, 1, 1);
GuiItem backButton = new GuiItemBuilder(Material.REDSTONE, GuiItem backButton = new GuiItemBuilder(Material.REDSTONE,

@ -1,4 +1,36 @@
package xyz.soukup.ecoCraftCore.genericMenus; package xyz.soukup.ecoCraftCore.genericMenus;
import io.papermc.paper.dialog.Dialog;
import io.papermc.paper.registry.data.dialog.ActionButton;
import io.papermc.paper.registry.data.dialog.DialogBase;
import io.papermc.paper.registry.data.dialog.action.DialogAction;
import io.papermc.paper.registry.data.dialog.input.DialogInput;
import io.papermc.paper.registry.data.dialog.type.DialogType;
import net.kyori.adventure.text.event.ClickCallback;
import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.util.List;
import java.util.function.Consumer;
public class TextInput { public class TextInput {
public static Dialog textInput(Player viewer, String titleKey, String fieldDesctriptionKey, String initial , Consumer<String> action){
DialogAction dialogAction = DialogAction.customClick(((response, audience) -> action.accept(response.getText("input"))), ClickCallback.Options.builder().build()));
return Dialog.create(builder -> builder.empty()
.base(DialogBase.builder(LangManager.get(titleKey))
.inputs(List.of(DialogInput.text("input", LangManager.get(fieldDesctriptionKey))
.initial(initial)
.maxLength(256)
.build()))
.build())
.type(DialogType.confirmation(
ActionButton.builder(LangManager.get("gui.text-input.confirm"))
.action(dialogAction)
.build(),
ActionButton.builder(LangManager.get("gui.text-input.cancel"))
.build()
)));
}
} }

@ -7,7 +7,7 @@ import org.bukkit.Material;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -29,12 +29,29 @@ public class GuiItemBuilder {
public GuiItemBuilder(Material material, String nameKey, String loreKey, Consumer<InventoryClickEvent> onClick){ public GuiItemBuilder(Material material, String nameKey, String loreKey, Consumer<InventoryClickEvent> onClick){
this.itemStack = new ItemStack(material); this.itemStack = new ItemStack(material);
this.itemMeta = this.itemStack.getItemMeta(); this.itemMeta = this.itemStack.getItemMeta();
this.itemMeta.displayName(Messages.get(nameKey)); this.itemMeta.displayName(LangManager.get(nameKey));
this.itemMeta.lore(Arrays.stream(Messages.getAsString(loreKey).split("\\R")).map(MiniMessage.miniMessage()::deserialize).collect(Collectors.toList())); this.itemMeta.lore(LangManager.getComponentList(loreKey));
this.onClick = onClick; this.onClick = onClick;
} }
public GuiItemBuilder(Material material, String nameKey, String loreKey, Consumer<InventoryClickEvent> onClick, boolean toggle) {
this.itemStack = new ItemStack(material);
this.itemMeta = this.itemStack.getItemMeta();
this.itemMeta.displayName(LangManager.get(nameKey));
List<Component> lore = LangManager.getComponentList(loreKey);
if (toggle){
lore.add(LangManager.get("gui.toggle.on"));
}else {
lore.add(LangManager.get("gui.toggle.off"));
}
this.itemMeta.lore(lore);
this.onClick = onClick;
}
public GuiItemBuilder setName(Component component){ public GuiItemBuilder setName(Component component){
this.itemMeta.displayName(component); this.itemMeta.displayName(component);
return this; return this;
@ -47,7 +64,7 @@ public class GuiItemBuilder {
return this; return this;
} }
public GuiItemBuilder setRawLore(String rawLore){ public GuiItemBuilder setLoreFromString(String rawLore){
List<Component> lore = Arrays.stream(rawLore.split("\\R")) List<Component> lore = Arrays.stream(rawLore.split("\\R"))
.map(line -> MiniMessage.miniMessage().deserialize(line)) .map(line -> MiniMessage.miniMessage().deserialize(line))
.collect(Collectors.toList()); .collect(Collectors.toList());

@ -17,7 +17,7 @@ import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import xyz.soukup.ecoCraftCore.objects.Island; import xyz.soukup.ecoCraftCore.objects.Island;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
@ -198,7 +198,7 @@ public class IslandAdminCommand {
Location spawn = player.getLocation(); Location spawn = player.getLocation();
String uuid = player.getWorld().getName(); String uuid = player.getWorld().getName();
islandManager.changeSpawn(spawn, uuid); islandManager.changeSpawn(spawn, uuid);
Messages.send(player, "island.setSpawn.success"); LangManager.send(player, "island.setSpawn.success");
return 0; return 0;
} }
@ -208,7 +208,7 @@ public class IslandAdminCommand {
IslandManager islandManager = new IslandManager(); IslandManager islandManager = new IslandManager();
String uuid = player.getWorld().getName(); String uuid = player.getWorld().getName();
islandManager.changeEnviroment(context.getArgument("environment", String.class), uuid); islandManager.changeEnviroment(context.getArgument("environment", String.class), uuid);
Messages.send(player, "island.setEnvironment.success"); LangManager.send(player, "island.setEnvironment.success");
return 0; return 0;
} }
@ -218,7 +218,7 @@ public class IslandAdminCommand {
IslandManager islandManager = new IslandManager(); IslandManager islandManager = new IslandManager();
String uuid = player.getWorld().getName(); String uuid = player.getWorld().getName();
islandManager.changeBiome(context.getArgument("biome", String.class), uuid); islandManager.changeBiome(context.getArgument("biome", String.class), uuid);
Messages.send(player, "island.set-biome.success"); LangManager.send(player, "island.set-biome.success");
return 0; return 0;
} }

@ -21,7 +21,7 @@ import xyz.soukup.ecoCraftCore.objects.Island;
import xyz.soukup.ecoCraftCore.objects.Region; import xyz.soukup.ecoCraftCore.objects.Region;
import xyz.soukup.ecoCraftCore.objects.RegionMember; import xyz.soukup.ecoCraftCore.objects.RegionMember;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder; import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
@ -35,7 +35,7 @@ public class IslandSelectorCommand {
} }
private static int displayIslandListSelectorGui(CommandContext<CommandSourceStack> context) { private static int displayIslandListSelectorGui(CommandContext<CommandSourceStack> context) {
String title = LegacyComponentSerializer.legacySection().serialize(Messages.get("menu.island-selector.title")); String title = LegacyComponentSerializer.legacySection().serialize(LangManager.get("menu.island-selector.title"));
HopperGui hopperGui = new HopperGui(title); HopperGui hopperGui = new HopperGui(title);
hopperGui.setOnGlobalClick(event -> event.setCancelled(true)); hopperGui.setOnGlobalClick(event -> event.setCancelled(true));
@ -110,7 +110,7 @@ public class IslandSelectorCommand {
public static GuiItem selectorItem(String key, Material material, List<Island> islands){ public static GuiItem selectorItem(String key, Material material, List<Island> islands){
GuiItemBuilder guiItemBuilder = new GuiItemBuilder(material); GuiItemBuilder guiItemBuilder = new GuiItemBuilder(material);
guiItemBuilder.setName(Messages.get(key)); guiItemBuilder.setName(LangManager.get(key));
GuiItem guiItem = guiItemBuilder.build(); GuiItem guiItem = guiItemBuilder.build();
guiItem.setAction(event -> openIslandListGui((Player) event.getWhoClicked(), islands)); guiItem.setAction(event -> openIslandListGui((Player) event.getWhoClicked(), islands));
return guiItem; return guiItem;
@ -118,7 +118,7 @@ public class IslandSelectorCommand {
private static void openIslandListGui(Player player, List<Island> islands){ private static void openIslandListGui(Player player, List<Island> islands){
String title = LegacyComponentSerializer.legacySection().serialize(Messages.get("menu.island-selector.title")); String title = LegacyComponentSerializer.legacySection().serialize(LangManager.get("menu.island-selector.title"));
ChestGui chestGui = new ChestGui(4, title); ChestGui chestGui = new ChestGui(4, title);
chestGui.setOnGlobalClick(event -> event.setCancelled(true)); chestGui.setOnGlobalClick(event -> event.setCancelled(true));
@ -167,7 +167,7 @@ public class IslandSelectorCommand {
GuiItemBuilder guiItemBuilder = new GuiItemBuilder(material); GuiItemBuilder guiItemBuilder = new GuiItemBuilder(material);
guiItemBuilder.setName(Component.text(island.getDisplayName(), color)); guiItemBuilder.setName(Component.text(island.getDisplayName(), color));
guiItemBuilder.setRawLore(island.getDescritpion()); guiItemBuilder.setLoreFromString(island.getDescritpion());
GuiItem guiItem = guiItemBuilder.build(); GuiItem guiItem = guiItemBuilder.build();
guiItem.setAction(event -> { guiItem.setAction(event -> {

@ -10,14 +10,15 @@ import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects;
import static xyz.soukup.ecoCraftCore.EcoCraftCore.plugin; import static xyz.soukup.ecoCraftCore.EcoCraftCore.plugin;
public class Messages { public class LangManager {
private static YamlConfiguration messages; private static YamlConfiguration messages;
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
public static void init() throws IOException { public static void init() throws IOException {
File messagesFile = new File(plugin.getDataFolder(), "messages.yml"); File messagesFile = new File(plugin.getDataFolder(), "messages.yml");
@ -36,11 +37,11 @@ public class Messages {
public static Component get(String key) { public static Component get(String key) {
String string = getString(key); String string = getString(key);
return MiniMessage.miniMessage().deserialize(string); return miniMessage.deserialize(string);
} }
public static String getAsString(String key){ public static String getLegacyString(String key){
return LegacyComponentSerializer.legacySection().serialize(Messages.get(key)); return LegacyComponentSerializer.legacySection().serialize(LangManager.get(key));
} }
public static Component get(String key, HashMap<String, String> placeholders){ public static Component get(String key, HashMap<String, String> placeholders){
@ -49,8 +50,7 @@ public class Messages {
TagResolver.Builder resolverBuilder = TagResolver.builder(); TagResolver.Builder resolverBuilder = TagResolver.builder();
placeholders.forEach((k, value) -> resolverBuilder.resolver(Placeholder.unparsed(k, value))); placeholders.forEach((k, value) -> resolverBuilder.resolver(Placeholder.unparsed(k, value)));
return miniMessage.deserialize(string, resolverBuilder.build());
return MiniMessage.miniMessage().deserialize(string, resolverBuilder.build());
} }
public static Component get(String key, Replace... replaces){ public static Component get(String key, Replace... replaces){
@ -77,28 +77,35 @@ public class Messages {
sender.sendMessage(get(key, placeholders)); sender.sendMessage(get(key, placeholders));
} }
private static String getString(String key){ public static List<Component> getComponentList(String key){
StringBuilder string = new StringBuilder(); List<Component> componentList = new ArrayList<>();
if (messages.isString(key)){ for (String string : messages.getStringList(key)){
string = new StringBuilder(Objects.requireNonNull(messages.getString(key))); Component component = miniMessage.deserialize(string);
} else if (messages.isList(key)) { componentList.add(component);
}
boolean isFirst = true; return componentList;
}
List<String> list = messages.getStringList(key); public static List<String> getStringList(String key) {
for (String s : list){ if (!(messages.contains(key) && messages.isList(key))){
if (isFirst){ return List.of(key);
isFirst = false;
string.append(s);
}else {
string.append("\n").append(s);
} }
return messages.getStringList(key);
} }
}else {
string = new StringBuilder(key); public static String getString(String key) {
if (messages.isList(key)) {
return String.join("\n", messages.getStringList(key));
} }
return string.toString(); if (messages.isString(key)) {
return messages.getString(key);
} }
return key;
}
} }

@ -8,7 +8,7 @@ import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
@SuppressWarnings("UnstableApiUsage") @SuppressWarnings("UnstableApiUsage")
public class MineCommand { public class MineCommand {
@ -31,23 +31,23 @@ public class MineCommand {
World world = MineWorldManager.getWorld(); World world = MineWorldManager.getWorld();
if (world == null) { if (world == null) {
Messages.send(sender, "mine.error.no-world"); LangManager.send(sender, "mine.error.no-world");
return 0; return 0;
} }
Messages.send(sender, "mine.regenerating"); LangManager.send(sender, "mine.regenerating");
for (Player player : world.getPlayers()) { for (Player player : world.getPlayers()) {
player.teleport(player.getServer().getWorlds().getFirst().getSpawnLocation()); player.teleport(player.getServer().getWorlds().getFirst().getSpawnLocation());
Messages.send(player, "mine.teleported-out"); LangManager.send(player, "mine.teleported-out");
} }
MineWorldManager.recreateWorld(newWorld -> { MineWorldManager.recreateWorld(newWorld -> {
boolean success = MineManager.regenerate(newWorld); boolean success = MineManager.regenerate(newWorld);
if (success) { if (success) {
Messages.send(sender, "mine.regenerate-complete"); LangManager.send(sender, "mine.regenerate-complete");
} else { } else {
Messages.send(sender, "mine.error.regenerate-failed"); LangManager.send(sender, "mine.error.regenerate-failed");
} }
}); });
return 1; return 1;
@ -58,18 +58,18 @@ public class MineCommand {
World world = MineWorldManager.getWorld(); World world = MineWorldManager.getWorld();
if (world == null) { if (world == null) {
Messages.send(player, "mine.error.no-world"); LangManager.send(player, "mine.error.no-world");
return 0; return 0;
} }
Location spawn = MineWorldManager.getSpawnLocation(); Location spawn = MineWorldManager.getSpawnLocation();
if (spawn == null) { if (spawn == null) {
Messages.send(player, "mine.error.no-world"); LangManager.send(player, "mine.error.no-world");
return 0; return 0;
} }
player.teleport(spawn); player.teleport(spawn);
Messages.send(player, "mine.teleporting"); LangManager.send(player, "mine.teleporting");
return 1; return 1;
} }
} }

@ -13,7 +13,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.objects.Account; import xyz.soukup.ecoCraftCore.objects.Account;
import xyz.soukup.ecoCraftCore.objects.Transaction; import xyz.soukup.ecoCraftCore.objects.Transaction;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.messages.PHHM; import xyz.soukup.ecoCraftCore.messages.PHHM;
@ -70,11 +70,11 @@ public class MoneyCommand {
private static int getBalance(CommandContext<CommandSourceStack> context) { private static int getBalance(CommandContext<CommandSourceStack> context) {
CommandSender commandSender = context.getSource().getSender(); CommandSender commandSender = context.getSource().getSender();
if (!(commandSender instanceof Player player)) { if (!(commandSender instanceof Player player)) {
Messages.send(commandSender, "generic.error.not-player"); LangManager.send(commandSender, "generic.error.not-player");
return 0; return 0;
} }
Account account = Account.getOrCreate(player); Account account = Account.getOrCreate(player);
Messages.send(player, "money.balance.self", PHHM.get(account)); LangManager.send(player, "money.balance.self", PHHM.get(account));
return 1; return 1;
} }
@ -88,15 +88,15 @@ public class MoneyCommand {
Account senderAccount = Account.getOrCreate(sender); Account senderAccount = Account.getOrCreate(sender);
if (amount > senderAccount.getBalance()) { if (amount > senderAccount.getBalance()) {
Messages.send(sender, "generic.error.no-funds"); LangManager.send(sender, "generic.error.no-funds");
return 0; return 0;
} }
Transaction transaction = new Transaction(amount, "player", sender .getName(), "player", receiver.getName(), "player"); Transaction transaction = new Transaction(amount, "player", sender .getName(), "player", receiver.getName(), "player");
transaction.process(); transaction.process();
Messages.send(sender, "money.send.player", PHHM.get(transaction)); LangManager.send(sender, "money.send.player", PHHM.get(transaction));
Messages.send(receiver, "money.receive.player", PHHM.get(transaction)); LangManager.send(receiver, "money.receive.player", PHHM.get(transaction));
return 1; return 1;
} }
@ -110,7 +110,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "admin", commandSender.getName(), "player", receiver.getName(), "admin"); Transaction transaction = new Transaction(amount, "admin", commandSender.getName(), "player", receiver.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.give.player", PHHM.get(transaction)); LangManager.send(commandSender, "money.give.player", PHHM.get(transaction));
return 1; return 1;
} }
@ -121,7 +121,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "admin", player.getName(), "player", player.getName(), "admin"); Transaction transaction = new Transaction(amount, "admin", player.getName(), "player", player.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(player, "money.give.self", PHHM.get(transaction)); LangManager.send(player, "money.give.self", PHHM.get(transaction));
return 1; return 1;
} }
@ -134,7 +134,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "admin", commandSender.getName(), type, owner, "admin"); Transaction transaction = new Transaction(amount, "admin", commandSender.getName(), type, owner, "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.give.other", PHHM.get(transaction)); LangManager.send(commandSender, "money.give.other", PHHM.get(transaction));
return 1; return 1;
} }
@ -147,7 +147,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "player", sender.getName(), "admin", commandSender.getName(), "admin"); Transaction transaction = new Transaction(amount, "player", sender.getName(), "admin", commandSender.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.remove.player", PHHM.get(transaction)); LangManager.send(commandSender, "money.remove.player", PHHM.get(transaction));
return 1; return 1;
} }
@ -158,7 +158,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, "player", player.getName(), "admin", player.getName(), "admin"); Transaction transaction = new Transaction(amount, "player", player.getName(), "admin", player.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(player, "money.remove.self", PHHM.get(transaction)); LangManager.send(player, "money.remove.self", PHHM.get(transaction));
return 1; return 1;
} }
@ -171,7 +171,7 @@ public class MoneyCommand {
Transaction transaction = new Transaction(amount, type, owner, "admin", commandSender.getName(), "admin"); Transaction transaction = new Transaction(amount, type, owner, "admin", commandSender.getName(), "admin");
transaction.process(); transaction.process();
Messages.send(commandSender, "money.remove.other", PHHM.get(transaction)); LangManager.send(commandSender, "money.remove.other", PHHM.get(transaction));
return 1; return 1;
} }
} }

@ -110,6 +110,16 @@ public class Island {
return activeOn; return activeOn;
} }
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public void setDescritpion(String descritpion) {
this.descritpion = descritpion;
}
public static Island findById(int id) { public static Island findById(int id) {

@ -208,6 +208,10 @@ public class PermissionGroup {
} }
} }
public String getDescription() {
return description;
}
public void delete() { public void delete() {
Dao<RegionMember, Integer> memberDao = RegionMember.getDao(); Dao<RegionMember, Integer> memberDao = RegionMember.getDao();
try { try {
@ -219,4 +223,6 @@ public class PermissionGroup {
region.dropCache(); region.dropCache();
} }
} }

@ -9,7 +9,7 @@ import com.j256.ormlite.table.DatabaseTable;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Comparator; import java.util.Comparator;
@ -413,23 +413,23 @@ public class Region {
} }
public PermissionGroup createDefaultGroupsAndReturnOwner(){ public PermissionGroup createDefaultGroupsAndReturnOwner(){
String ownerDisplayName = Messages.getAsString("region.permission-groups.owner.name"); String ownerDisplayName = LangManager.getString("region.permission-groups.owner.name");
String ownerDescription = Messages.getAsString("region.permission-groups.owner.description"); String ownerDescription = LangManager.getString("region.permission-groups.owner.description");
PermissionGroup owner = new PermissionGroup(this, "owner", ownerDisplayName, ownerDescription, Material.RED_CONCRETE, false, false, 101, 2147483647); PermissionGroup owner = new PermissionGroup(this, "owner", ownerDisplayName, ownerDescription, Material.RED_CONCRETE, false, false, 101, 2147483647);
owner.save(); owner.save();
String adminDisplayName = Messages.getAsString("region.permission-groups.admin.name"); String adminDisplayName = LangManager.getString("region.permission-groups.admin.name");
String adminDescription = Messages.getAsString("region.permission-groups.admin.description"); String adminDescription = LangManager.getString("region.permission-groups.admin.description");
PermissionGroup admin = new PermissionGroup(this, "admin", adminDisplayName, adminDescription, Material.YELLOW_CONCRETE, true, true, 90, 2147482623); PermissionGroup admin = new PermissionGroup(this, "admin", adminDisplayName, adminDescription, Material.YELLOW_CONCRETE, true, true, 90, 2147482623);
admin.save(); admin.save();
String memberDisplayName = Messages.getAsString("region.permission-groups.member.name"); String memberDisplayName = LangManager.getString("region.permission-groups.member.name");
String memberDescription = Messages.getAsString("region.permission-groups.member.description"); String memberDescription = LangManager.getString("region.permission-groups.member.description");
PermissionGroup member = new PermissionGroup(this, "member", memberDisplayName, memberDescription, Material.GREEN_CONCRETE, true, true, 10, 2095231); PermissionGroup member = new PermissionGroup(this, "member", memberDisplayName, memberDescription, Material.GREEN_CONCRETE, true, true, 10, 2095231);
member.save(); member.save();
String defaultDisplayName = Messages.getAsString("region.permission-groups.default"); String defaultDisplayName = LangManager.getString("region.permission-groups.default");
String defaultDescription = Messages.getAsString("region.permission-groups.default.description"); String defaultDescription = LangManager.getString("region.permission-groups.default.description");
PermissionGroup defaultGroup = new PermissionGroup(this, "default", defaultDisplayName, defaultDescription, Material.GRAY_CONCRETE, true, false, 0,96); PermissionGroup defaultGroup = new PermissionGroup(this, "default", defaultDisplayName, defaultDescription, Material.GRAY_CONCRETE, true, false, 0,96);
defaultGroup.save(); defaultGroup.save();

@ -8,7 +8,7 @@ import org.bukkit.Material;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
public class MarkerCommand { public class MarkerCommand {
@ -22,7 +22,7 @@ public class MarkerCommand {
CommandSender commandSender = context.getSource().getSender(); CommandSender commandSender = context.getSource().getSender();
if (!(commandSender instanceof Player player)){ if (!(commandSender instanceof Player player)){
Messages.send(commandSender, "generic.error.not-player"); LangManager.send(commandSender, "generic.error.not-player");
return 0; return 0;
} }

@ -10,7 +10,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
import xyz.soukup.ecoCraftCore.messages.PHHM; import xyz.soukup.ecoCraftCore.messages.PHHM;
@ -50,7 +50,7 @@ public class MarkerEvent implements Listener {
return; return;
} }
chests.put(player, chest); chests.put(player, chest);
Messages.send(player, "marker.marked.chest", PHHM.get(chest.getLocation())); LangManager.send(player, "marker.marked.chest", PHHM.get(chest.getLocation()));
return; return;
} }
@ -60,7 +60,7 @@ public class MarkerEvent implements Listener {
return; return;
} }
signs.put(player, sign); signs.put(player, sign);
Messages.send(player, "marker.marked.sign", PHHM.get(sign.getLocation())); LangManager.send(player, "marker.marked.sign", PHHM.get(sign.getLocation()));
return; return;
} }
@ -73,7 +73,7 @@ public class MarkerEvent implements Listener {
return; return;
} }
primaryLocations.put(player, location); primaryLocations.put(player, location);
Messages.send(player, "marker.marked.primary", PHHM.get(location)); LangManager.send(player, "marker.marked.primary", PHHM.get(location));
return; return;
} }
case RIGHT_CLICK_BLOCK -> { case RIGHT_CLICK_BLOCK -> {
@ -82,7 +82,7 @@ public class MarkerEvent implements Listener {
return; return;
} }
secondaryLocations.put(player, location); secondaryLocations.put(player, location);
Messages.send(player, "marker.marked.secondary", PHHM.get(location)); LangManager.send(player, "marker.marked.secondary", PHHM.get(location));
return; return;
} }
} }

@ -10,7 +10,7 @@ import io.papermc.paper.command.brigadier.Commands;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.objects.Region; import xyz.soukup.ecoCraftCore.objects.Region;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List; import java.util.List;
@ -63,16 +63,16 @@ public class RegionAdminCommand {
private static int createRegion(CommandContext<CommandSourceStack> context) { private static int createRegion(CommandContext<CommandSourceStack> context) {
Integer type = context.getArgument("type", Integer.class); Integer type = context.getArgument("type", Integer.class);
if(!(context.getSource().getSender() instanceof Player player)){ if(!(context.getSource().getSender() instanceof Player player)){
Messages.send(context.getSource().getSender(), "generic.error.not-player"); LangManager.send(context.getSource().getSender(), "generic.error.not-player");
return 0; return 0;
}; };
int status = RegionManager.createRegion(player, type, player.getName(), "player"); int status = RegionManager.createRegion(player, type, player.getName(), "player");
switch (status){ switch (status){
case 0 -> Messages.send(player, "generic.success.created"); case 0 -> LangManager.send(player, "generic.success.created");
case 1 -> Messages.send(player, "region.error.not-marked"); case 1 -> LangManager.send(player, "region.error.not-marked");
case 2 -> Messages.send(player, "region.error.not-same-world"); case 2 -> LangManager.send(player, "region.error.not-same-world");
} }
return 0; return 0;
@ -86,8 +86,8 @@ public class RegionAdminCommand {
int status = RegionManager.addMember(id, "player", player, membership); int status = RegionManager.addMember(id, "player", player, membership);
switch (status){ switch (status){
case 0 -> Messages.send(commandSender, "generic.success.created"); case 0 -> LangManager.send(commandSender, "generic.success.created");
case 1 -> Messages.send(commandSender, "region.error.not-exist"); case 1 -> LangManager.send(commandSender, "region.error.not-exist");
} }
return 0; return 0;
} }

@ -15,7 +15,7 @@ import io.papermc.paper.command.brigadier.argument.ArgumentTypes;
import io.papermc.paper.command.brigadier.argument.resolvers.selector.PlayerSelectorArgumentResolver; import io.papermc.paper.command.brigadier.argument.resolvers.selector.PlayerSelectorArgumentResolver;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.messages.Replace; import xyz.soukup.ecoCraftCore.messages.Replace;
import xyz.soukup.ecoCraftCore.objects.Permission; import xyz.soukup.ecoCraftCore.objects.Permission;
import xyz.soukup.ecoCraftCore.objects.PermissionGroup; import xyz.soukup.ecoCraftCore.objects.PermissionGroup;
@ -120,10 +120,10 @@ public class RegionCommand {
ItemStack itemStack = context.getArgument("icon", ItemStack.class); ItemStack itemStack = context.getArgument("icon", ItemStack.class);
switch (RegionManager.changeGroupIconSafely(id, name, itemStack, player)){ switch (RegionManager.changeGroupIconSafely(id, name, itemStack, player)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.icon-changed"); case OK -> LangManager.send(player, "region.command.icon-changed");
} }
return 0; return 0;
@ -136,10 +136,10 @@ public class RegionCommand {
String description = context.getArgument("description", String.class); String description = context.getArgument("description", String.class);
switch (RegionManager.changeGroupDescriptionSafely(id, name, description, player)){ switch (RegionManager.changeGroupDescriptionSafely(id, name, description, player)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.description-changed"); case OK -> LangManager.send(player, "region.command.description-changed");
} }
return 0; return 0;
@ -152,10 +152,10 @@ public class RegionCommand {
String displayName = context.getArgument("display-name", String.class); String displayName = context.getArgument("display-name", String.class);
switch (RegionManager.changeGroupDisplayNameSafely(id, name, displayName, player)){ switch (RegionManager.changeGroupDisplayNameSafely(id, name, displayName, player)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.display-name-changed"); case OK -> LangManager.send(player, "region.command.display-name-changed");
} }
return 0; return 0;
@ -170,21 +170,21 @@ public class RegionCommand {
try { try {
newOwner = newOwnerResolver.resolve(context.getSource()).getFirst(); newOwner = newOwnerResolver.resolve(context.getSource()).getFirst();
} catch (CommandSyntaxException e) { } catch (CommandSyntaxException e) {
Messages.send(player, "region.command.error.not-exist"); LangManager.send(player, "region.command.error.not-exist");
return 1; return 1;
} }
if (!context.getInput().endsWith("confirm")){ if (!context.getInput().endsWith("confirm")){
Messages.send(player, "region.command.confirm-warning.transfer-ownership", LangManager.send(player, "region.command.confirm-warning.transfer-ownership",
new Replace("id", String.valueOf(id)), new Replace("id", String.valueOf(id)),
new Replace("name", newOwner.getName())); new Replace("name", newOwner.getName()));
return 1; return 1;
} }
switch (RegionManager.transferOwnershipSafely(id, player, newOwner)){ switch (RegionManager.transferOwnershipSafely(id, player, newOwner)){
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case OK -> Messages.send(player, "region.command.transferred-ownership"); case OK -> LangManager.send(player, "region.command.transferred-ownership");
} }
@ -199,11 +199,11 @@ public class RegionCommand {
String permission = context.getArgument("permission", String.class); String permission = context.getArgument("permission", String.class);
switch (RegionManager.removeGroupPermissionSafely(player, id, name, permission)){ switch (RegionManager.removeGroupPermissionSafely(player, id, name, permission)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NOT_EXIST_PERMISSION -> Messages.send(player, "region.command.error.not-exist-permission"); case NOT_EXIST_PERMISSION -> LangManager.send(player, "region.command.error.not-exist-permission");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.removed-permission"); case OK -> LangManager.send(player, "region.command.removed-permission");
} }
return 0; return 0;
@ -216,11 +216,11 @@ public class RegionCommand {
String permission = context.getArgument("permission", String.class); String permission = context.getArgument("permission", String.class);
switch (RegionManager.addGroupPermissionSafely(player, id, name, permission)){ switch (RegionManager.addGroupPermissionSafely(player, id, name, permission)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NOT_EXIST_PERMISSION -> Messages.send(player, "region.command.error.not-exist-permission"); case NOT_EXIST_PERMISSION -> LangManager.send(player, "region.command.error.not-exist-permission");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.added-permission"); case OK -> LangManager.send(player, "region.command.added-permission");
} }
return 0; return 0;
@ -232,10 +232,10 @@ public class RegionCommand {
String name = context.getArgument("name", String.class); String name = context.getArgument("name", String.class);
switch (RegionManager.removeRegionGroupSafely(id, player, name)){ switch (RegionManager.removeRegionGroupSafely(id, player, name)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NOT_EXIST_GROUP -> Messages.send(player, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(player, "region.command.error.not-exist-group");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case OK -> Messages.send(player, "region.command.deleted-group"); case OK -> LangManager.send(player, "region.command.deleted-group");
} }
return 0; return 0;
@ -252,10 +252,10 @@ public class RegionCommand {
switch (RegionManager.addRegionGroupSafely(id, player, name, weight, icon, displayName, description)){ switch (RegionManager.addRegionGroupSafely(id, player, name, weight, icon, displayName, description)){
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case ALREADY_EXISTS -> Messages.send(player, "region.command.error.already-exist"); case ALREADY_EXISTS -> LangManager.send(player, "region.command.error.already-exist");
case OK -> Messages.send(player, "region.command.created-group"); case OK -> LangManager.send(player, "region.command.created-group");
} }
return 0; return 0;
@ -378,10 +378,10 @@ public class RegionCommand {
switch (RegionManager.removeMemberSafely(id, memberToRemove, senderPlayer)){ switch (RegionManager.removeMemberSafely(id, memberToRemove, senderPlayer)){
case OK -> Messages.send(senderPlayer, "region.command.removed-member"); case OK -> LangManager.send(senderPlayer, "region.command.removed-member");
case NOT_EXIST -> Messages.send(senderPlayer, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(senderPlayer, "region.command.error.not-exist");
case NO_PERMISSION -> Messages.send(senderPlayer, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(senderPlayer, "region.command.error.no-permission");
case NOT_MEMBER -> Messages.send(senderPlayer, "region.command.error.not-member"); case NOT_MEMBER -> LangManager.send(senderPlayer, "region.command.error.not-member");
} }
@ -398,12 +398,12 @@ public class RegionCommand {
Player playerToAdd = playerSelectorArgumentResolver.resolve(context.getSource()).getFirst(); Player playerToAdd = playerSelectorArgumentResolver.resolve(context.getSource()).getFirst();
switch (RegionManager.addMemberSafely(id, playerToAdd, senderPlayer, groupName)){ switch (RegionManager.addMemberSafely(id, playerToAdd, senderPlayer, groupName)){
case OK -> Messages.send(senderPlayer, "region.command.added-member"); case OK -> LangManager.send(senderPlayer, "region.command.added-member");
case NOT_EXIST -> Messages.send(senderPlayer, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(senderPlayer, "region.command.error.not-exist");
case NO_PERMISSION -> Messages.send(senderPlayer, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(senderPlayer, "region.command.error.no-permission");
case NOT_EXIST_GROUP -> Messages.send(senderPlayer, "region.command.error.not-exist-group"); case NOT_EXIST_GROUP -> LangManager.send(senderPlayer, "region.command.error.not-exist-group");
case PLAYER_NOT_ON_ISLAND -> Messages.send(senderPlayer, "region.command.error.player-not-on-island"); case PLAYER_NOT_ON_ISLAND -> LangManager.send(senderPlayer, "region.command.error.player-not-on-island");
case ALREADY_MEMBER -> Messages.send(senderPlayer, "region.command.error.already-member"); case ALREADY_MEMBER -> LangManager.send(senderPlayer, "region.command.error.already-member");
} }
} catch (CommandSyntaxException e) { } catch (CommandSyntaxException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@ -416,14 +416,14 @@ public class RegionCommand {
int id = context.getArgument("id", Integer.class); int id = context.getArgument("id", Integer.class);
if (!context.getInput().endsWith("confirm")){ if (!context.getInput().endsWith("confirm")){
Messages.send(player, "region.command.confirm-warning.delete", new Replace("id", String.valueOf(id))); LangManager.send(player, "region.command.confirm-warning.delete", new Replace("id", String.valueOf(id)));
return 1; return 1;
} }
switch (RegionManager.deleteRegionSafely(id, player)){ switch (RegionManager.deleteRegionSafely(id, player)){
case OK -> Messages.send(player, "region.command.deleted"); case OK -> LangManager.send(player, "region.command.deleted");
case NOT_EXIST -> Messages.send(player, "region.command.error.not-exist"); case NOT_EXIST -> LangManager.send(player, "region.command.error.not-exist");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
} }
return 0; return 0;
@ -433,11 +433,11 @@ public class RegionCommand {
Player player = (Player) context.getSource().getSender(); Player player = (Player) context.getSource().getSender();
switch (RegionManager.createRegionSafely(player)){ switch (RegionManager.createRegionSafely(player)){
case OK -> Messages.send(player, "region.command.created"); case OK -> LangManager.send(player, "region.command.created");
case NO_SELECTION -> Messages.send(player, "region.command.error.no-selection"); case NO_SELECTION -> LangManager.send(player, "region.command.error.no-selection");
case NO_PERMISSION -> Messages.send(player, "region.command.error.no-permission"); case NO_PERMISSION -> LangManager.send(player, "region.command.error.no-permission");
case INVALID_SELECTION -> Messages.send(player, "region.command.error.invalid-selection"); case INVALID_SELECTION -> LangManager.send(player, "region.command.error.invalid-selection");
case REGION_NOT_ENVELOPS -> Messages.send(player, "region.command.error.region-not-envelops"); case REGION_NOT_ENVELOPS -> LangManager.send(player, "region.command.error.region-not-envelops");
} }
return 0; return 0;
} }

@ -1,46 +1,185 @@
package xyz.soukup.ecoCraftCore.regions; package xyz.soukup.ecoCraftCore.regions;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui; import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
import com.github.stefvanschie.inventoryframework.pane.OutlinePane; import com.github.stefvanschie.inventoryframework.pane.OutlinePane;
import com.github.stefvanschie.inventoryframework.pane.component.ToggleButton;
import io.papermc.paper.dialog.Dialog;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.genericMenus.PlayerSelector;
import xyz.soukup.ecoCraftCore.genericMenus.TextInput;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.objects.Island;
import xyz.soukup.ecoCraftCore.objects.Permission;
import xyz.soukup.ecoCraftCore.objects.Region; import xyz.soukup.ecoCraftCore.objects.Region;
import xyz.soukup.ecoCraftCore.objects.RegionMember;
import java.util.ArrayList;
import java.util.List;
public class RegionMenu { public class RegionMenu {
public static ChestGui regionGui(RegionMember regionMember, Region region){ public static ChestGui regionGui(Player player, Region region){
return buildGui(regionMember, region); return buildGui(player, region);
} }
private static ChestGui buildGui(RegionMember regionMember, Region region){ private static ChestGui buildGui(Player player, Region region){
String title; String title;
int regionLevel = region.getLevel(); int regionLevel = region.getLevel();
if (regionLevel == -1){ if (regionLevel == -1){
title = Messages.getAsString("gui.region.title-island"); title = LangManager.getLegacyString("gui.region.title-island");
} else { } else {
title = Messages.getAsString("gui.region.title"); title = LangManager.getLegacyString("gui.region.title");
} }
ChestGui gui = new ChestGui(2, title); ChestGui gui = new ChestGui(2, title);
OutlinePane outlinePane = new OutlinePane(0, 0, 9, 2); OutlinePane outlinePane = new OutlinePane(0, 0, 9, 2);
addIslandSettings(outlinePane, regionMember, region); addIslandSettings(outlinePane, player, region);
addMemberManagement(outlinePane, player, region);
gui.addPane(outlinePane);
return gui; return gui;
} }
private static void addIslandSettings(OutlinePane outlinePane, RegionMember regionMember, Region region) { private static void addMemberManagement(OutlinePane pane, Player player, Region region){
if (!region.hasPermission(player, Permission.MANAGE_MEMBERS)){
return;
}
GuiItem addMemberButton = new GuiItemBuilder(Material.PLAYER_HEAD,
"gui.region.add-member.name",
"gui.region.add-member.description",
(event -> addMemberSelectPlayer(player, region)))
.build();
}
private static void addMemberSelectPlayer(Player player, Region region) {
World world = Bukkit.getWorld(region.getIsland());
if (world == null){
return;
}
List<Player> players = world.getPlayers();
List<Player> candidates = new ArrayList<>();
for(Player candidate : players){
if (region.getRegionMember(candidate) != null){
continue;
}
candidates.add(candidate);
}
ChestGui playerSelectGui = PlayerSelector.selectPlayer(player,
candidates,
(( selectedPlayer) -> addMemberSelectGroup(player, region, selectedPlayer)),
(event -> regionGui(player, region).show(player)));
playerSelectGui.show(player);
}
private static void addMemberSelectGroup(Player player, Region region, Player selectedPlayer){
}
private static void addIslandSettings(OutlinePane pane, Player player, Region region) {
if (region.getLevel() != -1){
return;
}
if (!region.hasPermission(player, Permission.MANAGE_INFO)){
return;
}
Island island = Island.findByUuid(region.getIsland());
if (island == null){
return;
}
ToggleButton toggleButton = new ToggleButton(1,1);
Dialog islandTitleDialog = TextInput.textInput(player,
"gui.region.name-island.name",
"gui.region.name-island.input",
island.getDisplayName(),
(s -> setIslandName(player, island, s)));
Dialog islandDescriptionDialog = TextInput.textInput(player,
"gui.region.description-island.name",
"gui.region.description-island.input",
island.getDescritpion(),
(s -> setIslandDescription(player, island, s)));
GuiItem visibilityToggle = new GuiItemBuilder(Material.ENDER_EYE,
"gui.region.visibility-island.name",
"gui.region.visibility-island.description",
(event -> toggleIslandPublic(player, island, event)),
island.getPublic()
).build();
GuiItem titleButton = new GuiItemBuilder(
Material.DARK_OAK_SIGN,
"gui.region.name-island.name",
"gui.region.name-island.description",
(event -> player.showDialog(islandTitleDialog))
).build();
GuiItem descriptionButton = new GuiItemBuilder(
Material.ACACIA_SIGN,
"gui.region.description-island.name",
"gui.region.description-island.description",
(event -> player.showDialog(islandDescriptionDialog))
).build();
pane.addItem(visibilityToggle);
pane.addItem(titleButton);
pane.addItem(descriptionButton);
} }
private static void setIslandDescription(InventoryClickEvent event, Region region, RegionMember regionMember) { private static void toggleIslandPublic(Player player, Island island, InventoryClickEvent event){
island.setPublic(!island.getPublic());
island.save();
ChestGui chestGui = (ChestGui) ChestGui.getGui(event.getInventory());
if (chestGui == null){
return;
}
OutlinePane pane = new OutlinePane(event.getSlot(), 1);
GuiItem visibilityToggle = new GuiItemBuilder(Material.ENDER_EYE,
"gui.region.visibility-island.name",
"gui.region.visibility-island.description",
(clickEvent -> toggleIslandPublic(player, island, event)),
island.getPublic()
).build();
pane.addItem(visibilityToggle);
chestGui.addPane(pane);
} }
private static void setIslandName(InventoryClickEvent inventoryClickEvent, Region region, RegionMember regionMember) { private static void setIslandDescription(Player player, Island island, String description) {
island.setDescritpion(description);
island.save();
LangManager.send(player, "island.changed.description");
}
private static void setIslandName(Player player, Island island, String name) {
island.setDisplayName(name);
island.save();
LangManager.send(player, "island.changed.name");
} }
} }

@ -13,7 +13,7 @@ import xyz.soukup.ecoCraftCore.positionMarker.MarkerEvent;
import xyz.soukup.ecoCraftCore.objects.Shop; import xyz.soukup.ecoCraftCore.objects.Shop;
import xyz.soukup.ecoCraftCore.objects.VirtualChest; import xyz.soukup.ecoCraftCore.objects.VirtualChest;
import xyz.soukup.ecoCraftCore.inventory.InventoryUtils; import xyz.soukup.ecoCraftCore.inventory.InventoryUtils;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
public class ShopCommand { public class ShopCommand {
@ -46,7 +46,7 @@ public class ShopCommand {
CommandSourceStack source = ctx.getSource(); CommandSourceStack source = ctx.getSource();
if (!(source.getSender() instanceof Player player)) { if (!(source.getSender() instanceof Player player)) {
Messages.send(source.getSender(), "generic.error.not-player"); LangManager.send(source.getSender(), "generic.error.not-player");
return 0; return 0;
} }
@ -55,20 +55,20 @@ public class ShopCommand {
Sign sign = MarkerEvent.signs.get(player); Sign sign = MarkerEvent.signs.get(player);
if (sign == null || chest == null) { if (sign == null || chest == null) {
Messages.send(player, "shop.error.not-marked"); LangManager.send(player, "shop.error.not-marked");
return 0; return 0;
} }
// 2. Validate Item in Hand // 2. Validate Item in Hand
ItemStack item = player.getInventory().getItemInMainHand(); ItemStack item = player.getInventory().getItemInMainHand();
if (item.isEmpty()) { if (item.isEmpty()) {
Messages.send(player, "shop.error.empty-hand"); LangManager.send(player, "shop.error.empty-hand");
return 0; return 0;
} }
// 3. Check if already a shop // 3. Check if already a shop
if (PDC.getInteger(sign, "shop") != null) { if (PDC.getInteger(sign, "shop") != null) {
Messages.send(player, "shop.error.already-shop"); LangManager.send(player, "shop.error.already-shop");
return 0; return 0;
} }
@ -99,7 +99,7 @@ public class ShopCommand {
shop.save(); shop.save();
shop.writeIntoSign(sign); shop.writeIntoSign(sign);
Messages.send(player, "shop.created"); LangManager.send(player, "shop.created");
return 1; return 1;
} }
} }

@ -30,7 +30,7 @@ import org.bukkit.inventory.PlayerInventory;
import xyz.soukup.ecoCraftCore.virtualChest.VirtualChestLogic; import xyz.soukup.ecoCraftCore.virtualChest.VirtualChestLogic;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder; import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.inventory.InventoryUtils; import xyz.soukup.ecoCraftCore.inventory.InventoryUtils;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.objects.Account; import xyz.soukup.ecoCraftCore.objects.Account;
import xyz.soukup.ecoCraftCore.objects.Shop; import xyz.soukup.ecoCraftCore.objects.Shop;
import xyz.soukup.ecoCraftCore.objects.Transaction; import xyz.soukup.ecoCraftCore.objects.Transaction;
@ -75,7 +75,7 @@ public class ShopLogic implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
Messages.send(player, "shop.error.chest-open"); LangManager.send(player, "shop.error.chest-open");
return; return;
} }
@ -129,7 +129,7 @@ public class ShopLogic implements Listener {
public static ChestGui buildShopGui(Player player, Shop shop){ public static ChestGui buildShopGui(Player player, Shop shop){
ChestGui gui = new ChestGui(1, Messages.getAsString("gui.shop.title")); ChestGui gui = new ChestGui(1, LangManager.getLegacyString("gui.shop.title"));
gui.setOnGlobalClick(inventoryClickEvent -> { gui.setOnGlobalClick(inventoryClickEvent -> {
inventoryClickEvent.setCancelled(true); inventoryClickEvent.setCancelled(true);
@ -148,7 +148,7 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", buyPrice)); hashMap.put("price", String.format("%.2f", buyPrice));
GuiItem one = new GuiItemBuilder(Material.LIME_WOOL) GuiItem one = new GuiItemBuilder(Material.LIME_WOOL)
.setName(Messages.get("gui.shop.buy", hashMap)) .setName(LangManager.get("gui.shop.buy", hashMap))
.build(); .build();
one.setAction(event -> { one.setAction(event -> {
@ -160,7 +160,7 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", buyPrice*8)); hashMap.put("price", String.format("%.2f", buyPrice*8));
GuiItem eight = new GuiItemBuilder(Material.LIME_WOOL) GuiItem eight = new GuiItemBuilder(Material.LIME_WOOL)
.setName(Messages.get("gui.shop.buy", hashMap)) .setName(LangManager.get("gui.shop.buy", hashMap))
.build(); .build();
eight.setAction(event -> { eight.setAction(event -> {
@ -181,7 +181,7 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", sellPrice)); hashMap.put("price", String.format("%.2f", sellPrice));
GuiItem one = new GuiItemBuilder(Material.YELLOW_WOOL) GuiItem one = new GuiItemBuilder(Material.YELLOW_WOOL)
.setName(Messages.get("gui.shop.sell", hashMap)) .setName(LangManager.get("gui.shop.sell", hashMap))
.build(); .build();
one.setAction(event -> { one.setAction(event -> {
@ -194,7 +194,7 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", sellPrice*8)); hashMap.put("price", String.format("%.2f", sellPrice*8));
GuiItem eight = new GuiItemBuilder(Material.YELLOW_WOOL) GuiItem eight = new GuiItemBuilder(Material.YELLOW_WOOL)
.setName(Messages.get("gui.shop.sell", hashMap)) .setName(LangManager.get("gui.shop.sell", hashMap))
.build(); .build();
eight.setAction(event -> { eight.setAction(event -> {
@ -217,24 +217,24 @@ public class ShopLogic implements Listener {
public static Dialog buildEditDialog(Shop shop){ public static Dialog buildEditDialog(Shop shop){
return Dialog.create(builder -> builder.empty() return Dialog.create(builder -> builder.empty()
.base(DialogBase.builder(Messages.get("gui.shop-edit.title")) .base(DialogBase.builder(LangManager.get("gui.shop-edit.title"))
.inputs(List.of( .inputs(List.of(
DialogInput.text("count", Messages.get("gui.shop-edit.inputs.count")) DialogInput.text("count", LangManager.get("gui.shop-edit.inputs.count"))
.initial(String.valueOf(shop.getAmount())) .initial(String.valueOf(shop.getAmount()))
.build(), .build(),
DialogInput.text("sellprice", Messages.get("gui.shop-edit.inputs.price-sell")) DialogInput.text("sellprice", LangManager.get("gui.shop-edit.inputs.price-sell"))
.initial(String.valueOf(shop.getPriceSell())) .initial(String.valueOf(shop.getPriceSell()))
.build(), .build(),
DialogInput.text("buyprice", Messages.get("gui.shop-edit.inputs.price-buy")) DialogInput.text("buyprice", LangManager.get("gui.shop-edit.inputs.price-buy"))
.initial(String.valueOf(shop.getPriceBuy())) .initial(String.valueOf(shop.getPriceBuy()))
.build(), .build(),
DialogInput.bool("changeitem", Messages.get("gui.shop-edit.inputs.change-item")) DialogInput.bool("changeitem", LangManager.get("gui.shop-edit.inputs.change-item"))
.build() .build()
)) ))
.build()) .build())
.type(DialogType.confirmation( .type(DialogType.confirmation(
ActionButton.builder(Messages.get("gui.shop-edit.button.confirm")) ActionButton.builder(LangManager.get("gui.shop-edit.button.confirm"))
.action(DialogAction.customClick( .action(DialogAction.customClick(
(view, audience) -> { (view, audience) -> {
changeShopParameters(view, audience, shop); changeShopParameters(view, audience, shop);
@ -244,7 +244,7 @@ public class ShopLogic implements Listener {
.build() .build()
)) ))
.build(), .build(),
ActionButton.builder(Messages.get("gui.shop-edit.button.cancel")).build() ActionButton.builder(LangManager.get("gui.shop-edit.button.cancel")).build()
)) ))
); );
@ -253,7 +253,7 @@ public class ShopLogic implements Listener {
public static void buy(Shop shop, Player player, int multiplier){ public static void buy(Shop shop, Player player, int multiplier){
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
Messages.send(player, "shop.error.chest-open"); LangManager.send(player, "shop.error.chest-open");
return; return;
} }
@ -265,7 +265,7 @@ public class ShopLogic implements Listener {
Account account = Account.getOrCreate(player); Account account = Account.getOrCreate(player);
if (price > account.getBalance()){ if (price > account.getBalance()){
Messages.send(player, "generic.error.no-money.self"); LangManager.send(player, "generic.error.no-money.self");
return; return;
} }
@ -278,12 +278,12 @@ public class ShopLogic implements Listener {
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (InventoryUtils.getSpaceLeft(playerInventory, itemStack) < amount){ if (InventoryUtils.getSpaceLeft(playerInventory, itemStack) < amount){
Messages.send(player, "generic.error.no-space.self"); LangManager.send(player, "generic.error.no-space.self");
return; return;
} }
if (!virtualChest.removeItem(itemStack)){ if (!virtualChest.removeItem(itemStack)){
Messages.send(player, "generic.error.no-item.shop"); LangManager.send(player, "generic.error.no-item.shop");
return; return;
} }
@ -300,7 +300,7 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", price)); hashMap.put("price", String.format("%.2f", price));
hashMap.put("item", PlainTextComponentSerializer.plainText().serialize(itemStack.displayName())); hashMap.put("item", PlainTextComponentSerializer.plainText().serialize(itemStack.displayName()));
Messages.send(player, "shop.buy", hashMap); LangManager.send(player, "shop.buy", hashMap);
} }
@ -328,7 +328,7 @@ public class ShopLogic implements Listener {
buyPrice = Float.parseFloat(Objects.requireNonNull(response.getText("buyprice"))); buyPrice = Float.parseFloat(Objects.requireNonNull(response.getText("buyprice")));
count = Integer.parseInt(Objects.requireNonNull(response.getText("count"))); count = Integer.parseInt(Objects.requireNonNull(response.getText("count")));
} catch (NumberFormatException exception) { } catch (NumberFormatException exception) {
Messages.send(player, "gui.error.invalid-input"); LangManager.send(player, "gui.error.invalid-input");
return; return;
} }
@ -342,7 +342,7 @@ public class ShopLogic implements Listener {
public static void sell(Shop shop, Player player, int multiplier){ public static void sell(Shop shop, Player player, int multiplier){
if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){ if (VirtualChestLogic.openedChests.containsKey(shop.getVirtualChestID())){
Messages.send(player, "shop.error.chest-open"); LangManager.send(player, "shop.error.chest-open");
return; return;
} }
@ -354,7 +354,7 @@ public class ShopLogic implements Listener {
Account account = Account.getOrCreate(shop.getOwnerType(), shop.getOwner()); Account account = Account.getOrCreate(shop.getOwnerType(), shop.getOwner());
if (price > account.getBalance()){ if (price > account.getBalance()){
Messages.send(player, "generic.error.no-money.self"); LangManager.send(player, "generic.error.no-money.self");
return; return;
} }
@ -367,12 +367,12 @@ public class ShopLogic implements Listener {
Inventory playerInventory = player.getInventory(); Inventory playerInventory = player.getInventory();
if (InventoryUtils.getCount(playerInventory, itemStack) < amount){ if (InventoryUtils.getCount(playerInventory, itemStack) < amount){
Messages.send(player, "generic.error.no-item.self"); LangManager.send(player, "generic.error.no-item.self");
return; return;
} }
if (!virtualChest.addItem(itemStack)){ if (!virtualChest.addItem(itemStack)){
Messages.send(player, "generic.error.no-space.shop"); LangManager.send(player, "generic.error.no-space.shop");
return; return;
} }
@ -388,12 +388,12 @@ public class ShopLogic implements Listener {
hashMap.put("price", String.format("%.2f", price)); hashMap.put("price", String.format("%.2f", price));
hashMap.put("item", PlainTextComponentSerializer.plainText().serialize(itemStack.displayName())); hashMap.put("item", PlainTextComponentSerializer.plainText().serialize(itemStack.displayName()));
Messages.send(player, "shop.sell", hashMap); LangManager.send(player, "shop.sell", hashMap);
} }
public static HopperGui confirmBreakGui(Block block, Shop shop){ public static HopperGui confirmBreakGui(Block block, Shop shop){
HopperGui gui = new HopperGui(Messages.getAsString("menu.destroy-confirmation.title")); HopperGui gui = new HopperGui(LangManager.getLegacyString("menu.destroy-confirmation.title"));
OutlinePane pane = new OutlinePane(0,0, 5, 1); OutlinePane pane = new OutlinePane(0,0, 5, 1);
gui.setOnGlobalClick(inventoryClickEvent -> { gui.setOnGlobalClick(inventoryClickEvent -> {
@ -401,11 +401,11 @@ public class ShopLogic implements Listener {
}); });
GuiItem confirmButton = new GuiItemBuilder(Material.LIME_WOOL) GuiItem confirmButton = new GuiItemBuilder(Material.LIME_WOOL)
.setName(Messages.get("menu.destroy-confirmation.confirm")) .setName(LangManager.get("menu.destroy-confirmation.confirm"))
.build(); .build();
GuiItem cancelButton = new GuiItemBuilder(Material.RED_WOOL) GuiItem cancelButton = new GuiItemBuilder(Material.RED_WOOL)
.setName(Messages.get("menu.destroy-confirmation.cancel")) .setName(LangManager.get("menu.destroy-confirmation.cancel"))
.build(); .build();
cancelButton.setAction(event -> { cancelButton.setAction(event -> {

@ -23,7 +23,7 @@ import org.bukkit.block.sign.Side;
import org.bukkit.block.sign.SignSide; import org.bukkit.block.sign.SignSide;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.regions.RegionManager; import xyz.soukup.ecoCraftCore.regions.RegionManager;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
@ -48,14 +48,14 @@ public class SignEditCommand {
BlockState blockState = block.getState(); BlockState blockState = block.getState();
if (!(blockState instanceof Sign sign)){ if (!(blockState instanceof Sign sign)){
Messages.send(player, "sign-edit.error.not-sign"); LangManager.send(player, "sign-edit.error.not-sign");
return 1; return 1;
} }
Location location = sign.getLocation(); Location location = sign.getLocation();
if (!RegionManager.isAllowedToInteract(player, location)){ if (!RegionManager.isAllowedToInteract(player, location)){
Messages.send(player, "region.error.not-allowed-to-interact"); LangManager.send(player, "region.error.not-allowed-to-interact");
return 1; return 1;
} }
@ -78,16 +78,16 @@ public class SignEditCommand {
actionButtons.add(ActionButton.builder(Messages.get("gui.sign-edit.buttons.copy")) actionButtons.add(ActionButton.builder(LangManager.get("gui.sign-edit.buttons.copy"))
.action(DialogAction.customClick((view, audience) -> copySignText(view, player, sign), ClickCallback.Options.builder().build())) .action(DialogAction.customClick((view, audience) -> copySignText(view, player, sign), ClickCallback.Options.builder().build()))
.build()); .build());
actionButtons.add(ActionButton.builder(Messages.get("gui.sign-edit.buttons.paste")) actionButtons.add(ActionButton.builder(LangManager.get("gui.sign-edit.buttons.paste"))
.action(DialogAction.customClick((view, audience) -> pasteSignText(sign, player), ClickCallback.Options.builder().build())) .action(DialogAction.customClick((view, audience) -> pasteSignText(sign, player), ClickCallback.Options.builder().build()))
.build()); .build());
actionButtons.add(ActionButton.builder(Messages.get("gui.sign-edit.buttons.confirm")) actionButtons.add(ActionButton.builder(LangManager.get("gui.sign-edit.buttons.confirm"))
.action(DialogAction.customClick((view, audience) -> editSign(view, sign, player), ClickCallback.Options.builder().build())) .action(DialogAction.customClick((view, audience) -> editSign(view, sign, player), ClickCallback.Options.builder().build()))
.build()); .build());
actionButtons.add(ActionButton.builder(Messages.get("gui.sign-edit.buttons.cancel")) actionButtons.add(ActionButton.builder(LangManager.get("gui.sign-edit.buttons.cancel"))
.action(DialogAction.customClick((view, audience) -> audience.closeDialog(), ClickCallback.Options.builder().build())) .action(DialogAction.customClick((view, audience) -> audience.closeDialog(), ClickCallback.Options.builder().build()))
.build()); .build());
@ -95,21 +95,21 @@ public class SignEditCommand {
List<String> finalLines = lines; List<String> finalLines = lines;
return Dialog.create(builder -> builder.empty() return Dialog.create(builder -> builder.empty()
.base(DialogBase.builder(Messages.get("gui.sign-edit.title")) .base(DialogBase.builder(LangManager.get("gui.sign-edit.title"))
.inputs(List.of( .inputs(List.of(
DialogInput.text("line1", Messages.get("gui.sign-edit.inputs.line1")) DialogInput.text("line1", LangManager.get("gui.sign-edit.inputs.line1"))
.initial(finalLines.getFirst()) .initial(finalLines.getFirst())
.maxLength(256) .maxLength(256)
.build(), .build(),
DialogInput.text("line2", Messages.get("gui.sign-edit.inputs.line2")) DialogInput.text("line2", LangManager.get("gui.sign-edit.inputs.line2"))
.initial(finalLines.get(1)) .initial(finalLines.get(1))
.maxLength(256) .maxLength(256)
.build(), .build(),
DialogInput.text("line3", Messages.get("gui.sign-edit.inputs.line3")) DialogInput.text("line3", LangManager.get("gui.sign-edit.inputs.line3"))
.initial(finalLines.get(2)) .initial(finalLines.get(2))
.maxLength(256) .maxLength(256)
.build(), .build(),
DialogInput.text("line4", Messages.get("gui.sign-edit.inputs.line4")) DialogInput.text("line4", LangManager.get("gui.sign-edit.inputs.line4"))
.initial(finalLines.get(3)) .initial(finalLines.get(3))
.maxLength(256) .maxLength(256)
.build() .build()
@ -148,7 +148,7 @@ public class SignEditCommand {
lines.add(view.getText("line4")); lines.add(view.getText("line4"));
clipBoard.put(player, lines); clipBoard.put(player, lines);
Messages.send(player, "gui.sign-edit.success.copied"); LangManager.send(player, "gui.sign-edit.success.copied");
pasteSignText(sign, player); pasteSignText(sign, player);
} }

@ -17,7 +17,7 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder; import xyz.soukup.ecoCraftCore.gui.GuiItemBuilder;
import xyz.soukup.ecoCraftCore.objects.VirtualChest; import xyz.soukup.ecoCraftCore.objects.VirtualChest;
import xyz.soukup.ecoCraftCore.messages.Messages; import xyz.soukup.ecoCraftCore.messages.LangManager;
import xyz.soukup.ecoCraftCore.utilities.PDC; import xyz.soukup.ecoCraftCore.utilities.PDC;
import java.util.HashMap; import java.util.HashMap;
@ -184,7 +184,7 @@ public class VirtualChestLogic implements Listener {
} }
public static HopperGui confirmBreakGui(Block block, VirtualChest virtualChest){ public static HopperGui confirmBreakGui(Block block, VirtualChest virtualChest){
HopperGui gui = new HopperGui(Messages.getAsString("menu.destroy-confirmation.title")); HopperGui gui = new HopperGui(LangManager.getLegacyString("menu.destroy-confirmation.title"));
OutlinePane pane = new OutlinePane(0,0, 5, 1); OutlinePane pane = new OutlinePane(0,0, 5, 1);
gui.setOnGlobalClick(inventoryClickEvent -> { gui.setOnGlobalClick(inventoryClickEvent -> {
@ -192,11 +192,11 @@ public class VirtualChestLogic implements Listener {
}); });
GuiItem confirmButton = new GuiItemBuilder(Material.LIME_WOOL) GuiItem confirmButton = new GuiItemBuilder(Material.LIME_WOOL)
.setName(Messages.get("menu.destroy-confirmation.confirm")) .setName(LangManager.get("menu.destroy-confirmation.confirm"))
.build(); .build();
GuiItem cancelButton = new GuiItemBuilder(Material.RED_WOOL) GuiItem cancelButton = new GuiItemBuilder(Material.RED_WOOL)
.setName(Messages.get("menu.destroy-confirmation.cancel")) .setName(LangManager.get("menu.destroy-confirmation.cancel"))
.build(); .build();
cancelButton.setAction(event -> { cancelButton.setAction(event -> {

@ -12,6 +12,10 @@ generic:
no-item: no-item:
self: "<red>Nemáš dostatek itemů" self: "<red>Nemáš dostatek itemů"
shop: "<red>Obchod nemá dostatek itemů" shop: "<red>Obchod nemá dostatek itemů"
island:
changed:
name: "<green>Jméno ostrova změněno."
description: "<green>Popis ostrova změněn."
region: region:
command: command:
created: "<green>Úspěšně vytvořeno." created: "<green>Úspěšně vytvořeno."
@ -110,21 +114,39 @@ menu:
buy: "<green>Koupit <amount>ks za <price>$" buy: "<green>Koupit <amount>ks za <price>$"
sell: "<yellow>Prodat <amount>ks za <price>$" sell: "<yellow>Prodat <amount>ks za <price>$"
gui: gui:
toggle:
on: "<green>Povoleno"
off: "<red>Zakázáno"
text-input:
confirm: "<green>Potvrdit"
cancel: "<red>Zrušit"
player-selector: player-selector:
title: "<aqua><bold>Vyber Hráče" title: "<aqua><bold>Vyber Hráče"
name-format: "<yellow><name>" name-format: "<yellow><name>"
back-button: back-button:
name: "<yellow>Zpět" name: "<yellow>Zpět"
lore : "" lore : ""
region: region:
title: "<aqua><bold>Nastavení pozemku" title: "<aqua><bold>Nastavení pozemku"
title-island: "<aqua><bold>Nastavení ostrovního pozemku" title-island: "<aqua><bold>Nastavení ostrovního pozemku"
add-member:
name: "<yellow><bold>Přidat člena"
description: "<gray>Přidej hráče, jenž dostane<br> další práva na pozemku"
remove-member:
name: "<yellow><bold>Odebrat člena"
description: "<gray>Odstranit člena<br>z pozemku"
name-island: name-island:
name: "<yellow><bold>Změnit název ostrova" name: "<yellow><bold>Změnit název ostrova"
description: "<gray>Změní název jenž se<br>zobrauje ve výběru ostrovů" description: "<gray>Změní název jenž se<br>zobrauje ve výběru ostrovů"
input: "<yellow>Nový název"
description-island: description-island:
name: "<yellow><bold>Změnit popis ostrova" name: "<yellow><bold>Změnit popis ostrova"
description: "<gray>Změní popis jenž se<br>zobrauje ve výběru ostrovů" description: "<gray>Změní popis jenž se<br>zobrauje ve výběru ostrovů"
input: "<yellow>Nový popis"
visibility-island:
name: "<yellow><bold>Veřejný ostrov"
description: "<gray>Pokud je povoleno mohou hráči<br>tvůj ostrov najít v seznamu ostrovů"
error: error:
invalid-input: "<red>Vámi zadané hodnoty nejsou platné." invalid-input: "<red>Vámi zadané hodnoty nejsou platné."
all: "<green>Seznam guis: <yellow><1>, <2>" all: "<green>Seznam guis: <yellow><1>, <2>"

Loading…
Cancel
Save