9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-25 18:09:28 +00:00
This commit is contained in:
Xiao-MoMi
2022-11-29 16:57:45 +08:00
parent 5a734476c4
commit 8d4d242822
17 changed files with 320 additions and 458 deletions

View File

@@ -17,6 +17,7 @@
package net.momirealms.customcrops.integrations.customplugin;
import net.momirealms.customcrops.api.crop.Crop;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.ItemFrame;
@@ -47,4 +48,12 @@ public interface CustomInterface {
boolean doesExist(String itemID);
boolean hasNextStage(String id);
String getNextStage(String id);
@Nullable
Crop getCropFromID(String id);
Location getFrameCropLocation(Location seedLoc);
}

View File

@@ -314,18 +314,6 @@ public abstract class HandlerP extends Function {
return false;
}
public boolean hasNextStage(String id) {
String[] crop = StringUtils.split(id,"_");
int nextStage = Integer.parseInt(crop[2]) + 1;
return customInterface.doesExist(crop[0] + "_" + crop[1] + "_" + nextStage);
}
public String getNextStage(String id) {
String[] crop = StringUtils.split(id,"_");
int nextStage = Integer.parseInt(crop[2]) + 1;
return crop[0] + "_" + crop[1] + "_" + nextStage;
}
public boolean fillWaterCan(String id, NBTItem nbtItem, ItemStack itemStack, Player player) {
WaterCan config = WaterCanConfig.CANS.get(id);
if (config != null) {
@@ -547,17 +535,6 @@ public abstract class HandlerP extends Function {
return !preActionEvent.isCancelled();
}
public Crop getCropFromID(String id) {
String crop;
if (id.contains(":")) {
crop = id.split(":")[1].split("_")[0];
}
else {
crop = id.split("_")[0];
}
return CropConfig.CROPS.get(crop);
}
protected boolean onInteractRipeCrop(Location location, Crop crop, Player player) {
CustomWorld customWorld = cropManager.getCustomWorld(location.getWorld());
@@ -582,16 +559,15 @@ public abstract class HandlerP extends Function {
CustomWorld customWorld = cropManager.getCustomWorld(seedLoc.getWorld());
if (customWorld == null) return false;
if (!MainConfig.OraxenHook) {
if (FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.5,0.5))) return false;
}
else {
if (FurnitureUtil.hasFurniture(seedLoc.clone().add(0.5,0.03125,0.5))) return false;
}
if (FurnitureUtil.hasFurniture(customInterface.getFrameCropLocation(seedLoc))) return false;
if (seedLoc.getBlock().getType() != Material.AIR) return false;
if (player != null) {
long time = System.currentTimeMillis();
if (time - (coolDown.getOrDefault(player, time - 100)) < 100) return false;
coolDown.put(player, time);
PlantingCondition plantingCondition = new PlantingCondition(seedLoc, player);
if (crop.getRequirements() != null) {
for (RequirementInterface requirement : crop.getRequirements()) {
@@ -617,13 +593,17 @@ public abstract class HandlerP extends Function {
}
if (MainConfig.limitation) {
if (MainConfig.cropMode && LimitationUtil.reachWireLimit(seedLoc)) {
if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitWire.replace("{max}", String.valueOf(MainConfig.wireAmount)));
return false;
if (MainConfig.cropMode) {
if (LimitationUtil.reachWireLimit(seedLoc)) {
if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitWire.replace("{max}", String.valueOf(MainConfig.wireAmount)));
return false;
}
}
if (!MainConfig.cropMode && LimitationUtil.reachFrameLimit(seedLoc)) {
if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitFrame.replace("{max}", String.valueOf(MainConfig.frameAmount)));
return false;
else {
if (LimitationUtil.reachFrameLimit(seedLoc)) {
if (player != null) AdventureUtil.playerMessage(player, MessageConfig.prefix + MessageConfig.limitFrame.replace("{max}", String.valueOf(MainConfig.frameAmount)));
return false;
}
}
}

View File

@@ -52,71 +52,57 @@ public class ItemsAdderFrameCropImpl implements CropModeInterface {
Chunk chunk = location.getChunk();
if (chunk.isEntitiesLoaded()) {
Location cropLoc = location.clone().add(0.5,0.5,0.5);
ItemFrame itemFrame = FurnitureUtil.getItemFrame(cropLoc);
if (itemFrame == null) return true;
String id = customInterface.getItemID(itemFrame.getItem());
if (id == null) return true;
if (id.equals(BasicItemConfig.deadCrop)) return true;
if (chunk.isEntitiesLoaded()) return false;
ItemFrame itemFrame = FurnitureUtil.getItemFrame(customInterface.getFrameCropLocation(location));
if (itemFrame == null) return true;
String cropId = StringUtils.split(id, ":")[1];
String[] cropNameList = StringUtils.split(cropId, "_");
String cropKey = cropNameList[0];
String id = customInterface.getItemID(itemFrame.getItem());
if (id == null || id.equals(BasicItemConfig.deadCrop)) return true;
Crop crop = CropConfig.CROPS.get(cropKey);
if (crop == null) return true;
if (MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
return true;
}
if (cropManager.isWrongSeason(location, crop.getSeasons())) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = id.substring(0, id.length() - cropNameList[2].length());
if (customInterface.doesExist(temp + nextStage)) {
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
if (fertilizer instanceof SpeedGrow speedGrow && Math.random() < speedGrow.getChance()) {
if (customInterface.doesExist(temp + (nextStage+1))) {
addStage(itemFrame, temp + (nextStage+1), crop.canRotate());
}
}
else if (certainGrow || Math.random() < MainConfig.dryGrowChance) {
addStage(itemFrame, temp + nextStage, crop.canRotate());
}
}
else {
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) {
chance += gigantic.getChance();
}
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeFurniture(itemFrame);
if (giganticCrop.isBlock()) {
customInterface.placeWire(location, giganticCrop.getBlockID());
}
else {
customInterface.placeFurniture(location, giganticCrop.getBlockID());
}
});
}
}
return true;
}
String[] cropNameList = StringUtils.split(StringUtils.split(id, ":")[1], "_");
Crop crop = CropConfig.CROPS.get(cropNameList[0]);
if (crop == null) return true;
if ((MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) || cropManager.isWrongSeason(location, crop.getSeasons())) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null || (!potID.equals(BasicItemConfig.wetPot) && !potID.equals(BasicItemConfig.dryPot))) return true;
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = id.substring(0, id.length() - cropNameList[2].length());
if (customInterface.doesExist(temp + nextStage)) {
if (fertilizer instanceof SpeedGrow speedGrow
&& Math.random() < speedGrow.getChance()
&& customInterface.doesExist(temp + (nextStage+1))
)
addStage(itemFrame, temp + (nextStage+1), crop.canRotate());
else if (certainGrow || Math.random() < MainConfig.dryGrowChance)
addStage(itemFrame, temp + nextStage, crop.canRotate());
return false;
}
else {
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) chance += gigantic.getChance();
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeFurniture(itemFrame);
if (giganticCrop.isBlock()) customInterface.placeWire(location, giganticCrop.getBlockID());
else customInterface.placeFurniture(location, giganticCrop.getBlockID());
});
}
}
return true;
}
return false;
}
private void addStage(ItemFrame itemFrame, String stage, boolean rotate) {

View File

@@ -69,45 +69,44 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
return;
}
if (namespacedID.contains("_stage_")) {
if (!canProceedAction(player, location)) return;
if (!namespacedID.equals(BasicItemConfig.deadCrop)) {
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (!hasNextStage(namespacedID)) {
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand.getType() != Material.AIR)) {
if (!AntiGrief.testBreak(player, entity.getLocation())) return;
if (!canProceedAction(player, entity.getLocation())) return;
CustomFurniture.remove(entity, false);
if (entity.isValid()) entity.remove();
this.onInteractRipeCrop(location, namespacedID, player);
return;
}
}
//has next stage
else if (MainConfig.enableBoneMeal && itemInHand.getType() == Material.BONE_MEAL) {
if (!AntiGrief.testPlace(player, location)) return;
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
if (Math.random() < MainConfig.boneMealChance) {
entity.getWorld().spawnParticle(MainConfig.boneMealSuccess, location.clone().add(0,0.5, 0),3,0.2,0.2,0.2);
if (SoundConfig.boneMeal.isEnable()) {
AdventureUtil.playerSound(
player,
SoundConfig.boneMeal.getSource(),
SoundConfig.boneMeal.getKey(),
1,1
);
}
CustomFurniture.remove(entity, false);
CustomFurniture.spawn(getNextStage(namespacedID), location.getBlock());
}
if (!namespacedID.contains("_stage_")) return;
if (!canProceedAction(player, location)) return;
if (!namespacedID.equals(BasicItemConfig.deadCrop)) {
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (!customInterface.hasNextStage(namespacedID)) {
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand.getType() != Material.AIR)) {
if (!AntiGrief.testBreak(player, entity.getLocation())) return;
if (!canProceedAction(player, entity.getLocation())) return;
customInterface.removeFurniture(entity);
if (entity.isValid()) entity.remove();
this.onInteractRipeCrop(location, namespacedID, player);
return;
}
}
if (!AntiGrief.testPlace(player, location)) return;
Location potLoc = location.clone().subtract(0, 1, 0).getBlock().getLocation();
super.tryMisc(player, player.getInventory().getItemInMainHand(), potLoc);
//has next stage
else if (MainConfig.enableBoneMeal && itemInHand.getType() == Material.BONE_MEAL) {
if (!AntiGrief.testPlace(player, location)) return;
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
if (Math.random() < MainConfig.boneMealChance) {
entity.getWorld().spawnParticle(MainConfig.boneMealSuccess, location.clone().add(0,0.5, 0),3,0.2,0.2,0.2);
if (SoundConfig.boneMeal.isEnable()) {
AdventureUtil.playerSound(
player,
SoundConfig.boneMeal.getSource(),
SoundConfig.boneMeal.getKey(),
1,1
);
}
customInterface.removeFurniture(entity);
customInterface.placeFurniture(location, customInterface.getNextStage(namespacedID));
}
return;
}
}
if (!AntiGrief.testPlace(player, location)) return;
Location potLoc = location.clone().subtract(0, 1, 0).getBlock().getLocation();
super.tryMisc(player, player.getInventory().getItemInMainHand(), potLoc);
}
public void onBreakFurniture(FurnitureBreakEvent event) {
@@ -132,7 +131,7 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
if (namespacedId.contains("_stage_")) {
if (namespacedId.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(namespacedId)) {
if (customInterface.hasNextStage(namespacedId)) {
super.onBreakUnripeCrop(location);
return;
}
@@ -140,17 +139,6 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
}
}
// Broken
// //This can only be pot
// public void onInteractBlock(CustomBlockInteractEvent event) {
// if (event.isCancelled()) return;
// String blockID = event.getNamespacedID();
// if (blockID.equals(BasicItemConfig.dryPot) || blockID.equals(BasicItemConfig.wetPot)) {
// Location potLoc = event.getBlockClicked().getLocation();
// super.tryMisc(event.getPlayer(), event.getItem(), potLoc);
// }
// }
@Override
public void onPlayerInteract(PlayerInteractEvent event) {
@@ -209,17 +197,13 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
Player player = event.getPlayer();
Location location = event.getBlock().getLocation();
if (!AntiGrief.testBreak(player, location)) {
return;
}
if (!AntiGrief.testBreak(player, location)) return;
if (!canProceedAction(player, location)) return;
if (namespacedId.equals(BasicItemConfig.dryPot)
|| namespacedId.equals(BasicItemConfig.wetPot)) {
|| namespacedId.equals(BasicItemConfig.wetPot)
) {
super.onBreakPot(location);
//Check if there's crop above
Location seedLocation = location.clone().add(0.5,1.5,0.5);
@@ -232,7 +216,7 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
CustomFurniture.remove(itemFrame, false);
if (itemFrame.isValid()) itemFrame.remove();
if (seedID.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(seedID)) {
if (customInterface.hasNextStage(seedID)) {
super.onBreakUnripeCrop(location);
return;
}
@@ -242,14 +226,12 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler {
}
private void onInteractRipeCrop(Location location, String id, Player player) {
Crop crop = getCropFromID(id);
Crop crop = customInterface.getCropFromID(id);
if (crop == null) return;
if (super.onInteractRipeCrop(location, crop, player)) return;
CustomFurniture customFurniture = CustomFurniture.spawn(crop.getReturnStage(), location.getBlock());
if (crop.canRotate() && customFurniture != null) {
if (customFurniture instanceof ItemFrame itemFrame) {
itemFrame.setRotation(FurnitureUtil.getRandomRotation());
}
if (crop.getReturnStage() != null) {
CustomFurniture customFurniture = CustomFurniture.spawn(crop.getReturnStage(), location.getBlock());
if (crop.canRotate() && customFurniture instanceof ItemFrame itemFrame) itemFrame.setRotation(FurnitureUtil.getRandomRotation());
}
}
}

View File

@@ -20,12 +20,17 @@ package net.momirealms.customcrops.integrations.customplugin.itemsadder;
import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTItem;
import dev.lone.itemsadder.api.CustomStack;
import dev.lone.itemsadder.api.Events.*;
import dev.lone.itemsadder.api.Events.CustomBlockBreakEvent;
import dev.lone.itemsadder.api.Events.FurnitureBreakEvent;
import dev.lone.itemsadder.api.Events.FurnitureInteractEvent;
import dev.lone.itemsadder.api.Events.FurniturePlaceSuccessEvent;
import net.kyori.adventure.key.Key;
import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.api.event.WaterPotEvent;
import net.momirealms.customcrops.config.*;
import net.momirealms.customcrops.config.BasicItemConfig;
import net.momirealms.customcrops.config.MainConfig;
import net.momirealms.customcrops.config.SoundConfig;
import net.momirealms.customcrops.config.WaterCanConfig;
import net.momirealms.customcrops.integrations.AntiGrief;
import net.momirealms.customcrops.integrations.customplugin.HandlerP;
import net.momirealms.customcrops.integrations.customplugin.itemsadder.listeners.ItemsAdderBlockListener;
@@ -34,7 +39,6 @@ import net.momirealms.customcrops.managers.CropManager;
import net.momirealms.customcrops.managers.CustomWorld;
import net.momirealms.customcrops.objects.WaterCan;
import net.momirealms.customcrops.utils.AdventureUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -208,20 +212,10 @@ public abstract class ItemsAdderHandler extends HandlerP {
return true;
}
@Override
public Crop getCropFromID(String namespacedID) {
String[] cropNameList = StringUtils.split(StringUtils.split(namespacedID, ":")[1], "_");
return CropConfig.CROPS.get(cropNameList[0]);
}
public void onBreakBlock(CustomBlockBreakEvent event) {
//null
}
public void onInteractBlock(CustomBlockInteractEvent event) {
//null
}
public void onInteractFurniture(FurnitureInteractEvent event) {
//null
}

View File

@@ -22,7 +22,10 @@ import de.tr7zw.changeme.nbtapi.NBTItem;
import dev.lone.itemsadder.api.CustomBlock;
import dev.lone.itemsadder.api.CustomFurniture;
import dev.lone.itemsadder.api.CustomStack;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.config.CropConfig;
import net.momirealms.customcrops.integrations.customplugin.CustomInterface;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
@@ -98,4 +101,27 @@ public class ItemsAdderHook implements CustomInterface {
return CustomStack.getInstance(itemID) != null;
}
@Override
public boolean hasNextStage(String id) {
return doesExist(getNextStage(id));
}
@Override
public String getNextStage(String id) {
String[] split = StringUtils.split(id, ":");
String[] crop = StringUtils.split(split[1], "_");
int nextStage = Integer.parseInt(crop[2]) + 1;
return split[0] + ":" + crop[0] + "_" + crop[1] + "_" + nextStage;
}
@Override
public @Nullable Crop getCropFromID(String id) {
String[] cropNameList = StringUtils.split(StringUtils.split(id, ":")[1], "_");
return CropConfig.CROPS.get(cropNameList[0]);
}
@Override
public Location getFrameCropLocation(Location seedLoc) {
return seedLoc.clone().add(0.5,0.5,0.5);
}
}

View File

@@ -46,17 +46,13 @@ public class ItemsAdderWireCropImpl implements CropModeInterface {
@Override
public boolean growJudge(Location location) {
String blockID = customInterface.getBlockID(location);
if (blockID == null) return true;
if (!blockID.contains("_stage_")) return true;
if (blockID == null || !blockID.contains("_stage_")) return true;
String cropId = StringUtils.split(blockID, ":")[1];
String[] cropNameList = StringUtils.split(cropId, "_");
String cropKey = cropNameList[0];
Crop crop = CropConfig.CROPS.get(cropKey);
String[] cropNameList = StringUtils.split(StringUtils.split(blockID, ":")[1], "_");
Crop crop = CropConfig.CROPS.get(cropNameList[0]);
if (crop == null) return true;
if (MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) {
if ((MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) || cropManager.isWrongSeason(location, crop.getSeasons())) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeBlock(location);
customInterface.placeWire(location, BasicItemConfig.deadCrop);
@@ -64,56 +60,42 @@ public class ItemsAdderWireCropImpl implements CropModeInterface {
return true;
}
if (cropManager.isWrongSeason(location, crop.getSeasons())) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeBlock(location);
customInterface.placeWire(location, BasicItemConfig.deadCrop);
});
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null) return true;
if (potID == null || (!potID.equals(BasicItemConfig.wetPot) && !potID.equals(BasicItemConfig.dryPot))) return true;
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = blockID.substring(0, blockID.length() - cropNameList[2].length());
String temp = blockID.substring(0, blockID.length() - cropNameList[2].length());
if (customInterface.doesExist(temp + nextStage)) {
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
if (fertilizer instanceof SpeedGrow speedGrow && Math.random() < speedGrow.getChance()) {
if (customInterface.doesExist(temp + (nextStage+1))) {
addStage(location, temp + (nextStage+1));
}
}
else if (certainGrow || Math.random() < MainConfig.dryGrowChance) {
if (fertilizer instanceof SpeedGrow speedGrow
&& Math.random() < speedGrow.getChance()
&& customInterface.doesExist(temp + (nextStage+1))
)
addStage(location, temp + (nextStage+1));
else if (certainGrow || Math.random() < MainConfig.dryGrowChance)
addStage(location, temp + nextStage);
}
return false;
}
else {
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) {
chance += gigantic.getChance();
}
if (fertilizer instanceof Gigantic gigantic) chance += gigantic.getChance();
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeBlock(location);
if (giganticCrop.isBlock()) {
customInterface.placeWire(location, giganticCrop.getBlockID());
}
else {
customInterface.placeFurniture(location, giganticCrop.getBlockID());
}
if (giganticCrop.isBlock()) customInterface.placeWire(location, giganticCrop.getBlockID());
else customInterface.placeFurniture(location, giganticCrop.getBlockID());
});
}
}
return true;
}
return false;
}
private void addStage(Location seedLoc, String stage) {

View File

@@ -20,7 +20,6 @@ package net.momirealms.customcrops.integrations.customplugin.itemsadder;
import dev.lone.itemsadder.api.CustomBlock;
import dev.lone.itemsadder.api.CustomStack;
import dev.lone.itemsadder.api.Events.CustomBlockBreakEvent;
import dev.lone.itemsadder.api.Events.CustomBlockInteractEvent;
import dev.lone.itemsadder.api.Events.FurnitureBreakEvent;
import dev.lone.itemsadder.api.Events.FurnitureInteractEvent;
import net.momirealms.customcrops.api.crop.Crop;
@@ -114,12 +113,11 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
ItemStack itemInHand = event.getItem();
if (!blockID.equals(BasicItemConfig.deadCrop)) {
if (!hasNextStage(blockID)) {
if (!customInterface.hasNextStage(blockID)) {
ItemStack mainHand = player.getInventory().getItemInMainHand();
ItemStack offHand = player.getInventory().getItemInOffHand();
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && (mainHand.getType() != Material.AIR || offHand.getType() != Material.AIR))) {
if (!AntiGrief.testBreak(player, location)) return;
CustomBlock.remove(location);
this.onInteractRipeCrop(location, blockID, player);
return;
@@ -140,7 +138,7 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
);
}
CustomBlock.remove(location);
CustomBlock.place(getNextStage(blockID), location);
CustomBlock.place(customInterface.getNextStage(blockID), location);
}
return;
}
@@ -178,87 +176,8 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
}
}
public void onInteractBlock(CustomBlockInteractEvent event) {
// A broken API Event
//
// if (event.isCancelled()) return;
// if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
//
// final Player player = event.getPlayer();
// final String blockID = event.getNamespacedID();
// //interact crop
// if (blockID.contains("_stage_")) {
//
// if (!blockID.equals(BasicItemConfig.deadCrop)) {
// //ripe crops
// if (!hasNextStage(blockID) && MainConfig.canRightClickHarvest) {
// Location seedLoc = event.getBlockClicked().getLocation();
// CustomBlock.remove(seedLoc);
// this.onInteractRipeCrop(seedLoc, blockID, event.getPlayer());
// }
//
// else {
// Location potLoc = event.getBlockClicked().getLocation().clone().subtract(0,1,0);
// super.tryMisc(player, event.getItem(), potLoc);
// }
// }
// }
//
// //interact pot (must have an item)
// else if (blockID.equals(BasicItemConfig.wetPot) || blockID.equals(BasicItemConfig.dryPot)) {
//
// Location seedLoc = event.getBlockClicked().getLocation().clone().add(0,1,0);
// if (!AntiGrief.testPlace(player, seedLoc)) return;
//
// ItemStack itemInHand = event.getItem();
// Location potLoc = event.getBlockClicked().getLocation();
// super.tryMisc(player, itemInHand, potLoc);
//
// if (event.getBlockFace() != BlockFace.UP) return;
// if (itemInHand == null || itemInHand.getType() == Material.AIR) return;
// CustomStack customStack = CustomStack.byItemStack(itemInHand);
// if (customStack == null) return;
// String namespacedID = customStack.getNamespacedID();
// if (namespacedID.endsWith("_seeds")) {
// String cropName = customStack.getId().substring(0, customStack.getId().length() - 6);
// Crop crop = CropConfig.CROPS.get(cropName);
// if (crop == null) return;
//
// CustomWorld customWorld = cropManager.getCustomWorld(seedLoc.getWorld());
// if (customWorld == null) return;
//
// if (FurnitureUtil.hasFurniture(seedLoc)) return;
// if (seedLoc.getBlock().getType() != Material.AIR) return;
//
// PlantingCondition plantingCondition = new PlantingCondition(seedLoc, player);
//
// if (crop.getRequirements() != null) {
// for (RequirementInterface requirement : crop.getRequirements()) {
// if (!requirement.isConditionMet(plantingCondition)) {
// return;
// }
// }
// }
//
// if (SoundConfig.plantSeed.isEnable()) {
// AdventureUtil.playerSound(
// player,
// SoundConfig.plantSeed.getSource(),
// SoundConfig.plantSeed.getKey(),
// 1,1
// );
// }
//
// if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
// CustomBlock.place(namespacedID.substring(0, namespacedID.length() - 5) + "stage_1", seedLoc);
// customWorld.addCrop(seedLoc, cropName);
// }
// }
}
private void onInteractRipeCrop(Location location, String id, Player player) {
Crop crop = getCropFromID(id);
Crop crop = customInterface.getCropFromID(id);
if (crop == null) return;
if (super.onInteractRipeCrop(location, crop, player)) return;
if (crop.getReturnStage() != null) CustomBlock.place(crop.getReturnStage(), location);
@@ -295,7 +214,7 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
}
if (namespacedId.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(namespacedId)) {
if (customInterface.hasNextStage(namespacedId)) {
super.onBreakUnripeCrop(location);
return;
}
@@ -327,7 +246,7 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler {
CustomBlock.remove(seedLocation);
if (seedID.equals(BasicItemConfig.deadCrop)) return;
//ripe or not
if (hasNextStage(seedID)) {
if (customInterface.hasNextStage(seedID)) {
if (player.getGameMode() == GameMode.CREATIVE) return;
customBlock.getLoot().forEach(loot -> location.getWorld().dropItemNaturally(seedLocation.getBlock().getLocation(), loot));
}

View File

@@ -36,8 +36,4 @@ public class ItemsAdderBlockListener implements Listener {
handler.onBreakBlock(event);
}
@EventHandler
public void onInteractBlock(CustomBlockInteractEvent event) {
handler.onInteractBlock(event);
}
}

View File

@@ -52,76 +52,60 @@ public class OraxenFrameCropImpl implements CropModeInterface {
Chunk chunk = location.getChunk();
if (chunk.isEntitiesLoaded()) {
if (chunk.isEntitiesLoaded()) return false;
Location cropLoc = location.clone().add(0.5,0.03125,0.5);
ItemFrame itemFrame = FurnitureUtil.getItemFrame(cropLoc);
if (itemFrame == null) return true;
String id = customInterface.getItemID(itemFrame.getItem());
if (id == null) return true;
if (id.equals(BasicItemConfig.deadCrop)) return true;
ItemFrame itemFrame = FurnitureUtil.getItemFrame(customInterface.getFrameCropLocation(location));
if (itemFrame == null) return true;
String[] cropNameList = StringUtils.split(id,"_");
String cropKey = cropNameList[0];
Crop crop = CropConfig.CROPS.get(cropKey);
if (crop == null) return true;
String id = customInterface.getItemID(itemFrame.getItem());
if (id == null || id.equals(BasicItemConfig.deadCrop)) return true;
if (MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
itemFrame.getPersistentDataContainer().set(OraxenHook.FURNITURE, PersistentDataType.STRING, BasicItemConfig.deadCrop);
return true;
}
String[] cropNameList = StringUtils.split(id,"_");
Crop crop = CropConfig.CROPS.get(cropNameList[0]);
if (crop == null) return true;
if (cropManager.isWrongSeason(location, crop.getSeasons())) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
itemFrame.getPersistentDataContainer().set(OraxenHook.FURNITURE, PersistentDataType.STRING, BasicItemConfig.deadCrop);
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = StringUtils.chop(id);
if (customInterface.doesExist(temp + nextStage)) {
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
if (fertilizer instanceof SpeedGrow speedGrow && Math.random() < speedGrow.getChance()) {
if (customInterface.doesExist(temp + (nextStage+1))) {
addStage(itemFrame, temp + (nextStage+1));
}
}
else if (certainGrow || Math.random() < MainConfig.dryGrowChance) {
addStage(itemFrame, temp + nextStage);
}
}
else {
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) {
chance += gigantic.getChance();
}
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeFurniture(itemFrame);
if (giganticCrop.isBlock()) {
customInterface.placeWire(location, giganticCrop.getBlockID());
}
else {
customInterface.placeFurniture(location, giganticCrop.getBlockID());
}
});
}
}
return true;
}
if ((MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) || cropManager.isWrongSeason(location, crop.getSeasons())) {
itemFrame.setItem(customInterface.getItemStack(BasicItemConfig.deadCrop), false);
itemFrame.getPersistentDataContainer().set(OraxenHook.FURNITURE, PersistentDataType.STRING, BasicItemConfig.deadCrop);
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null || (!potID.equals(BasicItemConfig.wetPot) && !potID.equals(BasicItemConfig.dryPot))) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = StringUtils.chop(id);
if (MainConfig.enableCrow && cropManager.crowJudge(location, itemFrame)) return true;
if (customInterface.doesExist(temp + nextStage)) {
if (fertilizer instanceof SpeedGrow speedGrow
&& Math.random() < speedGrow.getChance()
&& customInterface.doesExist(temp + (nextStage+1))
)
addStage(itemFrame, temp + (nextStage+1));
else if (certainGrow || Math.random() < MainConfig.dryGrowChance)
addStage(itemFrame, temp + nextStage);
return false;
}
else {
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) chance += gigantic.getChance();
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeFurniture(itemFrame);
if (giganticCrop.isBlock()) customInterface.placeWire(location, giganticCrop.getBlockID());
else customInterface.placeFurniture(location, giganticCrop.getBlockID());
});
}
}
return true;
}
return false;
}
private void addStage(ItemFrame itemFrame, String stage) {

View File

@@ -79,7 +79,7 @@ public class OraxenFrameHandler extends OraxenHandler {
if (furnitureID.contains("_stage_")) {
itemFrame.remove();
if (furnitureID.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(furnitureID)) {
if (customInterface.hasNextStage(furnitureID)) {
FurnitureMechanic mechanic = (FurnitureMechanic) FurnitureFactory.instance.getMechanic(furnitureID);
if (mechanic == null) return;
Drop drop = mechanic.getDrop();
@@ -113,7 +113,7 @@ public class OraxenFrameHandler extends OraxenHandler {
if (id.contains("_stage_")) {
if (id.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(id)) {
if (customInterface.hasNextStage(id)) {
super.onBreakUnripeCrop(event.getBlock().getLocation());
return;
}
@@ -177,52 +177,51 @@ public class OraxenFrameHandler extends OraxenHandler {
return;
}
if (id.contains("_stage_")) {
if (!id.equals(BasicItemConfig.deadCrop)) {
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (!hasNextStage(id)) {
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand.getType() != Material.AIR)) {
if (!AntiGrief.testBreak(player, location)) return;
itemFrame.remove();
this.onInteractRipeCrop(location, id, player);
return;
}
}
//has next stage
else if (MainConfig.enableBoneMeal && itemInHand.getType() == Material.BONE_MEAL) {
if (!AntiGrief.testPlace(player, location)) return;
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
if (Math.random() < MainConfig.boneMealChance) {
itemFrame.getWorld().spawnParticle(MainConfig.boneMealSuccess, location.clone().add(0,0.5, 0),3,0.2,0.2,0.2);
if (SoundConfig.boneMeal.isEnable()) {
AdventureUtil.playerSound(
player,
SoundConfig.boneMeal.getSource(),
SoundConfig.boneMeal.getKey(),
1,1
);
}
String nextStage = getNextStage(id);
itemFrame.setItem(customInterface.getItemStack(nextStage));
itemFrame.getPersistentDataContainer().set(OraxenHook.FURNITURE, PersistentDataType.STRING, nextStage);
}
if (!id.contains("_stage_")) return;
if (!id.equals(BasicItemConfig.deadCrop)) {
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (!customInterface.hasNextStage(id)) {
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand.getType() != Material.AIR)) {
if (!AntiGrief.testBreak(player, location)) return;
itemFrame.remove();
this.onInteractRipeCrop(location, id, player);
return;
}
}
if (!AntiGrief.testPlace(player, location)) return;
Location potLoc = location.clone().subtract(0,1,0).getBlock().getLocation();
super.tryMisc(player, player.getInventory().getItemInMainHand(), potLoc);
//has next stage
else if (MainConfig.enableBoneMeal && itemInHand.getType() == Material.BONE_MEAL) {
if (!AntiGrief.testPlace(player, location)) return;
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
if (Math.random() < MainConfig.boneMealChance) {
itemFrame.getWorld().spawnParticle(MainConfig.boneMealSuccess, location.clone().add(0,0.5, 0),3,0.2,0.2,0.2);
if (SoundConfig.boneMeal.isEnable()) {
AdventureUtil.playerSound(
player,
SoundConfig.boneMeal.getSource(),
SoundConfig.boneMeal.getKey(),
1,1
);
}
String nextStage = customInterface.getNextStage(id);
itemFrame.setItem(customInterface.getItemStack(nextStage));
itemFrame.getPersistentDataContainer().set(OraxenHook.FURNITURE, PersistentDataType.STRING, nextStage);
}
return;
}
}
if (!AntiGrief.testPlace(player, location)) return;
Location potLoc = location.clone().subtract(0,1,0).getBlock().getLocation();
super.tryMisc(player, player.getInventory().getItemInMainHand(), potLoc);
}
private void onInteractRipeCrop(Location location, String id, Player player) {
Crop crop = getCropFromID(id);
Crop crop = customInterface.getCropFromID(id);
if (crop == null) return;
if (super.onInteractRipeCrop(location, crop, player)) return;
ItemFrame itemFrame = cropManager.getCustomInterface().placeFurniture(location, crop.getReturnStage());
if (crop.canRotate() && itemFrame != null) {
itemFrame.setRotation(FurnitureUtil.getRandomRotation());
if (crop.getReturnStage() != null) {
ItemFrame itemFrame = cropManager.getCustomInterface().placeFurniture(location, crop.getReturnStage());
if (crop.canRotate() && itemFrame != null) itemFrame.setRotation(FurnitureUtil.getRandomRotation());
}
}
}

View File

@@ -23,9 +23,11 @@ import io.th0rgal.oraxen.api.OraxenItems;
import io.th0rgal.oraxen.api.events.*;
import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic;
import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.api.event.WaterPotEvent;
import net.momirealms.customcrops.config.*;
import net.momirealms.customcrops.config.BasicItemConfig;
import net.momirealms.customcrops.config.MainConfig;
import net.momirealms.customcrops.config.SoundConfig;
import net.momirealms.customcrops.config.WaterCanConfig;
import net.momirealms.customcrops.integrations.customplugin.HandlerP;
import net.momirealms.customcrops.integrations.customplugin.oraxen.listeners.OraxenBlockListener;
import net.momirealms.customcrops.integrations.customplugin.oraxen.listeners.OraxenFurnitureListener;
@@ -33,7 +35,6 @@ import net.momirealms.customcrops.managers.CropManager;
import net.momirealms.customcrops.managers.CustomWorld;
import net.momirealms.customcrops.objects.WaterCan;
import net.momirealms.customcrops.utils.AdventureUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -45,7 +46,6 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public abstract class OraxenHandler extends HandlerP {
@@ -188,12 +188,6 @@ public abstract class OraxenHandler extends HandlerP {
return true;
}
@Nullable
@Override
public Crop getCropFromID(String id) {
return CropConfig.CROPS.get(StringUtils.split(id, "_")[0]);
}
public void onBreakNoteBlock(OraxenNoteBlockBreakEvent event) {
}

View File

@@ -27,8 +27,10 @@ import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanic
import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanicFactory;
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanic;
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory;
import net.momirealms.customcrops.api.crop.Crop;
import net.momirealms.customcrops.config.CropConfig;
import net.momirealms.customcrops.integrations.customplugin.CustomInterface;
import net.momirealms.customcrops.utils.FurnitureUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
@@ -106,4 +108,26 @@ public class OraxenHook implements CustomInterface {
public boolean doesExist(String itemID) {
return OraxenItems.getItemById(itemID) != null;
}
@Override
public boolean hasNextStage(String id) {
return doesExist(getNextStage(id));
}
@Override
public String getNextStage(String id) {
String[] crop = StringUtils.split(id,"_");
int nextStage = Integer.parseInt(crop[2]) + 1;
return crop[0] + "_" + crop[1] + "_" + nextStage;
}
@Override
public @Nullable Crop getCropFromID(String id) {
return CropConfig.CROPS.get(StringUtils.split(id, "_")[0]);
}
@Override
public Location getFrameCropLocation(Location seedLoc) {
return seedLoc.clone().add(0.5,0.03125,0.5);
}
}

View File

@@ -46,65 +46,53 @@ public class OraxenWireCropImpl implements CropModeInterface {
@Override
public boolean growJudge(Location location) {
String blockID = customInterface.getBlockID(location);
if (blockID == null) return true;
if (!blockID.contains("_stage_")) return true;
if (blockID == null || !blockID.contains("_stage_")) return true;
String[] cropNameList = StringUtils.split(blockID,"_");
String cropKey = cropNameList[0];
Crop crop = CropConfig.CROPS.get(cropKey);
Crop crop = CropConfig.CROPS.get(cropNameList[0]);
if (crop == null) return true;
if (MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> customInterface.placeWire(location, BasicItemConfig.deadCrop));
return true;
}
if (cropManager.isWrongSeason(location, crop.getSeasons())) {
if ((MainConfig.needSkyLight && location.getBlock().getLightFromSky() < MainConfig.skyLightLevel) || cropManager.isWrongSeason(location, crop.getSeasons())) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> customInterface.placeWire(location, BasicItemConfig.deadCrop));
return true;
}
Location potLoc = location.clone().subtract(0,1,0);
String potID = customInterface.getBlockID(potLoc);
if (potID == null) return true;
if (potID == null || (!potID.equals(BasicItemConfig.wetPot) && !potID.equals(BasicItemConfig.dryPot))) return true;
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
Fertilizer fertilizer = cropManager.getFertilizer(potLoc);
boolean certainGrow = potID.equals(BasicItemConfig.wetPot);
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
String temp = cropNameList[0] + "_" + cropNameList[1] + "_";
if (customInterface.doesExist(temp + nextStage)) {
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
if (fertilizer instanceof SpeedGrow speedGrow && Math.random() < speedGrow.getChance()) {
if (customInterface.doesExist(temp + (nextStage+1))) {
addStage(location, temp + (nextStage+1));
}
}
else if (certainGrow || Math.random() < MainConfig.dryGrowChance) {
if (fertilizer instanceof SpeedGrow speedGrow
&& Math.random() < speedGrow.getChance()
&& customInterface.doesExist(temp + (nextStage+1))
)
addStage(location, temp + (nextStage+1));
else if (certainGrow || Math.random() < MainConfig.dryGrowChance)
addStage(location, temp + nextStage);
}
return false;
}
else {
if (MainConfig.enableCrow && cropManager.crowJudge(location)) return true;
GiganticCrop giganticCrop = crop.getGiganticCrop();
if (giganticCrop != null) {
double chance = giganticCrop.getChance();
if (fertilizer instanceof Gigantic gigantic) {
chance += gigantic.getChance();
}
if (fertilizer instanceof Gigantic gigantic) chance += gigantic.getChance();
if (Math.random() < chance) {
Bukkit.getScheduler().runTask(CustomCrops.plugin, () -> {
customInterface.removeBlock(location);
if (giganticCrop.isBlock()) {
customInterface.placeWire(location, giganticCrop.getBlockID());
}
else {
customInterface.placeFurniture(location, giganticCrop.getBlockID());
}
if (giganticCrop.isBlock()) customInterface.placeWire(location, giganticCrop.getBlockID());
else customInterface.placeFurniture(location, giganticCrop.getBlockID());
});
}
}
return true;
}
return false;
}
private void addStage(Location seedLoc, String stage) {

View File

@@ -47,11 +47,6 @@ public class OraxenWireHandler extends OraxenHandler{
super(cropManager);
}
@Override
public void onBreakNoteBlock(OraxenNoteBlockBreakEvent event) {
// not necessary because string break event would be triggered too
}
@Override
public void onBreakStringBlock(OraxenStringBlockBreakEvent event) {
if (event.isCancelled()) return;
@@ -86,7 +81,7 @@ public class OraxenWireHandler extends OraxenHandler{
}
if (id.equals(BasicItemConfig.deadCrop)) return;
if (hasNextStage(id)) {
if (customInterface.hasNextStage(id)) {
super.onBreakUnripeCrop(location);
return;
}
@@ -183,7 +178,7 @@ public class OraxenWireHandler extends OraxenHandler{
//ripe crops
if (!id.equals(BasicItemConfig.deadCrop)) {
if (!hasNextStage(id)) {
if (!customInterface.hasNextStage(id)) {
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand != null && itemInHand.getType() != Material.AIR)) {
if (!AntiGrief.testBreak(player, seedLoc)) return;
@@ -206,7 +201,7 @@ public class OraxenWireHandler extends OraxenHandler{
1,1
);
}
StringBlockMechanicFactory.setBlockModel(block, getNextStage(id));
StringBlockMechanicFactory.setBlockModel(block, customInterface.getNextStage(id));
}
return;
}
@@ -221,9 +216,9 @@ public class OraxenWireHandler extends OraxenHandler{
}
private void onInteractRipeCrop(Location location, String id, Player player) {
Crop crop = getCropFromID(id);
Crop crop = customInterface.getCropFromID(id);
if (crop == null) return;
if (super.onInteractRipeCrop(location, crop, player)) return;
StringBlockMechanicFactory.setBlockModel(location.getBlock(), crop.getReturnStage());
if (crop.getReturnStage() != null) StringBlockMechanicFactory.setBlockModel(location.getBlock(), crop.getReturnStage());
}
}

View File

@@ -41,7 +41,7 @@ public class WorldGuardHook implements AntiGrief {
WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform();
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
RegionQuery query = platform.getRegionContainer().createQuery();
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
}
else return true;
}
@@ -53,7 +53,7 @@ public class WorldGuardHook implements AntiGrief {
WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform();
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
RegionQuery query = platform.getRegionContainer().createQuery();
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
}
else return true;
}