9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-22 16:39:36 +00:00

1.5.0-FIX

This commit is contained in:
Xiao-MoMi
2022-07-04 16:44:01 +08:00
parent eda25b0bfc
commit 3d71bed588
14 changed files with 133 additions and 72 deletions

View File

@@ -41,9 +41,9 @@ public class ConfigReader {
Config.loadConfig(); Config.loadConfig();
Message.loadMessage(); Message.loadMessage();
Basic.loadBasic(); Basic.loadBasic();
Season.loadSeason();
cropLoad(); cropLoad();
fertilizerLoad(); fertilizerLoad();
Season.loadSeason();
} }
public static class Config{ public static class Config{
@@ -150,7 +150,7 @@ public class ConfigReader {
CustomCrops.instance.getLogger().warning("未检测到插件 Residence!"); CustomCrops.instance.getLogger().warning("未检测到插件 Residence!");
}else { }else {
integration.add(new Residence()); integration.add(new Residence());
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>检测到 <gold>Residence <color:#FFEBCD>已启用保护!"); AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>Residence <color:#FFEBCD>保护!");
} }
} }
if(config.getBoolean("config.integration.Kingdoms",false)){ if(config.getBoolean("config.integration.Kingdoms",false)){
@@ -158,7 +158,7 @@ public class ConfigReader {
CustomCrops.instance.getLogger().warning("未检测到插件 Kingdoms!"); CustomCrops.instance.getLogger().warning("未检测到插件 Kingdoms!");
}else { }else {
integration.add(new KingdomsX()); integration.add(new KingdomsX());
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>检测到 <gold>KingdomsX <color:#FFEBCD>已启用保护!"); AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>KingdomsX <color:#FFEBCD>保护!");
} }
} }
if(config.getBoolean("config.integration.WorldGuard",false)){ if(config.getBoolean("config.integration.WorldGuard",false)){
@@ -166,7 +166,7 @@ public class ConfigReader {
CustomCrops.instance.getLogger().warning("未检测到插件 WorldGuard!"); CustomCrops.instance.getLogger().warning("未检测到插件 WorldGuard!");
}else { }else {
integration.add(new WorldGuard()); integration.add(new WorldGuard());
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>检测到 <gold>WorldGuard <color:#FFEBCD>已启用保护!"); AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>WorldGuard <color:#FFEBCD>保护!");
} }
} }
if(config.getBoolean("config.integration.GriefDefender",false)){ if(config.getBoolean("config.integration.GriefDefender",false)){
@@ -174,7 +174,15 @@ public class ConfigReader {
CustomCrops.instance.getLogger().warning("未检测到插件 GriefDefender!"); CustomCrops.instance.getLogger().warning("未检测到插件 GriefDefender!");
}else { }else {
integration.add(new GriefDefender()); integration.add(new GriefDefender());
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>检测到 <gold>GriefDefender <color:#FFEBCD>已启用保护!"); AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>GriefDefender <color:#FFEBCD>保护!");
}
}
if(config.getBoolean("config.integration.PlotSquared",false)){
if(Bukkit.getPluginManager().getPlugin("PlotSquared") == null){
CustomCrops.instance.getLogger().warning("未检测到插件 PlotSquared!");
}else {
integration.add(new PlotSquared());
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>PlotSquared <color:#FFEBCD>保护!");
} }
} }
} }
@@ -220,6 +228,7 @@ public class ConfigReader {
} }
}); });
} }
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已载入 <white>" + CANS.size() + " <color:#FFEBCD>个水壶!");
SPRINKLERS.clear(); SPRINKLERS.clear();
if (config.contains("sprinkler")){ if (config.contains("sprinkler")){
@@ -236,6 +245,7 @@ public class ConfigReader {
} }
}); });
} }
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已载入 <white>" + SPRINKLERS.size()/2 + " <color:#FFEBCD>个洒水器!");
} }
} }
@@ -258,7 +268,10 @@ public class ConfigReader {
} }
seasonChange = config.getBoolean("season.auto-season-change.enable",false); seasonChange = config.getBoolean("season.auto-season-change.enable",false);
if (seasonChange) { if (seasonChange) {
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>当前季节变换模式: <gold>自动");
duration = config.getInt("season.auto-season-change.duration",28); duration = config.getInt("season.auto-season-change.duration",28);
}else {
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>当前季节变换模式: <gold>指令");
} }
} }
} }
@@ -297,6 +310,7 @@ public class ConfigReader {
public static String sprinklerFull; public static String sprinklerFull;
public static String sprinklerEmpty; public static String sprinklerEmpty;
public static String sprinklerRight; public static String sprinklerRight;
public static String beforePlant;
public static double cropOffset; public static double cropOffset;
public static double sprinklerOffset; public static double sprinklerOffset;
@@ -324,6 +338,7 @@ public class ConfigReader {
setSeason = config.getString("messages.set-season"); setSeason = config.getString("messages.set-season");
wrongArgs = config.getString("messages.wrong-args"); wrongArgs = config.getString("messages.wrong-args");
forceSave = config.getString("messages.force-save"); forceSave = config.getString("messages.force-save");
beforePlant = config.getString("messages.before-plant");
hasCropInfo = config.getBoolean("hologram.grow-info.enable"); hasCropInfo = config.getBoolean("hologram.grow-info.enable");
if (hasCropInfo){ if (hasCropInfo){
@@ -385,6 +400,7 @@ public class ConfigReader {
} }
CROPS.put(key, cropInstance); CROPS.put(key, cropInstance);
}); });
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已载入 <white>" + CROPS.size() + " <color:#FFEBCD>种农作物!");
} }
public static void fertilizerLoad(){ public static void fertilizerLoad(){
@@ -428,5 +444,6 @@ public class ConfigReader {
} }
}); });
} }
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已载入 <white>" + FERTILIZERS.size() + " <color:#FFEBCD>种肥料!");
} }
} }

View File

@@ -137,9 +137,19 @@ public class Executor implements CommandExecutor {
} }
default -> { default -> {
if (sender instanceof Player player){ if (sender instanceof Player player){
AdventureManager.playerMessage(player,""); AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops reload 重载插件");
AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops setseason <world> <season> 设置某个世界的季节");
AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops backup 备份数据");
AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops forcegrow <world> 强制某个世界的农作物进行生长判定");
AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops forcewater <world> 强制某个世界的洒水器进行工作判定");
AdventureManager.playerMessage(player,"<color:#F5DEB3>/customcrops forcesave <file> 强制更新缓存并保存");
}else { }else {
AdventureManager.consoleMessage(""); AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops reload 重载插件");
AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops setseason <world> <season> 设置某个世界的季节");
AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops backup 备份数据");
AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops forcegrow <world> 强制某个世界的农作物进行生长判定");
AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops forcewater <world> 强制某个世界的洒水器进行工作判定");
AdventureManager.consoleMessage("<color:#F5DEB3>/customcrops forcesave <file> 强制更新缓存并保存");
} }
} }
} }

View File

@@ -0,0 +1,22 @@
package net.momirealms.customcrops.integrations;
import com.plotsquared.core.location.Location;
import org.bukkit.entity.Player;
public record PlotSquared() implements Integration {
@Override
public boolean canBreak(org.bukkit.Location location, Player player) {
// PlotAPI api = new PlotAPI();
// PlotPlayer<?> plotPlayer = com.plotsquared.core.PlotSquared.platform().playerManager().getPlayerIfExists(player.getUniqueId());
Location plotLoc = Location.at(location.getWorld().getName(), location.getBlockX(), location.getBlockY(), location.getBlockZ());
if (plotLoc.isPlotRoad()) return false;
return plotLoc.getPlotArea().getPlot(plotLoc).isAdded(player.getUniqueId());
}
@Override
public boolean canPlace(org.bukkit.Location location, Player player) {
Location plotLoc = Location.at(location.getWorld().getName(), location.getBlockX(), location.getBlockY(), location.getBlockZ());
if (plotLoc.isPlotRoad()) return false;
return plotLoc.getPlotArea().getPlot(plotLoc).isAdded(player.getUniqueId());
}
}

View File

@@ -23,7 +23,7 @@ public record Residence() implements Integration {
ClaimedResidence res = com.bekvon.bukkit.residence.Residence.getInstance().getResidenceManager().getByLoc(location); ClaimedResidence res = com.bekvon.bukkit.residence.Residence.getInstance().getResidenceManager().getByLoc(location);
if(res!=null){ if(res!=null){
ResidencePermissions perms = res.getPermissions(); ResidencePermissions perms = res.getPermissions();
return perms.playerHas(player, Flags.harvest, true); return perms.playerHas(player, Flags.destroy, true);
} }
return true; return true;
} }

View File

@@ -19,7 +19,6 @@ public record WorldGuard() implements Integration {
RegionQuery query = container.createQuery(); RegionQuery query = container.createQuery();
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location)); ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
if (set != null){ if (set != null){
System.out.println(set);
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD); return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
}else { }else {
return true; return true;
@@ -33,7 +32,6 @@ public record WorldGuard() implements Integration {
RegionQuery query = container.createQuery(); RegionQuery query = container.createQuery();
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location)); ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
if (set != null){ if (set != null){
System.out.println(set);
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK); return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
}else { }else {
return true; return true;

View File

@@ -7,6 +7,7 @@ import net.momirealms.customcrops.ConfigReader;
import net.momirealms.customcrops.datamanager.PotManager; import net.momirealms.customcrops.datamanager.PotManager;
import net.momirealms.customcrops.fertilizer.Fertilizer; import net.momirealms.customcrops.fertilizer.Fertilizer;
import net.momirealms.customcrops.fertilizer.QualityCrop; import net.momirealms.customcrops.fertilizer.QualityCrop;
import net.momirealms.customcrops.integrations.Integration;
import net.momirealms.customcrops.utils.CropInstance; import net.momirealms.customcrops.utils.CropInstance;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.Location; import org.bukkit.Location;
@@ -28,9 +29,12 @@ public class BreakBlock implements Listener {
String namespacedId = event.getNamespacedID(); String namespacedId = event.getNamespacedID();
if(namespacedId.contains("_stage_")){ if(namespacedId.contains("_stage_")){
Player player =event.getPlayer(); Player player =event.getPlayer();
Location location = event.getBlock().getLocation();
for (Integration integration : ConfigReader.Config.integration){
if(!integration.canPlace(location, player)) return;
}
if(player.getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH) || player.getInventory().getItemInMainHand().getType() == Material.SHEARS){ if(player.getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH) || player.getInventory().getItemInMainHand().getType() == Material.SHEARS){
event.setCancelled(true); event.setCancelled(true);
Location location = event.getBlock().getLocation();
CustomBlock.place(namespacedId, location); CustomBlock.place(namespacedId, location);
CustomBlock.byAlreadyPlaced(location.getBlock()).getLoot().forEach(itemStack -> { CustomBlock.byAlreadyPlaced(location.getBlock()).getLoot().forEach(itemStack -> {
location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), itemStack); location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), itemStack);
@@ -45,7 +49,6 @@ public class BreakBlock implements Listener {
CropInstance cropInstance = ConfigReader.CROPS.get(cropNameList[0]); CropInstance cropInstance = ConfigReader.CROPS.get(cropNameList[0]);
ThreadLocalRandom current = ThreadLocalRandom.current(); ThreadLocalRandom current = ThreadLocalRandom.current();
int random = current.nextInt(cropInstance.getMin(), cropInstance.getMax() + 1); int random = current.nextInt(cropInstance.getMin(), cropInstance.getMax() + 1);
Location location = event.getBlock().getLocation();
Location itemLoc = location.clone().add(0.5,0.2,0.5); Location itemLoc = location.clone().add(0.5,0.2,0.5);
World world = location.getWorld(); World world = location.getWorld();
Fertilizer fertilizer = PotManager.Cache.get(location.clone().subtract(0,1,0)); Fertilizer fertilizer = PotManager.Cache.get(location.clone().subtract(0,1,0));
@@ -65,19 +68,12 @@ public class BreakBlock implements Listener {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack()); world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
} }
} }
}else {
normalDrop(cropInstance, random, itemLoc, world);
} }
} }
else { else {
for (int i = 0; i < random; i++){ normalDrop(cropInstance, random, itemLoc, world);
double ran = Math.random();
if (ran < ConfigReader.Config.quality_1){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
}else if(ran > ConfigReader.Config.quality_2){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
}else {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
}
}
} }
} }
} }
@@ -86,6 +82,9 @@ public class BreakBlock implements Listener {
PotManager.Cache.remove(location); PotManager.Cache.remove(location);
World world = location.getWorld(); World world = location.getWorld();
Block blockUp = location.add(0,1,0).getBlock(); Block blockUp = location.add(0,1,0).getBlock();
for (Integration integration : ConfigReader.Config.integration){
if(!integration.canPlace(location, event.getPlayer())) return;
}
if(CustomBlock.byAlreadyPlaced(blockUp) != null){ if(CustomBlock.byAlreadyPlaced(blockUp) != null){
String cropNamespacedId = CustomBlock.byAlreadyPlaced(blockUp).getNamespacedID(); String cropNamespacedId = CustomBlock.byAlreadyPlaced(blockUp).getNamespacedID();
if(cropNamespacedId.contains("_stage_")){ if(cropNamespacedId.contains("_stage_")){
@@ -120,16 +119,7 @@ public class BreakBlock implements Listener {
} }
} }
else { else {
for (int i = 0; i < random; i++){ normalDrop(cropInstance, random, itemLoc, world);
double ran = Math.random();
if (ran < ConfigReader.Config.quality_1){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
}else if(ran > ConfigReader.Config.quality_2){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
}else {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
}
}
} }
return; return;
} }
@@ -142,4 +132,17 @@ public class BreakBlock implements Listener {
} }
} }
} }
static void normalDrop(CropInstance cropInstance, int random, Location itemLoc, World world) {
for (int i = 0; i < random; i++){
double ran = Math.random();
if (ran < ConfigReader.Config.quality_1){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
}else if(ran > ConfigReader.Config.quality_2){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
}else {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
}
}
}
} }

View File

@@ -49,11 +49,11 @@ public class InteractEntity implements Listener {
int z = location.getBlockZ(); int z = location.getBlockZ();
int maxWater = config.getWater(); int maxWater = config.getWater();
int currentWater = 0; int currentWater = 0;
Location loc = location.subtract(0,1,0).getBlock().getLocation().add(0,1,0);
Sprinkler sprinkler = SprinklerManager.Cache.get(loc);
if (itemStack.getType() == Material.WATER_BUCKET){ if (itemStack.getType() == Material.WATER_BUCKET){
itemStack.setType(Material.BUCKET); itemStack.setType(Material.BUCKET);
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BUCKET_FILL,1,1); player.getWorld().playSound(player.getLocation(), Sound.ITEM_BUCKET_FILL,1,1);
Location loc = location.subtract(0,1,0).getBlock().getLocation().add(0,1,0);
Sprinkler sprinkler = SprinklerManager.Cache.get(loc);
if (sprinkler != null){ if (sprinkler != null){
currentWater = sprinkler.getWater(); currentWater = sprinkler.getWater();
currentWater += ConfigReader.Config.sprinklerRefill; currentWater += ConfigReader.Config.sprinklerRefill;
@@ -62,21 +62,27 @@ public class InteractEntity implements Listener {
} }
sprinkler.setWater(currentWater); sprinkler.setWater(currentWater);
}else { }else {
StringBuilder stringBuilder = new StringBuilder().append(world).append(".").append(x/16).append(",").append(z/16).append(".").append(x).append(",").append(location.getBlockY()).append(",").append(z).append(".water"); String path = world + "." + x / 16 + "," + z / 16 + "." + x + "," + location.getBlockY() + "," + z + ".water";
currentWater = plugin.getSprinklerManager().data.getInt(stringBuilder.toString()); currentWater = plugin.getSprinklerManager().data.getInt(path);
currentWater += ConfigReader.Config.sprinklerRefill; currentWater += ConfigReader.Config.sprinklerRefill;
if (currentWater > maxWater){ if (currentWater > maxWater){
currentWater = maxWater; currentWater = maxWater;
} }
plugin.getSprinklerManager().data.set(stringBuilder.toString(), currentWater); plugin.getSprinklerManager().data.set(path, currentWater);
}
}else {
if (sprinkler != null){
currentWater = sprinkler.getWater();
}else {
String path = world + "." + x / 16 + "," + z / 16 + "." + x + "," + location.getBlockY() + "," + z + ".water";
currentWater = plugin.getSprinklerManager().data.getInt(path);
} }
} }
Location loc = armorStand.getLocation().add(0, ConfigReader.Message.sprinklerOffset,0);
if (ConfigReader.Message.hasSprinklerInfo){ if (ConfigReader.Message.hasSprinklerInfo){
String string = ConfigReader.Message.sprinklerLeft + ConfigReader.Message.sprinklerFull.repeat(currentWater) + String string = ConfigReader.Message.sprinklerLeft + ConfigReader.Message.sprinklerFull.repeat(currentWater) +
ConfigReader.Message.sprinklerEmpty.repeat(maxWater - currentWater) + ConfigReader.Message.sprinklerRight; ConfigReader.Message.sprinklerEmpty.repeat(maxWater - currentWater) + ConfigReader.Message.sprinklerRight;
if(HoloUtil.cache.get(player) == null) { if(HoloUtil.cache.get(player) == null) {
HoloUtil.showHolo(string.replace("{max_water}", String.valueOf(maxWater)).replace("{water}", String.valueOf(currentWater)), player, loc, ConfigReader.Message.sprinklerTime); HoloUtil.showHolo(string.replace("{max_water}", String.valueOf(maxWater)).replace("{water}", String.valueOf(currentWater)), player, location.add(0, ConfigReader.Message.sprinklerOffset,0), ConfigReader.Message.sprinklerTime);
} }
} }
} }

View File

@@ -5,7 +5,6 @@ import de.tr7zw.changeme.nbtapi.NBTItem;
import dev.lone.itemsadder.api.CustomBlock; import dev.lone.itemsadder.api.CustomBlock;
import dev.lone.itemsadder.api.CustomStack; import dev.lone.itemsadder.api.CustomStack;
import net.momirealms.customcrops.ConfigReader; import net.momirealms.customcrops.ConfigReader;
import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.datamanager.CropManager; import net.momirealms.customcrops.datamanager.CropManager;
import net.momirealms.customcrops.datamanager.PotManager; import net.momirealms.customcrops.datamanager.PotManager;
import net.momirealms.customcrops.datamanager.SeasonManager; import net.momirealms.customcrops.datamanager.SeasonManager;
@@ -92,19 +91,12 @@ public class RightClick implements Listener {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack()); world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
} }
} }
}else {
BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
} }
} }
else { else {
for (int i = 0; i < random; i++){ BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
double ran = Math.random();
if (ran < ConfigReader.Config.quality_1){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
}else if(ran > ConfigReader.Config.quality_2){
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
}else {
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
}
}
} }
}else { }else {
customBlock.getLoot().forEach(loot-> location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), loot)); customBlock.getLoot().forEach(loot-> location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), loot));
@@ -225,13 +217,30 @@ public class RightClick implements Listener {
} }
String namespacedID = customBlock.getNamespacedID(); String namespacedID = customBlock.getNamespacedID();
if (namespacedID.equals(ConfigReader.Basic.pot) || namespacedID.equals(ConfigReader.Basic.watered_pot)){ if (namespacedID.equals(ConfigReader.Basic.pot) || namespacedID.equals(ConfigReader.Basic.watered_pot)){
itemStack.setAmount(itemStack.getAmount() - 1); CustomBlock customBlockUp = CustomBlock.byAlreadyPlaced(block.getLocation().clone().add(0,1,0).getBlock());
player.getWorld().playSound(player.getLocation(), Sound.ITEM_HOE_TILL,1,1); if (customBlockUp != null){
addFertilizer(fertilizerConfig, block); if (fertilizerConfig.isBefore() && customBlockUp.getNamespacedID().contains("_stage_")){
}else if (!fertilizerConfig.isBefore() && namespacedID.contains("_stage_")){ AdventureManager.playerMessage(player, ConfigReader.Message.prefix + ConfigReader.Message.beforePlant);
itemStack.setAmount(itemStack.getAmount() - 1); return;
addFertilizer(fertilizerConfig, block); }else {
player.getWorld().playSound(player.getLocation(), Sound.ITEM_HOE_TILL,1,1); itemStack.setAmount(itemStack.getAmount() - 1);
player.getWorld().playSound(player.getLocation(), Sound.ITEM_HOE_TILL,1,1);
addFertilizer(fertilizerConfig, block);
}
}else {
itemStack.setAmount(itemStack.getAmount() - 1);
player.getWorld().playSound(player.getLocation(), Sound.ITEM_HOE_TILL,1,1);
addFertilizer(fertilizerConfig, block);
}
}else if (namespacedID.contains("_stage_")){
if (!fertilizerConfig.isBefore()){
itemStack.setAmount(itemStack.getAmount() - 1);
addFertilizer(fertilizerConfig, block);
player.getWorld().playSound(player.getLocation(), Sound.ITEM_HOE_TILL,1,1);
}else {
AdventureManager.playerMessage(player, ConfigReader.Message.prefix + ConfigReader.Message.beforePlant);
return;
}
} }
return; return;
} }
@@ -249,6 +258,7 @@ public class RightClick implements Listener {
return; return;
} }
Sprinkler sprinklerData = new Sprinkler(sprinkler.get().getRange(), 0); Sprinkler sprinklerData = new Sprinkler(sprinkler.get().getRange(), 0);
itemStack.setAmount(itemStack.getAmount() - 1);
SprinklerManager.Cache.put(location.add(0,1,0), sprinklerData); SprinklerManager.Cache.put(location.add(0,1,0), sprinklerData);
IAFurniture.placeFurniture(sprinkler.get().getNamespacedID_2(),location); IAFurniture.placeFurniture(sprinkler.get().getNamespacedID_2(),location);
return; return;

View File

@@ -1,6 +1,5 @@
package net.momirealms.customcrops.utils; package net.momirealms.customcrops.utils;
import net.momirealms.customcrops.ConfigReader;
import net.momirealms.customcrops.CustomCrops; import net.momirealms.customcrops.CustomCrops;
import java.io.File; import java.io.File;

View File

@@ -8,7 +8,6 @@ import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.momirealms.customcrops.ConfigReader;
import net.momirealms.customcrops.CustomCrops; import net.momirealms.customcrops.CustomCrops;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;

View File

@@ -1,16 +1,6 @@
package net.momirealms.customcrops.utils; package net.momirealms.customcrops.utils;
public class WateringCan { public record WateringCan(int max, int width, int length) {
private final int max;
private final int width;
private final int length;
public WateringCan(int max, int width, int length){
this.length = length;
this.max = max;
this.width = width;
}
public int getMax() { public int getMax() {
return max; return max;

View File

@@ -1,7 +1,7 @@
config: config:
#插件兼容 #插件兼容
integration: integration:
#收获flag为harvest 浇水种植flag为build #收获flag为destroy 浇水种植flag为build
Residence: false Residence: false
#收获flag为BLOCK-BREAK 浇水种植flag为BUILD #收获flag为BLOCK-BREAK 浇水种植flag为BUILD
WorldGuard: false WorldGuard: false
@@ -9,6 +9,9 @@ config:
Kingdoms: false Kingdoms: false
#信任的玩家可以收获、浇水和种植 #信任的玩家可以收获、浇水和种植
GriefDefender: false GriefDefender: false
#拥有地皮权限的玩家可以收获、浇水和种植
PlotSquared: false
#生长时间点(tick) #生长时间点(tick)
#洒水器将会在农作物全部完成生长后开始工作 #洒水器将会在农作物全部完成生长后开始工作
@@ -19,6 +22,8 @@ config:
quality: quality:
#若不启用则植物成熟阶段会掉落IA配置里的loot #若不启用则植物成熟阶段会掉落IA配置里的loot
#如果关闭产物品质需要在IA物品配置内自行添加最后一阶段掉落物 #如果关闭产物品质需要在IA物品配置内自行添加最后一阶段掉落物
#如果你使用的领地插件不被兼容,请不要启用产物品质功能,
#请立即更换领地插件或寻找作者写领地兼容
enable: true enable: true
#默认品质权重比 #默认品质权重比
default-ratio: 17/2/1 default-ratio: 17/2/1

View File

@@ -23,6 +23,7 @@ messages:
force-save: '成功强制保存缓存信息!' force-save: '成功强制保存缓存信息!'
back-up: '已完成数据备份!' back-up: '已完成数据备份!'
set-season: '成功切换世界 {world} 的季节为 {season}!' set-season: '成功切换世界 {world} 的季节为 {season}!'
before-plant: '这种肥料必须在种植前使用!'
#全息信息显示 #全息信息显示
hologram: hologram:
@@ -39,7 +40,7 @@ hologram:
#洒水器信息 #洒水器信息
sprinkler-info: sprinkler-info:
enable: true enable: true
y-offset: -0.2 y-offset: 0.8
duration: 1 duration: 1
#可用变量 {water}当前水量 {max_water}最大蓄水量 #可用变量 {water}当前水量 {max_water}最大蓄水量
left: '<font:customcrops:default>뀂' left: '<font:customcrops:default>뀂'

View File

@@ -11,6 +11,7 @@ softdepend:
- Kingdoms - Kingdoms
- WorldGuard - WorldGuard
- GriefDefender - GriefDefender
- PlotSquared
authors: [ XiaoMoMi ] authors: [ XiaoMoMi ]
commands: commands:
customcrops: customcrops: