diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java index 82b8e11..ad1b6bb 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java @@ -26,7 +26,8 @@ public class RulerCommand { } Player player = (Player) commandSender; - ItemStack itemStack = PDC.setItemStackBoolean(new ItemStack(Material.BLAZE_ROD), "ruler", true); + ItemStack itemStack = new ItemStack(Material.BLAZE_ROD); + PDC.set(itemStack, "ruler", true); player.getInventory().addItem(itemStack); diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java index c6cd9b8..1fccd48 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java @@ -5,7 +5,11 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; -import org.eclipse.sisu.inject.TypeArguments; +import org.bukkit.Location; +import org.bukkit.block.Chest; +import org.bukkit.block.Sign; +import org.bukkit.entity.Player; +import xyz.soukup.ecoCraftCore.events.RulerMarking; public class ShopCommand { public static LiteralArgumentBuilder createCommand() { @@ -13,29 +17,40 @@ public class ShopCommand { .then(Commands.argument("amount", IntegerArgumentType.integer(1)) .then(Commands.literal("buy") .then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F)) - .executes(ShopCommand::createBuyShop) + .executes(ShopCommand::createShop) .then(Commands.literal("sell") .then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F)) - .executes(ShopCommand::createBuyAndSellShop))))) + .executes(ShopCommand::createShop))))) .then(Commands.literal("sell") .then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F)) - .executes(ShopCommand::createSellShop) + .executes(ShopCommand::createShop) .then(Commands.literal("buy") .then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F)) - .executes(ShopCommand::createBuyAndSellShop)))))); + .executes(ShopCommand::createShop)))))); } - private static int createBuyShop(CommandContext ctx){ + private static int createShop(CommandContext ctx){ + CommandSourceStack source = ctx.getSource(); + + if (!(source.getSender() instanceof Player player)){ + source.getSender().sendPlainMessage("nejsi hrač"); + return 0; + } + + Chest chest = RulerMarking.chests.get(player); + Sign sign = RulerMarking.signs.get(player); + Integer amount = ctx.getArgument("amount", Integer.class); + Float buyPrice = ctx.getArgument("buy_price", Float.class); + Float sellPrice = ctx.getArgument("sell_price", Float.class); + + if (sign == null || chest == null){ + player.sendPlainMessage("nemáš označeno"); + return 0; + } + ctx.getSource().getSender().sendPlainMessage("buy"); return 1; } - private static int createSellShop(CommandContext ctx){ - ctx.getSource().getSender().sendPlainMessage("sell"); - return 1; - } - private static int createBuyAndSellShop(CommandContext ctx){ - ctx.getSource().getSender().sendPlainMessage("buy and sell"); - return 1; - } + } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java index 1fd0b49..4d691b3 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java @@ -1,6 +1,5 @@ package xyz.soukup.ecoCraftCore.events; -import org.bukkit.BlockChangeDelegate; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.block.Chest; @@ -16,10 +15,10 @@ import java.util.HashMap; public class RulerMarking implements Listener { - public static HashMap primary_locations = new HashMap<>(); - public static HashMap secondary_locations = new HashMap<>(); - public static HashMap sign_locations = new HashMap<>(); - public static HashMap storage_locations = new HashMap<>(); + public static HashMap primaryLocations = new HashMap<>(); + public static HashMap secondaryLocations = new HashMap<>(); + public static HashMap signs = new HashMap<>(); + public static HashMap chests = new HashMap<>(); @EventHandler public void playerInteract(PlayerInteractEvent event){ @@ -32,7 +31,7 @@ public class RulerMarking implements Listener { return; } - Boolean isRuler = PDC.retrieveBooleanFromItemStack(itemStack, "ruler"); + Boolean isRuler = PDC.getBoolean(itemStack, "ruler"); if (isRuler == null || !isRuler) { return; @@ -40,26 +39,26 @@ public class RulerMarking implements Listener { event.setCancelled(true); - if (block.getState() instanceof Chest){ - storage_locations.put(event.getPlayer(), block.getLocation()); + if (block.getState() instanceof Chest chest){ + chests.put(event.getPlayer(), chest); event.getPlayer().sendMessage("pozice truhly nastavena"); return; } - if (block.getState() instanceof Sign){ - sign_locations.put(event.getPlayer(), block.getLocation()); + if (block.getState() instanceof Sign sign){ + signs.put(event.getPlayer(), sign); event.getPlayer().sendMessage("pozice cedule nastavena"); return; } switch (event.getAction()){ case LEFT_CLICK_BLOCK -> { - primary_locations.put(event.getPlayer(), block.getLocation()); + primaryLocations.put(event.getPlayer(), block.getLocation()); event.getPlayer().sendMessage("první pozice nastavena"); return; } case RIGHT_CLICK_BLOCK -> { - secondary_locations.put(event.getPlayer(), block.getLocation()); + secondaryLocations.put(event.getPlayer(), block.getLocation()); event.getPlayer().sendMessage("druhá pozice nastavena"); return; } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/utilities/PDC.java b/src/main/java/xyz/soukup/ecoCraftCore/utilities/PDC.java index 564b91d..90ab34c 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/utilities/PDC.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/utilities/PDC.java @@ -4,42 +4,50 @@ import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataHolder; import org.bukkit.persistence.PersistentDataType; @SuppressWarnings({"unchecked", "rawtypes"}) public class PDC { - public static ItemStack setItemStackString(ItemStack itemStack, String key, String value){ - return setItemStack(itemStack, key, value, PersistentDataType.STRING); + public static void set(ItemStack itemStack, String key, String value){ + set(itemStack, key, value, PersistentDataType.STRING); } - public static ItemStack setItemStackBoolean(ItemStack itemStack, String key, Boolean value){ - return setItemStack(itemStack, key, value, PersistentDataType.BOOLEAN); + public static void set(ItemStack itemStack, String key, Boolean value){ + set(itemStack, key, value, PersistentDataType.BOOLEAN); } - public static Boolean retrieveBooleanFromItemStack(ItemStack itemStack, String key){ - return (Boolean) retrieveFromItemStack(itemStack, key, PersistentDataType.BOOLEAN); + public static Boolean getBoolean(ItemStack itemStack, String key){ + return (Boolean) get(itemStack, key, PersistentDataType.BOOLEAN); } - public static String retrieveStringFromItemStack(ItemStack itemStack, String key){ - return (String) retrieveFromItemStack(itemStack, key, PersistentDataType.STRING); + public static String getString(ItemStack itemStack, String key){ + return (String) get(itemStack, key, PersistentDataType.STRING); } - private static Object retrieveFromItemStack(ItemStack itemStack, String key, PersistentDataType persistentDataType){ + private static Object get(ItemStack itemStack, String key, PersistentDataType persistentDataType){ ItemMeta itemMeta = itemStack.getItemMeta(); - PersistentDataContainer persistentDataContainer = itemMeta.getPersistentDataContainer(); + return get(itemMeta, key, persistentDataType); + } + private static Object get(PersistentDataHolder persistentDataHolder, String key, PersistentDataType persistentDataType){ + PersistentDataContainer persistentDataContainer = persistentDataHolder.getPersistentDataContainer(); NamespacedKey namespacedKey = new NamespacedKey("ecc", key); - return persistentDataContainer.get(namespacedKey, persistentDataType); } - private static ItemStack setItemStack(ItemStack itemStack, String key, Object value, PersistentDataType persistentDataType){ + private static void set(ItemStack itemStack, String key, Object value, PersistentDataType persistentDataType){ ItemMeta itemMeta = itemStack.getItemMeta(); - PersistentDataContainer persistentDataContainer = itemMeta.getPersistentDataContainer(); + set(itemMeta, key, value, persistentDataType); + itemStack.setItemMeta(itemMeta); + + } + private static void set(PersistentDataHolder persistentDataHolder, String key, Object value, PersistentDataType persistentDataType){ + PersistentDataContainer persistentDataContainer = persistentDataHolder.getPersistentDataContainer(); NamespacedKey namespacedKey = new NamespacedKey("ecc", key); persistentDataContainer.set(namespacedKey, persistentDataType, value); - itemStack.setItemMeta(itemMeta); - return itemStack; } + + }