diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java b/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java index 66239a3..d52e96d 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java @@ -54,16 +54,17 @@ import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public abstract class AbstractCustomEventListener implements Listener { private final HashSet entities = new HashSet<>(); private final HashSet blocks = new HashSet<>(); + protected Set ignoredMaterials() { + return blocks; + } + protected final AbstractItemManager itemManager; public AbstractCustomEventListener(AbstractItemManager itemManager) { @@ -108,7 +109,7 @@ public abstract class AbstractCustomEventListener implements Listener { Block block = event.getClickedBlock(); assert block != null; Material type = block.getType(); - if (blocks.contains(type)) { + if (ignoredMaterials().contains(type)) { return; } ItemStack itemStack = event.getItem(); @@ -149,7 +150,7 @@ public abstract class AbstractCustomEventListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onPlaceBlock(BlockPlaceEvent event) { Block block = event.getBlock(); - if (blocks.contains(block.getType())) { + if (ignoredMaterials().contains(block.getType())) { return; } if (ConfigManager.overriddenCrops().contains(block.getType())) { @@ -169,7 +170,7 @@ public abstract class AbstractCustomEventListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onBreakBlock(BlockBreakEvent event) { Block block = event.getBlock(); - if (blocks.contains(block.getType())) { + if (ignoredMaterials().contains(block.getType())) { return; } if (ConfigManager.overriddenCrops().contains(block.getType())) { diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/block/CropBlock.java b/api/src/main/java/net/momirealms/customcrops/api/core/block/CropBlock.java index 6183096..3135a2a 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/block/CropBlock.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/block/CropBlock.java @@ -48,7 +48,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.CompletableFuture; diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/item/SeedItem.java b/api/src/main/java/net/momirealms/customcrops/api/core/item/SeedItem.java index cd99223..c6442ac 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/item/SeedItem.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/item/SeedItem.java @@ -23,6 +23,7 @@ import net.momirealms.customcrops.api.context.Context; import net.momirealms.customcrops.api.context.ContextKeys; import net.momirealms.customcrops.api.core.*; import net.momirealms.customcrops.api.core.block.CropBlock; +import net.momirealms.customcrops.api.core.block.PotBlock; import net.momirealms.customcrops.api.core.mechanic.crop.CropConfig; import net.momirealms.customcrops.api.core.mechanic.crop.CropStageConfig; import net.momirealms.customcrops.api.core.mechanic.pot.PotConfig; @@ -92,6 +93,9 @@ public class SeedItem extends AbstractCustomCropsItem { } final ItemStack itemInHand = event.itemInHand(); + // try getting or fixing pot data + ((PotBlock) BuiltInBlockMechanics.POT.mechanic()).fixOrGetState(world, pos3.add(0,-1,0), potConfig, event.relatedID()); + // create crop data CustomCropsBlockState state = BuiltInBlockMechanics.CROP.createBlockState(); CropBlock cropBlock = (CropBlock) state.type(); cropBlock.id(state, cropConfig.id()); diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java index d0f9e0b..aabdf5c 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java @@ -23,8 +23,6 @@ import net.momirealms.customcrops.api.core.SynchronizedCompoundMap; import net.momirealms.customcrops.api.core.block.CustomCropsBlock; import org.jetbrains.annotations.NotNull; -import java.util.Objects; - public class CustomCropsBlockStateImpl implements CustomCropsBlockState { private final SynchronizedCompoundMap compoundMap; diff --git a/compatibility-itemsadder-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/itemsadder_r1/ItemsAdderListener.java b/compatibility-itemsadder-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/itemsadder_r1/ItemsAdderListener.java index 64024ae..435e047 100644 --- a/compatibility-itemsadder-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/itemsadder_r1/ItemsAdderListener.java +++ b/compatibility-itemsadder-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/itemsadder_r1/ItemsAdderListener.java @@ -21,12 +21,31 @@ import dev.lone.itemsadder.api.Events.*; import net.momirealms.customcrops.api.core.AbstractCustomEventListener; import net.momirealms.customcrops.api.core.AbstractItemManager; import net.momirealms.customcrops.api.util.DummyCancellable; +import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.EquipmentSlot; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + public class ItemsAdderListener extends AbstractCustomEventListener { + private static final Set IGNORED = new HashSet<>( + List.of( + Material.NOTE_BLOCK, + Material.MUSHROOM_STEM, Material.BROWN_MUSHROOM_BLOCK, Material.RED_MUSHROOM_BLOCK, + Material.TRIPWIRE, + Material.CHORUS_PLANT + ) + ); + + @Override + protected Set ignoredMaterials() { + return IGNORED; + } + public ItemsAdderListener(AbstractItemManager itemManager) { super(itemManager); } diff --git a/compatibility-oraxen-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r1/OraxenListener.java b/compatibility-oraxen-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r1/OraxenListener.java index 4f957e8..beec986 100644 --- a/compatibility-oraxen-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r1/OraxenListener.java +++ b/compatibility-oraxen-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r1/OraxenListener.java @@ -28,10 +28,27 @@ import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockInteractEvent; import io.th0rgal.oraxen.api.events.stringblock.OraxenStringBlockPlaceEvent; import net.momirealms.customcrops.api.core.AbstractCustomEventListener; import net.momirealms.customcrops.api.core.AbstractItemManager; +import org.bukkit.Material; import org.bukkit.event.EventHandler; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + public class OraxenListener extends AbstractCustomEventListener { + private static final Set IGNORED = new HashSet<>( + List.of( + Material.NOTE_BLOCK, + Material.TRIPWIRE + ) + ); + + @Override + protected Set ignoredMaterials() { + return IGNORED; + } + public OraxenListener(AbstractItemManager itemManager) { super(itemManager); } diff --git a/compatibility-oraxen-r2/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r2/OraxenListener.java b/compatibility-oraxen-r2/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r2/OraxenListener.java index b5c7945..06401c4 100644 --- a/compatibility-oraxen-r2/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r2/OraxenListener.java +++ b/compatibility-oraxen-r2/src/main/java/net/momirealms/customcrops/bukkit/integration/custom/oraxen_r2/OraxenListener.java @@ -28,10 +28,27 @@ import io.th0rgal.oraxen.api.events.furniture.OraxenFurnitureInteractEvent; import io.th0rgal.oraxen.api.events.furniture.OraxenFurniturePlaceEvent; import net.momirealms.customcrops.api.core.AbstractCustomEventListener; import net.momirealms.customcrops.api.core.AbstractItemManager; +import org.bukkit.Material; import org.bukkit.event.EventHandler; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + public class OraxenListener extends AbstractCustomEventListener { + private static final Set IGNORED = new HashSet<>( + List.of( + Material.NOTE_BLOCK, + Material.TRIPWIRE + ) + ); + + @Override + protected Set ignoredMaterials() { + return IGNORED; + } + public OraxenListener(AbstractItemManager itemManager) { super(itemManager); }