wip: added persistent data tags on items
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
package eu.mhsl.minecraft.pixelblocks.listeners;
|
||||
|
||||
import eu.mhsl.minecraft.pixelblocks.PixelBlockItem;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class CraftPixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onCraftItem(CraftItemEvent event) {
|
||||
ItemStack craftedItem = event.getCurrentItem();
|
||||
Objects.requireNonNull(craftedItem);
|
||||
|
||||
ItemMeta craftedItemMeta = craftedItem.getItemMeta();
|
||||
String itemName = PlainTextComponentSerializer.plainText().serialize(craftedItemMeta.itemName());
|
||||
|
||||
if(!itemName.equals(PixelBlockItem.unusedBlockID.toString())) return;
|
||||
if(event.isShiftClick()) event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,8 @@ public class DiscoverRecipesListener implements Listener {
|
||||
public void shouldDiscover(InventoryClickEvent event) {
|
||||
ItemStack clickedItem = event.getCurrentItem();
|
||||
if(clickedItem == null) return;
|
||||
if(!List.of(Material.HEART_OF_THE_SEA, Material.GLOW_BERRIES).contains(clickedItem.getType())) return;
|
||||
if(!(event.getWhoClicked() instanceof Player player)) return;
|
||||
if(!List.of(Material.HEART_OF_THE_SEA, Material.END_CRYSTAL).contains(clickedItem.getType())) return;
|
||||
if(player.hasDiscoveredRecipe(PixelBlockItem.recipeKey)) return;
|
||||
PixelBlocksPlugin.plugin.getLogger().log(Level.INFO, String.format("%s unlocked tne PixelBlock recipe!", player.getName()));
|
||||
player.discoverRecipe(PixelBlockItem.recipeKey);
|
||||
|
||||
@@ -6,7 +6,7 @@ import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
|
||||
import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlockWorld;
|
||||
import eu.mhsl.minecraft.pixelblocks.utils.Direction;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
@@ -14,7 +14,6 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -22,15 +21,12 @@ public class PlacePixelBlockListener implements Listener {
|
||||
@EventHandler
|
||||
static void onBlockPlace(BlockPlaceEvent event) {
|
||||
ItemStack usedItem = event.getItemInHand();
|
||||
ItemMeta usedItemMeta = usedItem.getItemMeta();
|
||||
Component displayName = usedItemMeta.displayName();
|
||||
if(displayName == null) return;
|
||||
if(!displayName.toString().contains("Pixelblock")) return;
|
||||
if(!usedItemMeta.getEnchantmentGlintOverride()) return;
|
||||
PixelBlockItem.BlockInfo info = PixelBlockItem.getBlockInfo(usedItem);
|
||||
if(info == null) return;
|
||||
|
||||
World playerWorld = event.getPlayer().getWorld();
|
||||
if(PixelBlockWorld.isPixelWorld(playerWorld)) {
|
||||
event.getPlayer().sendMessage("In Pixelblöcken kann kein Pixelblock erstellt werden.");
|
||||
event.getPlayer().sendMessage(Component.text("In Pixelblöcken kann kein Pixelblock platziert werden.", NamedTextColor.RED));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
@@ -39,10 +35,9 @@ public class PlacePixelBlockListener implements Listener {
|
||||
playerWorld.getBlockAt(newBlockLocation).setType(Material.AIR);
|
||||
|
||||
Direction direction = Direction.vectorToDirection(event.getPlayer().getLocation().getDirection());
|
||||
String itemName = PlainTextComponentSerializer.plainText().serialize(usedItemMeta.itemName());
|
||||
|
||||
PixelBlock pixelBlock;
|
||||
if(itemName.equals(PixelBlockItem.unusedBlockID.toString())) {
|
||||
if(!info.hasOwner()) {
|
||||
pixelBlock = new PixelBlock(
|
||||
newBlockLocation,
|
||||
event.getPlayer().getUniqueId(),
|
||||
@@ -50,7 +45,7 @@ public class PlacePixelBlockListener implements Listener {
|
||||
direction
|
||||
);
|
||||
} else {
|
||||
UUID itemUUID = UUID.fromString(itemName);
|
||||
UUID itemUUID = info.id();
|
||||
pixelBlock = PixelBlocksPlugin.pixelBlocks.stream()
|
||||
.filter(block -> block.blockUUID.equals(itemUUID))
|
||||
.findFirst()
|
||||
|
||||
Reference in New Issue
Block a user