PDC Upgrade

pull/6/head
= 10 months ago
parent ec07253263
commit ca724131e8
  1. 3
      src/main/java/xyz/soukup/ecoCraftCore/commands/RulerCommand.java
  2. 41
      src/main/java/xyz/soukup/ecoCraftCore/commands/ShopCommand.java
  3. 23
      src/main/java/xyz/soukup/ecoCraftCore/events/RulerMarking.java
  4. 38
      src/main/java/xyz/soukup/ecoCraftCore/utilities/PDC.java

@ -26,7 +26,8 @@ public class RulerCommand {
} }
Player player = (Player) commandSender; 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); player.getInventory().addItem(itemStack);

@ -5,7 +5,11 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.CommandSourceStack;
import io.papermc.paper.command.brigadier.Commands; 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 class ShopCommand {
public static LiteralArgumentBuilder<CommandSourceStack> createCommand() { public static LiteralArgumentBuilder<CommandSourceStack> createCommand() {
@ -13,29 +17,40 @@ public class ShopCommand {
.then(Commands.argument("amount", IntegerArgumentType.integer(1)) .then(Commands.argument("amount", IntegerArgumentType.integer(1))
.then(Commands.literal("buy") .then(Commands.literal("buy")
.then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F)) .then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F))
.executes(ShopCommand::createBuyShop) .executes(ShopCommand::createShop)
.then(Commands.literal("sell") .then(Commands.literal("sell")
.then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F)) .then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F))
.executes(ShopCommand::createBuyAndSellShop))))) .executes(ShopCommand::createShop)))))
.then(Commands.literal("sell") .then(Commands.literal("sell")
.then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F)) .then(Commands.argument("sell_price", FloatArgumentType.floatArg(0.1F))
.executes(ShopCommand::createSellShop) .executes(ShopCommand::createShop)
.then(Commands.literal("buy") .then(Commands.literal("buy")
.then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F)) .then(Commands.argument("buy_price", FloatArgumentType.floatArg(0.1F))
.executes(ShopCommand::createBuyAndSellShop)))))); .executes(ShopCommand::createShop))))));
} }
private static int createBuyShop(CommandContext<CommandSourceStack> ctx){ private static int createShop(CommandContext<CommandSourceStack> ctx){
ctx.getSource().getSender().sendPlainMessage("buy"); CommandSourceStack source = ctx.getSource();
return 1;
if (!(source.getSender() instanceof Player player)){
source.getSender().sendPlainMessage("nejsi hrač");
return 0;
} }
private static int createSellShop(CommandContext<CommandSourceStack> ctx){
ctx.getSource().getSender().sendPlainMessage("sell"); Chest chest = RulerMarking.chests.get(player);
return 1; 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;
} }
private static int createBuyAndSellShop(CommandContext<CommandSourceStack> ctx){
ctx.getSource().getSender().sendPlainMessage("buy and sell"); ctx.getSource().getSender().sendPlainMessage("buy");
return 1; return 1;
} }
} }

@ -1,6 +1,5 @@
package xyz.soukup.ecoCraftCore.events; package xyz.soukup.ecoCraftCore.events;
import org.bukkit.BlockChangeDelegate;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
@ -16,10 +15,10 @@ import java.util.HashMap;
public class RulerMarking implements Listener { public class RulerMarking implements Listener {
public static HashMap<Player, Location> primary_locations = new HashMap<>(); public static HashMap<Player, Location> primaryLocations = new HashMap<>();
public static HashMap<Player, Location> secondary_locations = new HashMap<>(); public static HashMap<Player, Location> secondaryLocations = new HashMap<>();
public static HashMap<Player, Location> sign_locations = new HashMap<>(); public static HashMap<Player, Sign> signs = new HashMap<>();
public static HashMap<Player, Location> storage_locations = new HashMap<>(); public static HashMap<Player, Chest> chests = new HashMap<>();
@EventHandler @EventHandler
public void playerInteract(PlayerInteractEvent event){ public void playerInteract(PlayerInteractEvent event){
@ -32,7 +31,7 @@ public class RulerMarking implements Listener {
return; return;
} }
Boolean isRuler = PDC.retrieveBooleanFromItemStack(itemStack, "ruler"); Boolean isRuler = PDC.getBoolean(itemStack, "ruler");
if (isRuler == null || !isRuler) { if (isRuler == null || !isRuler) {
return; return;
@ -40,26 +39,26 @@ public class RulerMarking implements Listener {
event.setCancelled(true); event.setCancelled(true);
if (block.getState() instanceof Chest){ if (block.getState() instanceof Chest chest){
storage_locations.put(event.getPlayer(), block.getLocation()); chests.put(event.getPlayer(), chest);
event.getPlayer().sendMessage("pozice truhly nastavena"); event.getPlayer().sendMessage("pozice truhly nastavena");
return; return;
} }
if (block.getState() instanceof Sign){ if (block.getState() instanceof Sign sign){
sign_locations.put(event.getPlayer(), block.getLocation()); signs.put(event.getPlayer(), sign);
event.getPlayer().sendMessage("pozice cedule nastavena"); event.getPlayer().sendMessage("pozice cedule nastavena");
return; return;
} }
switch (event.getAction()){ switch (event.getAction()){
case LEFT_CLICK_BLOCK -> { case LEFT_CLICK_BLOCK -> {
primary_locations.put(event.getPlayer(), block.getLocation()); primaryLocations.put(event.getPlayer(), block.getLocation());
event.getPlayer().sendMessage("první pozice nastavena"); event.getPlayer().sendMessage("první pozice nastavena");
return; return;
} }
case RIGHT_CLICK_BLOCK -> { case RIGHT_CLICK_BLOCK -> {
secondary_locations.put(event.getPlayer(), block.getLocation()); secondaryLocations.put(event.getPlayer(), block.getLocation());
event.getPlayer().sendMessage("druhá pozice nastavena"); event.getPlayer().sendMessage("druhá pozice nastavena");
return; return;
} }

@ -4,42 +4,50 @@ import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataHolder;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
public class PDC { public class PDC {
public static ItemStack setItemStackString(ItemStack itemStack, String key, String value){ public static void set(ItemStack itemStack, String key, String value){
return setItemStack(itemStack, key, value, PersistentDataType.STRING); set(itemStack, key, value, PersistentDataType.STRING);
} }
public static ItemStack setItemStackBoolean(ItemStack itemStack, String key, Boolean value){ public static void set(ItemStack itemStack, String key, Boolean value){
return setItemStack(itemStack, key, value, PersistentDataType.BOOLEAN); set(itemStack, key, value, PersistentDataType.BOOLEAN);
} }
public static Boolean retrieveBooleanFromItemStack(ItemStack itemStack, String key){ public static Boolean getBoolean(ItemStack itemStack, String key){
return (Boolean) retrieveFromItemStack(itemStack, key, PersistentDataType.BOOLEAN); return (Boolean) get(itemStack, key, PersistentDataType.BOOLEAN);
} }
public static String retrieveStringFromItemStack(ItemStack itemStack, String key){ public static String getString(ItemStack itemStack, String key){
return (String) retrieveFromItemStack(itemStack, key, PersistentDataType.STRING); 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(); 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); NamespacedKey namespacedKey = new NamespacedKey("ecc", key);
return persistentDataContainer.get(namespacedKey, persistentDataType); 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(); 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); NamespacedKey namespacedKey = new NamespacedKey("ecc", key);
persistentDataContainer.set(namespacedKey, persistentDataType, value); persistentDataContainer.set(namespacedKey, persistentDataType, value);
itemStack.setItemMeta(itemMeta);
return itemStack;
} }
} }

Loading…
Cancel
Save