Merge pull request 'dev_gioth' (#6) from dev_gioth into master

Reviewed-on: #6
dev_gioth
jakub 9 months ago
commit d881cade87
  1. 9
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  2. 116
      src/main/java/xyz/soukup/ecoCraftCore/commands/GuiCommand.java
  3. 17
      src/main/java/xyz/soukup/ecoCraftCore/events/InventoryActionCancel.java
  4. 4
      src/main/java/xyz/soukup/ecoCraftCore/utilities/Messages.java
  5. 12
      src/main/resources/messages.yml

@ -9,13 +9,11 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import xyz.soukup.ecoCraftCore.commands.GuiCommand;
import xyz.soukup.ecoCraftCore.commands.MoneyCommand; import xyz.soukup.ecoCraftCore.commands.MoneyCommand;
import xyz.soukup.ecoCraftCore.commands.RulerCommand; import xyz.soukup.ecoCraftCore.commands.RulerCommand;
import xyz.soukup.ecoCraftCore.commands.ShopCommand; import xyz.soukup.ecoCraftCore.commands.ShopCommand;
import xyz.soukup.ecoCraftCore.events.PreparePlayer; import xyz.soukup.ecoCraftCore.events.*;
import xyz.soukup.ecoCraftCore.events.RulerMarking;
import xyz.soukup.ecoCraftCore.events.ShopLogic;
import xyz.soukup.ecoCraftCore.events.VirtualChestLogic;
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;
@ -98,6 +96,7 @@ public final class EcoCraftCore extends JavaPlugin {
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(ShopCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(ShopCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(MoneyCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(MoneyCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(GuiCommand.createCommand().build()));
} }
private void registerEvents(){ private void registerEvents(){
@ -107,6 +106,8 @@ public final class EcoCraftCore extends JavaPlugin {
pm.registerEvents(new VirtualChestLogic(), this); pm.registerEvents(new VirtualChestLogic(), this);
pm.registerEvents(new ShopLogic(), this); pm.registerEvents(new ShopLogic(), this);
pm.registerEvents(new PreparePlayer(), this); pm.registerEvents(new PreparePlayer(), this);
pm.registerEvents(new InventoryActionCancel(), this);
} }

@ -0,0 +1,116 @@
package xyz.soukup.ecoCraftCore.commands;
import com.mojang.brigadier.arguments.StringArgumentType;
import dev.triumphteam.gui.builder.item.ItemBuilder;
import dev.triumphteam.gui.guis.GuiItem;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.papermc.paper.command.brigadier.Commands;
import com.mojang.brigadier.context.CommandContext;
import xyz.soukup.ecoCraftCore.utilities.Messages;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
import dev.triumphteam.gui.guis.Gui;
import org.bukkit.entity.Player;
import org.bukkit.Material;
import java.util.HashMap;
import java.util.Map;
public class GuiCommand {
public static LiteralArgumentBuilder<CommandSourceStack> createCommand() {
return Commands.literal("gopen")
.then(Commands.argument("id", StringArgumentType.string())
.executes(GuiCommand::openGui))
.executes(GuiCommand::getAll);
}
private static int openGui(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
String guiId = context.getArgument("id", String.class);
if (!(commandSender instanceof Player)){
Messages.send(commandSender, "generic.error.not-player");
return 0;
}
Gui gui = getGui(guiId, false, commandSender); // Pokud najdeme gui vrátíme ho, pokud ne vrátíme default gui
gui.open((Player) commandSender);
return 1;
}
private static int getAll(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
if (!(commandSender instanceof Player)){
Messages.send(commandSender, "generic.error.not-player");
return 0;
}
getGui("", true, commandSender); // Pokud najdeme gui vrátíme ho, pokud ne vrátíme default gui
return 1;
}
private static Gui getGui(String guiId, Boolean getAll, CommandSender commandSender){
// Mapa gui objektů
Map<String, Gui> guiMap = new HashMap<>();
// Default gui
Gui gui1 = Gui.gui() // U custom gui dávat vždycky "GUI -" -> ../events/InventoryActionCancel
.title(Component.text("GUI - Default"))
.rows(6)
.create();
// Shop Admin gui
Gui shopAdminGui = Gui.gui()
.title(Messages.get("gui.shopadmin.title"))
.rows(3)
.create();
shopAdminGui.getFiller().fill(ItemBuilder.from(Material.BLACK_STAINED_GLASS_PANE)
.name(Messages.get("gui.shopadmin.items.background")).asGuiItem());
GuiItem deleteShop = ItemBuilder.from(Material.BARRIER).name(Messages.get("gui.shopadmin.items.deleteshop"))
.asGuiItem(event -> {
// Zde delete shop
});
GuiItem changeSellPrice = ItemBuilder.from(Material.OAK_SIGN).name(Messages.get("gui.shopadmin.items.changesellprice"))
.asGuiItem(event -> {
// Zde change sell price
});
GuiItem changeBuyPrice = ItemBuilder.from(Material.DARK_OAK_SIGN).name(Messages.get("gui.shopadmin.items.changebuyprice"))
.asGuiItem(event -> {
// Zde change buy price
});
GuiItem changeAmounts = ItemBuilder.from(Material.GOLD_BLOCK).name(Messages.get("gui.shopadmin.items.changeamounts"))
.asGuiItem(event -> {
// Zde change amounts
});
shopAdminGui.setItem(22, deleteShop);
shopAdminGui.setItem(15, changeBuyPrice);
shopAdminGui.setItem(11, changeSellPrice);
shopAdminGui.setItem(13, changeAmounts);
guiMap.put("default", gui1);
guiMap.put("shop-admin", shopAdminGui);
if (getAll){
printAll(guiMap, commandSender);
}
return guiMap.getOrDefault(guiId, gui1);
}
private static void printAll(Map<String, Gui> guiMap, CommandSender commandSender){
HashMap<String, String> stringGuis = new HashMap<>();
int index = 1;
for (Map.Entry<String, Gui> entry : guiMap.entrySet()) {
String guiName = entry.getKey();
stringGuis.put(String.valueOf(index), guiName);
index++; // Každý číslo je placeholder v messages, pokud se změní počet gui musí se editnout i messages.yml
}
Messages.send(commandSender, "gui.all", stringGuis);
}
}

@ -0,0 +1,17 @@
package xyz.soukup.ecoCraftCore.events;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
public class InventoryActionCancel implements Listener {
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getView().getTitle().contains("GUI -")) {
if (!ClickType.valueOf(event.getClick().name()).toString().isEmpty()) {
event.setCancelled(true);
}
}
}
}

@ -40,6 +40,10 @@ public class Messages {
return MiniMessage.miniMessage().deserialize(string); return MiniMessage.miniMessage().deserialize(string);
} }
public static String getAsString(String key){
return MiniMessage.miniMessage().serialize(Messages.get(key));
}
public static Component get(String key, HashMap<String, String> placeholders){ public static Component get(String key, HashMap<String, String> placeholders){
String string = getString(key); String string = getString(key);

@ -46,4 +46,14 @@ marker:
menu: menu:
shop: shop:
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:
all: "<green>Seznam guis: <yellow><1>, <2>"
shopadmin:
title: "GUI - <dark_green>Shop Admin"
items:
background: " "
deleteshop: "<!italic><red>Smazat Obchod"
changesellprice: "<!italic><dark_green>Změnit Prodávající Cenu"
changebuyprice: "<!italic><gold>Změnit Kupující Cenu"
changeamounts: "<!italic><grey>Změnit Množství <dark_green>Prodeje <grey>a <gold>Výkupu"

Loading…
Cancel
Save