9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-28 03:19:15 +00:00

improve vanilla crop interactions

This commit is contained in:
XiaoMoMi
2024-09-05 02:07:27 +08:00
parent 1a6a59a616
commit 577cd7cb10
10 changed files with 82 additions and 18 deletions

View File

@@ -22,7 +22,6 @@ import net.momirealms.customcrops.api.action.ActionManager;
import net.momirealms.customcrops.api.context.Context;
import net.momirealms.customcrops.api.context.ContextKeys;
import net.momirealms.customcrops.api.core.block.CropBlock;
import net.momirealms.customcrops.api.core.block.PotBlock;
import net.momirealms.customcrops.api.core.mechanic.crop.BoneMeal;
import net.momirealms.customcrops.api.core.mechanic.crop.CropConfig;
import net.momirealms.customcrops.api.core.mechanic.crop.CropStageConfig;
@@ -43,6 +42,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -109,9 +109,14 @@ public abstract class AbstractCustomEventListener implements Listener {
return;
Block block = event.getClickedBlock();
assert block != null;
if (blocks.contains(block.getType())) {
Material type = block.getType();
if (blocks.contains(type)) {
return;
}
ItemStack itemStack = event.getItem();
if (itemStack != null && itemStack.getType() == Material.BONE_MEAL && ConfigManager.overriddenCrops().contains(type)) {
event.setUseItemInHand(Event.Result.DENY);
}
this.itemManager.handlePlayerInteractBlock(
event.getPlayer(),
block,
@@ -145,6 +150,10 @@ public abstract class AbstractCustomEventListener implements Listener {
if (blocks.contains(block.getType())) {
return;
}
if (ConfigManager.overriddenCrops().contains(block.getType())) {
event.setCancelled(true);
return;
}
this.itemManager.handlePlayerPlace(
event.getPlayer(),
block.getLocation(),
@@ -161,6 +170,9 @@ public abstract class AbstractCustomEventListener implements Listener {
if (blocks.contains(block.getType())) {
return;
}
if (ConfigManager.overriddenCrops().contains(block.getType())) {
event.setDropItems(false);
}
this.itemManager.handlePlayerBreak(
event.getPlayer(),
block.getLocation(),
@@ -318,6 +330,13 @@ public abstract class AbstractCustomEventListener implements Listener {
}
}
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent event) {
if (ConfigManager.overriddenCrops().contains(event.getBlock().getType())) {
event.setCancelled(true);
}
}
@EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH)
public void onDispenser(BlockDispenseEvent event) {
Block block = event.getBlock();

View File

@@ -28,6 +28,7 @@ import net.momirealms.customcrops.api.util.PluginUtils;
import net.momirealms.customcrops.common.config.ConfigLoader;
import net.momirealms.customcrops.common.plugin.feature.Reloadable;
import net.momirealms.customcrops.common.util.Pair;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.io.*;
@@ -70,6 +71,8 @@ public abstract class ConfigManager implements ConfigLoader, Reloadable {
protected boolean disableMoistureMechanic;
protected HashMap<String, Double> offsets = new HashMap<>();
protected HashSet<Material> overriddenCrops = new HashSet<>();
public ConfigManager(BukkitCustomCropsPlugin plugin) {
this.plugin = plugin;
instance = this;
@@ -163,6 +166,10 @@ public abstract class ConfigManager implements ConfigLoader, Reloadable {
return instance.disableMoistureMechanic;
}
public static Set<Material> overriddenCrops() {
return instance.overriddenCrops;
}
@Override
public YamlDocument loadConfig(String filePath) {
return loadConfig(filePath, '.');

View File

@@ -17,7 +17,6 @@
package net.momirealms.customcrops.api.core.block;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.BukkitCustomCropsPlugin;
import net.momirealms.customcrops.api.core.BuiltInBlockMechanics;
import net.momirealms.customcrops.api.core.ConfigManager;
@@ -30,6 +29,7 @@ import net.momirealms.customcrops.api.core.wrapper.WrappedPlaceEvent;
import net.momirealms.customcrops.api.event.GreenhouseGlassBreakEvent;
import net.momirealms.customcrops.api.event.GreenhouseGlassInteractEvent;
import net.momirealms.customcrops.api.event.GreenhouseGlassPlaceEvent;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.util.EventUtils;
import java.util.Optional;

View File

@@ -18,13 +18,14 @@
package net.momirealms.customcrops.api.core.block;
import com.flowpowered.nbt.*;
import com.flowpowered.nbt.Tag;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.BukkitCustomCropsPlugin;
import net.momirealms.customcrops.api.action.ActionManager;
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.BuiltInBlockMechanics;
import net.momirealms.customcrops.api.core.ConfigManager;
import net.momirealms.customcrops.api.core.ExistenceForm;
import net.momirealms.customcrops.api.core.Registries;
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.fertilizer.Fertilizer;
@@ -37,17 +38,18 @@ import net.momirealms.customcrops.api.core.wrapper.WrappedBreakEvent;
import net.momirealms.customcrops.api.core.wrapper.WrappedInteractEvent;
import net.momirealms.customcrops.api.core.wrapper.WrappedPlaceEvent;
import net.momirealms.customcrops.api.event.*;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.misc.water.WateringMethod;
import net.momirealms.customcrops.api.requirement.RequirementManager;
import net.momirealms.customcrops.api.util.EventUtils;
import net.momirealms.customcrops.api.util.LocationUtils;
import net.momirealms.customcrops.api.util.PlayerUtils;
import net.momirealms.customcrops.api.util.StringUtils;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Farmland;
import org.bukkit.entity.Player;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;

View File

@@ -17,7 +17,6 @@
package net.momirealms.customcrops.api.core.block;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.BukkitCustomCropsPlugin;
import net.momirealms.customcrops.api.core.BuiltInBlockMechanics;
import net.momirealms.customcrops.api.core.ConfigManager;
@@ -30,6 +29,7 @@ import net.momirealms.customcrops.api.core.wrapper.WrappedPlaceEvent;
import net.momirealms.customcrops.api.event.ScarecrowBreakEvent;
import net.momirealms.customcrops.api.event.ScarecrowInteractEvent;
import net.momirealms.customcrops.api.event.ScarecrowPlaceEvent;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.util.EventUtils;
import java.util.Optional;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customcrops.api.core.block;
import com.flowpowered.nbt.IntTag;
import com.flowpowered.nbt.Tag;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.BukkitCustomCropsPlugin;
import net.momirealms.customcrops.api.action.ActionManager;
import net.momirealms.customcrops.api.context.Context;
@@ -37,6 +36,7 @@ import net.momirealms.customcrops.api.event.SprinklerBreakEvent;
import net.momirealms.customcrops.api.event.SprinklerFillEvent;
import net.momirealms.customcrops.api.event.SprinklerInteractEvent;
import net.momirealms.customcrops.api.event.SprinklerPlaceEvent;
import net.momirealms.customcrops.api.misc.NamedTextColor;
import net.momirealms.customcrops.api.misc.water.WateringMethod;
import net.momirealms.customcrops.api.requirement.RequirementManager;
import net.momirealms.customcrops.api.util.EventUtils;

View File

@@ -18,7 +18,6 @@
package net.momirealms.customcrops.api.core.mechanic.pot;
import net.momirealms.customcrops.api.action.Action;
import net.momirealms.customcrops.api.core.ExistenceForm;
import net.momirealms.customcrops.api.core.mechanic.fertilizer.FertilizerType;
import net.momirealms.customcrops.api.core.world.CustomCropsBlockState;
import net.momirealms.customcrops.api.misc.water.WaterBar;