refactor: Replace the logic in CropUtils with the new CompatibleCrop

This commit is contained in:
Christian Koop 2024-10-02 20:34:26 +02:00
parent 8ff425aa18
commit f47fa3b38a
No known key found for this signature in database
GPG Key ID: 6A4A09E8ED946113
2 changed files with 6 additions and 117 deletions

View File

@ -1,98 +1,24 @@
package com.craftaro.epicfarming.utils;
import com.craftaro.core.compatibility.CompatibleMaterial;
import com.craftaro.epicfarming.EpicFarming;
import com.craftaro.third_party.com.cryptomorin.xseries.XBlock;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.core.compatibility.crops.CompatibleCrop;
import org.bukkit.block.Block;
import java.util.Optional;
import java.util.logging.Level;
public class CropUtils {
private static final boolean USE_LEGACY_IMPLEMENTATION;
static {
boolean useLegacy = false;
try {
Class.forName("org.bukkit.block.data.Ageable");
} catch (ClassNotFoundException ignore) {
useLegacy = true;
}
USE_LEGACY_IMPLEMENTATION = useLegacy;
}
public static boolean isFullyGrown(Block crop) {
if (crop == null) {
return false;
}
if (!USE_LEGACY_IMPLEMENTATION) {
return CropUtilsModern.isFullyGrown(crop);
}
Optional<XMaterial> mat = CompatibleMaterial.getMaterial(crop.getType());
if (!mat.isPresent() || !XBlock.isCrop(mat.get())) {
return false;
}
int maxAge = (mat.get() == XMaterial.BEETROOTS || mat.get() == XMaterial.NETHER_WART) ? 3 : 7;
return crop.getData() >= maxAge;
return CompatibleCrop.isCrop(crop) && CompatibleCrop.isCropFullyGrown(crop);
}
public static void resetGrowthStage(Block crop) {
if (crop == null) {
if (!CompatibleCrop.isCrop(crop)) {
return;
}
setGrowthStage(crop, 0);
CompatibleCrop.resetCropAge(crop);
}
public static void incrementGrowthStage(Block crop) {
if (crop == null) {
if (!CompatibleCrop.isCrop(crop)) {
return;
}
if (!USE_LEGACY_IMPLEMENTATION) {
setGrowthStage(crop, getGrowthStage(crop) + 1);
return;
}
Optional<XMaterial> mat = CompatibleMaterial.getMaterial(crop.getType());
if (mat.isPresent() && XBlock.isCrop(mat.get()) && crop.getData() < (mat.get() == XMaterial.BEETROOTS || mat.get() == XMaterial.NETHER_WART ? 3 : 7)) {
try {
setGrowthStage(crop, getGrowthStage(crop) + 1);
} catch (Exception ex) {
EpicFarming.getInstance().getLogger().log(Level.SEVERE, "Unexpected method error", ex);
}
}
}
private static int getGrowthStage(Block block) {
if (!USE_LEGACY_IMPLEMENTATION) {
return CropUtilsModern.getGrowthStage(block);
}
return block.getData();
}
private static void setGrowthStage(Block block, int stage) {
if (stage < 0) {
return;
}
if (!USE_LEGACY_IMPLEMENTATION) {
CropUtilsModern.setGrowthStage(block, stage);
return;
}
Optional<XMaterial> mat = CompatibleMaterial.getMaterial(block.getType());
if (!mat.isPresent() || !XBlock.isCrop(mat.get())) {
return;
}
try {
Block.class.getDeclaredMethod("setData", byte.class).invoke(block, (byte) stage);
} catch (Exception ex) {
EpicFarming.getInstance().getLogger().log(Level.SEVERE, "Unexpected method error", ex);
}
CompatibleCrop.incrementCropAge(crop);
}
}

View File

@ -1,37 +0,0 @@
package com.craftaro.epicfarming.utils;
import org.bukkit.block.Block;
import org.bukkit.block.data.Ageable;
import org.bukkit.block.data.BlockData;
public class CropUtilsModern {
static boolean isFullyGrown(Block crop) {
BlockData data = crop.getBlockData();
if (data instanceof Ageable) {
return ((Ageable) data).getAge() == ((Ageable) data).getMaximumAge();
}
return false;
}
static int getGrowthStage(Block block) {
if (!(block.getBlockData() instanceof Ageable)) {
return 0;
}
return ((Ageable) block.getBlockData()).getAge();
}
static void setGrowthStage(Block block, int stage) {
if (!(block.getBlockData() instanceof Ageable)) {
return;
}
Ageable blockData = (Ageable) block.getBlockData();
int max = blockData.getMaximumAge();
if (stage > max) {
return;
}
blockData.setAge(stage);
block.setBlockData(blockData);
}
}