mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-22 16:39:36 +00:00
2.2.4
This commit is contained in:
@@ -4,7 +4,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'net.momirealms'
|
||||
version = '2.2.3'
|
||||
version = '2.2.4'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@@ -74,6 +74,7 @@ dependencies {
|
||||
implementation('net.kyori:adventure-text-minimessage:4.12.0')
|
||||
implementation("de.tr7zw:item-nbt-api:2.11.1")
|
||||
implementation("org.bstats:bstats-bukkit:3.0.0")
|
||||
implementation fileTree(dir:'libs',includes:['BiomeAPI.jar'])
|
||||
}
|
||||
|
||||
def targetJavaVersion = 17
|
||||
@@ -109,6 +110,7 @@ shadowJar {
|
||||
relocate ('de.tr7zw', 'net.momirealms.customcrops.libs.de.tr7zw')
|
||||
relocate ('net.kyori', 'net.momirealms.customcrops.libs.net.kyori')
|
||||
relocate ('org.bstats', 'net.momirealms.customcrops.libs.org.bstats')
|
||||
relocate 'net.momirealms.biomeapi', 'net.momirealms.customcrops.libs.net.momirealms.biomeapi'
|
||||
}
|
||||
|
||||
tasks.register("delete", Delete).get().delete("build/libs/"+project.name+"-"+project.version+".jar")
|
||||
|
||||
BIN
libs/BiomeAPI.jar
Normal file
BIN
libs/BiomeAPI.jar
Normal file
Binary file not shown.
@@ -641,6 +641,7 @@ public abstract class HandlerP extends Function {
|
||||
}
|
||||
|
||||
protected boolean checkHarvestRequirements(Player player, Location location, Crop crop) {
|
||||
if (player.getGameMode() == GameMode.CREATIVE) return true;
|
||||
PlayerCondition playerCondition = new PlayerCondition(location, player);
|
||||
if (crop.getHarvestRequirements() != null) {
|
||||
for (RequirementInterface requirement : crop.getHarvestRequirements()) {
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
|
||||
package net.momirealms.customcrops.integrations.customplugin.oraxen;
|
||||
|
||||
import dev.lone.itemsadder.api.CustomBlock;
|
||||
import dev.lone.itemsadder.api.CustomStack;
|
||||
import io.th0rgal.oraxen.api.OraxenBlocks;
|
||||
import io.th0rgal.oraxen.api.OraxenItems;
|
||||
import io.th0rgal.oraxen.api.events.OraxenFurnitureBreakEvent;
|
||||
import io.th0rgal.oraxen.api.events.OraxenFurnitureInteractEvent;
|
||||
@@ -24,6 +27,7 @@ import io.th0rgal.oraxen.api.events.OraxenNoteBlockBreakEvent;
|
||||
import io.th0rgal.oraxen.api.events.OraxenNoteBlockInteractEvent;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureFactory;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanic;
|
||||
import io.th0rgal.oraxen.utils.drops.Drop;
|
||||
import net.momirealms.customcrops.api.crop.Crop;
|
||||
import net.momirealms.customcrops.config.BasicItemConfig;
|
||||
@@ -43,6 +47,9 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
@@ -136,33 +143,65 @@ public class OraxenFrameHandler extends OraxenHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void onInteractNoteBlock(OraxenNoteBlockInteractEvent event) {
|
||||
// final Player player = event.getPlayer();
|
||||
// final ItemStack itemInHand = event.getItemInHand();
|
||||
// final Block block = event.getBlock();
|
||||
//
|
||||
// String blockID = event.getMechanic().getItemID();
|
||||
// if (!blockID.equals(BasicItemConfig.dryPot) && !blockID.equals(BasicItemConfig.wetPot)) return;
|
||||
//
|
||||
// Location potLoc = block.getLocation();
|
||||
// Location seedLoc = potLoc.clone().add(0,1,0);
|
||||
//
|
||||
// if (super.tryMisc(player, itemInHand, potLoc)) return;
|
||||
// if (event.getBlockFace() != BlockFace.UP) return;
|
||||
//
|
||||
// String id = OraxenItems.getIdByItem(itemInHand);
|
||||
// if (id != null) {
|
||||
// if (id.endsWith("_seeds")) {
|
||||
// String cropName = id.substring(0, id.length() - 6);
|
||||
// plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
// }
|
||||
// }
|
||||
// else if (MainConfig.enableConvert) {
|
||||
// String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
// if (cropName == null) return;
|
||||
// plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onInteractNoteBlock(OraxenNoteBlockInteractEvent event) {
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final ItemStack itemInHand = event.getItemInHand();
|
||||
final Block block = event.getBlock();
|
||||
|
||||
String blockID = event.getMechanic().getItemID();
|
||||
if (!blockID.equals(BasicItemConfig.dryPot) && !blockID.equals(BasicItemConfig.wetPot)) return;
|
||||
|
||||
Location potLoc = block.getLocation();
|
||||
Location seedLoc = potLoc.clone().add(0,1,0);
|
||||
|
||||
if (super.tryMisc(player, itemInHand, potLoc)) return;
|
||||
if (event.getHand() != EquipmentSlot.HAND) return;
|
||||
super.onPlayerInteract(event);
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
if (event.getBlockFace() != BlockFace.UP) return;
|
||||
|
||||
String id = OraxenItems.getIdByItem(itemInHand);
|
||||
if (id != null) {
|
||||
if (id.endsWith("_seeds")) {
|
||||
String cropName = id.substring(0, id.length() - 6);
|
||||
Block block = event.getClickedBlock();
|
||||
if (block == null) return;
|
||||
NoteBlockMechanic noteBlockMechanic = OraxenBlocks.getNoteBlockMechanic(block);
|
||||
if (noteBlockMechanic != null) {
|
||||
final String blockID = noteBlockMechanic.getItemID();
|
||||
if (!blockID.equals(BasicItemConfig.wetPot) && !blockID.equals(BasicItemConfig.dryPot)) return;
|
||||
Location seedLoc = block.getLocation().clone().add(0,1,0);
|
||||
ItemStack itemInHand = event.getItem();
|
||||
Location potLoc = block.getLocation();
|
||||
if (super.tryMisc(player, itemInHand, potLoc)) return;
|
||||
String id = OraxenItems.getIdByItem(itemInHand);
|
||||
if (id != null) {
|
||||
if (id.endsWith("_seeds")) {
|
||||
String cropName = id.substring(0, id.length() - 6);
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
else if (MainConfig.enableConvert) {
|
||||
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
if (cropName == null) return;
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
else if (MainConfig.enableConvert) {
|
||||
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
if (cropName == null) return;
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
|
||||
package net.momirealms.customcrops.integrations.customplugin.oraxen;
|
||||
|
||||
import io.th0rgal.oraxen.api.OraxenBlocks;
|
||||
import io.th0rgal.oraxen.api.OraxenItems;
|
||||
import io.th0rgal.oraxen.api.events.*;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureFactory;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanic;
|
||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory;
|
||||
import io.th0rgal.oraxen.utils.drops.Drop;
|
||||
import net.momirealms.customcrops.api.crop.Crop;
|
||||
import net.momirealms.customcrops.config.BasicItemConfig;
|
||||
@@ -40,6 +40,9 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class OraxenWireHandler extends OraxenHandler{
|
||||
@@ -122,83 +125,159 @@ public class OraxenWireHandler extends OraxenHandler{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInteractNoteBlock(OraxenNoteBlockInteractEvent event) {
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
final ItemStack itemInHand = event.getItemInHand();
|
||||
final Location potLoc = event.getBlock().getLocation();
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
if (super.tryMisc(event.getPlayer(), itemInHand, potLoc)) return;
|
||||
if (event.getBlockFace() != BlockFace.UP) return;
|
||||
|
||||
Location seedLoc = potLoc.clone().add(0,1,0);
|
||||
|
||||
String id = OraxenItems.getIdByItem(itemInHand);
|
||||
if (id != null) {
|
||||
if (id.endsWith("_seeds")) {
|
||||
String cropName = id.substring(0, id.length() - 6);
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
else if (MainConfig.enableConvert) {
|
||||
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
if (cropName == null) return;
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
// @Override
|
||||
// public void onInteractNoteBlock(OraxenNoteBlockInteractEvent event) {
|
||||
// if (event.isCancelled()) return;
|
||||
// if (event.getHand() != EquipmentSlot.HAND) return;
|
||||
//
|
||||
// final ItemStack itemInHand = event.getItemInHand();
|
||||
// final Location potLoc = event.getBlock().getLocation();
|
||||
// final Player player = event.getPlayer();
|
||||
//
|
||||
// if (super.tryMisc(event.getPlayer(), itemInHand, potLoc)) return;
|
||||
// if (event.getBlockFace() != BlockFace.UP) return;
|
||||
//
|
||||
// Location seedLoc = potLoc.clone().add(0,1,0);
|
||||
//
|
||||
// String id = OraxenItems.getIdByItem(itemInHand);
|
||||
// if (id != null) {
|
||||
// if (id.endsWith("_seeds")) {
|
||||
// String cropName = id.substring(0, id.length() - 6);
|
||||
// plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
// }
|
||||
// }
|
||||
// else if (MainConfig.enableConvert) {
|
||||
// String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
// if (cropName == null) return;
|
||||
// plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onInteractStringBlock(OraxenStringBlockInteractEvent event) {
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final Block block = event.getBlock();
|
||||
final String id = event.getMechanic().getItemID();
|
||||
|
||||
if (!id.contains("_stage_")) return;
|
||||
|
||||
Location seedLoc = block.getLocation();
|
||||
ItemStack itemInHand = event.getItemInHand();
|
||||
if (!id.equals(BasicItemConfig.deadCrop)) {
|
||||
if (isRipe(id)) {
|
||||
if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand != null && itemInHand.getType() != Material.AIR)) {
|
||||
if (!CCAntiGrief.testBreak(player, seedLoc)) return;
|
||||
Crop crop = customInterface.getCropFromID(id);
|
||||
if (crop == null) return;
|
||||
if (!checkHarvestRequirements(player, seedLoc, crop)) {
|
||||
event.setCancelled(true);
|
||||
if (event.getHand() != EquipmentSlot.HAND) return;
|
||||
super.onPlayerInteract(event);
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
Block block = event.getClickedBlock();
|
||||
if (block == null) return;
|
||||
Location location = block.getLocation();
|
||||
final String blockID = customInterface.getBlockID(location);
|
||||
if (blockID == null) return;
|
||||
if (blockID.contains("_stage_")) {
|
||||
ItemStack itemInHand = event.getItem();
|
||||
if (!blockID.equals(BasicItemConfig.deadCrop)) {
|
||||
if (isRipe(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 (!CCAntiGrief.testBreak(player, location)) return;
|
||||
Crop crop = customInterface.getCropFromID(blockID);
|
||||
if (crop == null) return;
|
||||
if (!checkHarvestRequirements(player, location, crop)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
super.onInteractRipeCrop(location, crop, player);
|
||||
if (crop.getReturnStage() != null) customInterface.placeWire(location, crop.getReturnStage());
|
||||
return;
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
super.onInteractRipeCrop(seedLoc, crop, player);
|
||||
if (crop.getReturnStage() != null) StringBlockMechanicFactory.setBlockModel(seedLoc.getBlock(), crop.getReturnStage());
|
||||
}
|
||||
//has next stage
|
||||
else if (MainConfig.enableBoneMeal && itemInHand != null && itemInHand.getType() == Material.BONE_MEAL) {
|
||||
if (!CCAntiGrief.testPlace(player, location)) return;
|
||||
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
|
||||
if (Math.random() < MainConfig.boneMealChance) {
|
||||
location.getWorld().spawnParticle(MainConfig.boneMealSuccess, location.clone().add(0.5,0.5, 0.5),3,0.2,0.2,0.2);
|
||||
if (SoundConfig.boneMeal.isEnable()) {
|
||||
AdventureUtil.playerSound(
|
||||
player,
|
||||
SoundConfig.boneMeal.getSource(),
|
||||
SoundConfig.boneMeal.getKey(),
|
||||
1,1
|
||||
);
|
||||
}
|
||||
block.setType(Material.AIR);
|
||||
customInterface.placeWire(location, customInterface.getNextStage(blockID));
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
//has next stage
|
||||
else if (MainConfig.enableBoneMeal && itemInHand != null && itemInHand.getType() == Material.BONE_MEAL) {
|
||||
if (!CCAntiGrief.testPlace(player, seedLoc)) return;
|
||||
if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
|
||||
if (Math.random() < MainConfig.boneMealChance) {
|
||||
seedLoc.getWorld().spawnParticle(MainConfig.boneMealSuccess, seedLoc.clone().add(0.5,0.5, 0.5),3,0.2,0.2,0.2);
|
||||
if (SoundConfig.boneMeal.isEnable()) {
|
||||
AdventureUtil.playerSound(
|
||||
player,
|
||||
SoundConfig.boneMeal.getSource(),
|
||||
SoundConfig.boneMeal.getKey(),
|
||||
1,1
|
||||
);
|
||||
}
|
||||
StringBlockMechanicFactory.setBlockModel(block, customInterface.getNextStage(id));
|
||||
super.tryMisc(player, itemInHand, location.clone().subtract(0,1,0));
|
||||
}
|
||||
//interact pot (must have an item)
|
||||
else if (blockID.equals(BasicItemConfig.wetPot) || blockID.equals(BasicItemConfig.dryPot)) {
|
||||
ItemStack itemInHand = event.getItem();
|
||||
if (super.tryMisc(player, itemInHand, location)) return;
|
||||
if (event.getBlockFace() != BlockFace.UP) return;
|
||||
Location seedLoc = location.clone().add(0,1,0);
|
||||
String id = OraxenItems.getIdByItem(itemInHand);
|
||||
if (id != null) {
|
||||
if (id.endsWith("_seeds")) {
|
||||
String cropName = id.substring(0, id.length() - 6);
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (MainConfig.enableConvert) {
|
||||
String cropName = MainConfig.vanilla2Crops.get(itemInHand.getType());
|
||||
if (cropName == null) return;
|
||||
plantSeed(seedLoc, cropName, player, itemInHand);
|
||||
}
|
||||
}
|
||||
super.tryMisc(player, event.getItemInHand(), block.getLocation().clone().subtract(0,1,0));
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void onInteractStringBlock(OraxenStringBlockInteractEvent event) {
|
||||
// if (event.isCancelled()) return;
|
||||
// if (event.getHand() != EquipmentSlot.HAND) return;
|
||||
//
|
||||
// final Player player = event.getPlayer();
|
||||
// final Block block = event.getBlock();
|
||||
// final String id = event.getMechanic().getItemID();
|
||||
//
|
||||
// if (!id.contains("_stage_")) return;
|
||||
//
|
||||
// Location seedLoc = block.getLocation();
|
||||
// ItemStack itemInHand = event.getItemInHand();
|
||||
// if (!id.equals(BasicItemConfig.deadCrop)) {
|
||||
// if (isRipe(id)) {
|
||||
// if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand != null && itemInHand.getType() != Material.AIR)) {
|
||||
// if (!CCAntiGrief.testBreak(player, seedLoc)) return;
|
||||
// Crop crop = customInterface.getCropFromID(id);
|
||||
// if (crop == null) return;
|
||||
// if (!checkHarvestRequirements(player, seedLoc, crop)) {
|
||||
// event.setCancelled(true);
|
||||
// return;
|
||||
// }
|
||||
// block.setType(Material.AIR);
|
||||
// super.onInteractRipeCrop(seedLoc, crop, player);
|
||||
// if (crop.getReturnStage() != null) StringBlockMechanicFactory.setBlockModel(seedLoc.getBlock(), crop.getReturnStage());
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// //has next stage
|
||||
// else if (MainConfig.enableBoneMeal && itemInHand != null && itemInHand.getType() == Material.BONE_MEAL) {
|
||||
// if (!CCAntiGrief.testPlace(player, seedLoc)) return;
|
||||
// if (player.getGameMode() != GameMode.CREATIVE) itemInHand.setAmount(itemInHand.getAmount() - 1);
|
||||
// if (Math.random() < MainConfig.boneMealChance) {
|
||||
// seedLoc.getWorld().spawnParticle(MainConfig.boneMealSuccess, seedLoc.clone().add(0.5,0.5, 0.5),3,0.2,0.2,0.2);
|
||||
// if (SoundConfig.boneMeal.isEnable()) {
|
||||
// AdventureUtil.playerSound(
|
||||
// player,
|
||||
// SoundConfig.boneMeal.getSource(),
|
||||
// SoundConfig.boneMeal.getKey(),
|
||||
// 1,1
|
||||
// );
|
||||
// }
|
||||
// StringBlockMechanicFactory.setBlockModel(block, customInterface.getNextStage(id));
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// super.tryMisc(player, event.getItemInHand(), block.getLocation().clone().subtract(0,1,0));
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onBreakNoteBlock(OraxenNoteBlockBreakEvent event) {
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
package net.momirealms.customcrops.objects.requirements;
|
||||
|
||||
import net.momirealms.biomeapi.BiomeAPI;
|
||||
|
||||
public class RequirementBiome extends Requirement implements RequirementInterface {
|
||||
|
||||
public RequirementBiome(String[] values, boolean mode, String msg) {
|
||||
@@ -25,7 +27,7 @@ public class RequirementBiome extends Requirement implements RequirementInterfac
|
||||
|
||||
@Override
|
||||
public boolean isConditionMet(PlayerCondition playerCondition) {
|
||||
String currentBiome = playerCondition.getLocation().getBlock().getBiome().getKey().toString();
|
||||
String currentBiome = BiomeAPI.getBiome(playerCondition.getLocation());
|
||||
if (mode) {
|
||||
for (String value : values) {
|
||||
if (!(currentBiome.equalsIgnoreCase(value))) {
|
||||
|
||||
Reference in New Issue
Block a user