From 3d7562061f2ae456b4c883ea7c06d16c591262b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20F?= Date: Fri, 3 Jul 2020 15:23:40 +0100 Subject: [PATCH] Add persistance to beehive population --- .../java/com/tomff/beesplus/BeesPlus.java | 2 + .../beesplus/handlers/BeehiveHandler.java | 48 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/com/tomff/beesplus/handlers/BeehiveHandler.java diff --git a/src/main/java/com/tomff/beesplus/BeesPlus.java b/src/main/java/com/tomff/beesplus/BeesPlus.java index d78f1e4..b260bc0 100644 --- a/src/main/java/com/tomff/beesplus/BeesPlus.java +++ b/src/main/java/com/tomff/beesplus/BeesPlus.java @@ -7,6 +7,7 @@ import com.tomff.beesplus.core.items.CustomItemManager; import com.tomff.beesplus.core.migrations.AddField; import com.tomff.beesplus.core.migrations.Migration; import com.tomff.beesplus.core.migrations.MigrationsExecutor; +import com.tomff.beesplus.handlers.BeehiveHandler; import com.tomff.beesplus.handlers.DamageHandler; import com.tomff.beesplus.handlers.RightClickHandler; import com.tomff.beesplus.items.*; @@ -36,6 +37,7 @@ public class BeesPlus extends JavaPlugin { customItemManager = new CustomItemManager(this); getServer().getPluginManager().registerEvents(new GuiHandler(this), this); + getServer().getPluginManager().registerEvents(new BeehiveHandler(), this); getServer().getPluginManager().registerEvents(new RightClickHandler(this), this); if (!loadLocale()) { diff --git a/src/main/java/com/tomff/beesplus/handlers/BeehiveHandler.java b/src/main/java/com/tomff/beesplus/handlers/BeehiveHandler.java new file mode 100644 index 0000000..58aaec1 --- /dev/null +++ b/src/main/java/com/tomff/beesplus/handlers/BeehiveHandler.java @@ -0,0 +1,48 @@ +package com.tomff.beesplus.handlers; + +import org.bukkit.Material; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Item; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockDropItemEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BlockStateMeta; + +public class BeehiveHandler implements Listener { + + @EventHandler + public void onBeeHiveBreak(BlockDropItemEvent event) { + BlockState blockState = event.getBlockState(); + Material blockType = blockState.getType(); + + if (blockType != Material.BEEHIVE) { + return; + } + + if (event.getItems().size() == 0) { + return; + } + + event.getItems() + .stream() + .filter(this::validBeehive) + .findFirst() + .ifPresent(item -> saveState(blockState, item)); + } + + private boolean validBeehive(Item item) { + ItemStack itemStack = item.getItemStack(); + + return (!itemStack.hasItemMeta() && itemStack.getType() == Material.BEEHIVE); + } + + private void saveState(BlockState state, Item item) { + ItemStack itemStack = item.getItemStack(); + BlockStateMeta itemMeta = (BlockStateMeta) itemStack.getItemMeta(); + + itemMeta.setBlockState(state); + itemStack.setItemMeta(itemMeta); + item.setItemStack(itemStack); + } +}