fixed crafting advancement and crafting bug
This commit is contained in:
		| @@ -73,7 +73,8 @@ public final class Main extends JavaPlugin { | ||||
|             new PreventEntityPlacementListener(), | ||||
|             new DiscoverRecipesListener(), | ||||
|             new QuitWhileInPixelBlockListener(), | ||||
|             new PreventGrowthListener() | ||||
|             new PreventGrowthListener(), | ||||
|             new CraftPixelBlockListener() | ||||
|         }; | ||||
|  | ||||
|         for(Listener listener : listeners) { | ||||
|   | ||||
| @@ -25,6 +25,7 @@ public class PixelBlockItem { | ||||
|     public static final NamespacedKey recipeKey = new NamespacedKey(Main.plugin(), "pixelblock"); | ||||
|     public static NamespacedKey idProperty = new NamespacedKey(Main.plugin(), "id"); | ||||
|     public static NamespacedKey ownerProperty = new NamespacedKey(Main.plugin(), "owner"); | ||||
|     public static UUID emptyBlockUUID = UUID.fromString("98fdf0ae-c3ab-4ef7-ae25-efd518d600de"); | ||||
|  | ||||
|     public static final String itemTexture = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQ" + | ||||
|         "ubmV0L3RleHR1cmUvYzE5NGU5ZTc3NTdkMDZkNmY1ZTViZTg0NTQ4YTdjYjUyMTczZDY4Y2NmODAyZDIxMTI3NWQzMWNkYmEwYTA2ZSJ9fX0="; | ||||
| @@ -68,12 +69,13 @@ public class PixelBlockItem { | ||||
|         ItemStack item = HeadUtil.getCustomTextureHead(itemTexture); | ||||
|         ItemMeta meta = item.getItemMeta(); | ||||
|         meta.setMaxStackSize(1); | ||||
|         meta.itemName(Component.text(emptyBlockUUID.toString())); | ||||
|         meta.displayName(Component.text("Leerer Pixelblock")); | ||||
|         meta.lore(List.of( | ||||
|             Component.text("Der erste Spieler, der den Block platziert wird zum Besitzer des Blocks."), | ||||
|             Component.text("Klicke auf den gesetzten Block, um diesen zu bearbeiten!") | ||||
|         )); | ||||
|         meta.getPersistentDataContainer().set(idProperty, PersistentDataType.STRING, UUID.randomUUID().toString()); | ||||
|         meta.getPersistentDataContainer().set(idProperty, PersistentDataType.STRING, emptyBlockUUID.toString()); | ||||
|         item.setItemMeta(meta); | ||||
|         return item; | ||||
|     } | ||||
|   | ||||
| @@ -0,0 +1,30 @@ | ||||
| package eu.mhsl.minecraft.pixelblocks.listeners; | ||||
|  | ||||
| import eu.mhsl.minecraft.pixelblocks.PixelBlockItem; | ||||
| 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 org.bukkit.persistence.PersistentDataContainer; | ||||
| import org.bukkit.persistence.PersistentDataType; | ||||
|  | ||||
| import java.util.Objects; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class CraftPixelBlockListener implements Listener { | ||||
|     @EventHandler | ||||
|     public void onCraft(CraftItemEvent event) { | ||||
|         ItemStack result = event.getInventory().getResult(); | ||||
|         if(result == null) return; | ||||
|         ItemMeta itemMeta = result.getItemMeta(); | ||||
|         PersistentDataContainer dataContainer = itemMeta.getPersistentDataContainer(); | ||||
|         if(!dataContainer.has(PixelBlockItem.idProperty)) return; | ||||
|         String currentId = dataContainer.get(PixelBlockItem.idProperty, PersistentDataType.STRING); | ||||
|         Objects.requireNonNull(currentId); | ||||
|         if(!UUID.fromString(currentId).equals(PixelBlockItem.emptyBlockUUID)) return; | ||||
|  | ||||
|         dataContainer.set(PixelBlockItem.idProperty, PersistentDataType.STRING, UUID.randomUUID().toString()); | ||||
|         result.setItemMeta(itemMeta); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user