mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-23 00:49:33 +00:00
1.5.6
This commit is contained in:
@@ -83,7 +83,6 @@ public class ConfigReader {
|
|||||||
cropGrowTimeList.forEach(time -> {
|
cropGrowTimeList.forEach(time -> {
|
||||||
if(time < 0 || time > 23999){
|
if(time < 0 || time > 23999){
|
||||||
AdventureManager.consoleMessage("<red>[CustomCrops] 农作物生长时间点必须位于0-23999之间");
|
AdventureManager.consoleMessage("<red>[CustomCrops] 农作物生长时间点必须位于0-23999之间");
|
||||||
cropGrowTimeList.remove(time);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -119,9 +118,9 @@ public class ConfigReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//农作物品质处理
|
//农作物品质处理
|
||||||
quality = config.getBoolean("config.quality.enable");
|
quality = config.getBoolean("config.quality.enable",true);
|
||||||
if (quality){
|
if (quality){
|
||||||
String[] split = StringUtils.split(config.getString("config.quality.default-ratio"), "/");
|
String[] split = StringUtils.split(config.getString("config.quality.default-ratio","17/2/1"), "/");
|
||||||
double[] ratios = new double[3];
|
double[] ratios = new double[3];
|
||||||
ratios[0] = Double.parseDouble(split[0]);
|
ratios[0] = Double.parseDouble(split[0]);
|
||||||
ratios[1] = Double.parseDouble(split[1]);
|
ratios[1] = Double.parseDouble(split[1]);
|
||||||
@@ -139,7 +138,6 @@ public class ConfigReader {
|
|||||||
worldNames.forEach(worldName -> {
|
worldNames.forEach(worldName -> {
|
||||||
World world = Bukkit.getWorld(worldName);
|
World world = Bukkit.getWorld(worldName);
|
||||||
if (world == null){
|
if (world == null){
|
||||||
worldNames.remove(worldName);
|
|
||||||
AdventureManager.consoleMessage("<red>[CustomCrops] 世界" + worldName + "" + "不存在");
|
AdventureManager.consoleMessage("<red>[CustomCrops] 世界" + worldName + "" + "不存在");
|
||||||
}else {
|
}else {
|
||||||
worlds.add(world);
|
worlds.add(world);
|
||||||
@@ -212,24 +210,31 @@ public class ConfigReader {
|
|||||||
public static String pot;
|
public static String pot;
|
||||||
public static String watered_pot;
|
public static String watered_pot;
|
||||||
public static String glass;
|
public static String glass;
|
||||||
public static String sprinkler_1;
|
|
||||||
public static String sprinkler_2;
|
|
||||||
public static String sprinkler_1i;
|
|
||||||
public static String sprinkler_2i;
|
|
||||||
public static String dead;
|
public static String dead;
|
||||||
public static String soilDetector;
|
public static String soilDetector;
|
||||||
|
public static boolean hasWaterLore;
|
||||||
|
public static String waterLeft;
|
||||||
|
public static String waterFull;
|
||||||
|
public static String waterEmpty;
|
||||||
|
public static String waterRight;
|
||||||
|
public static List<String> waterLore;
|
||||||
|
|
||||||
public static void loadBasic(){
|
public static void loadBasic(){
|
||||||
YamlConfiguration config = getConfig("basic.yml");
|
YamlConfiguration config = getConfig("basic.yml");
|
||||||
pot = config.getString("basic.pot");
|
pot = config.getString("basic.pot","customcrops:pot");
|
||||||
watered_pot = config.getString("basic.watered-pot");
|
watered_pot = config.getString("basic.watered-pot","customcrops:watered_pot");
|
||||||
glass = config.getString("basic.greenhouse-glass");
|
glass = config.getString("basic.greenhouse-glass","customcrops:greenhouse_glass");
|
||||||
sprinkler_1 = config.getString("basic.sprinkler-1");
|
dead = config.getString("basic.dead-crop","customcrops:crop_stage_death");
|
||||||
sprinkler_2 = config.getString("basic.sprinkler-2");
|
soilDetector = StringUtils.split(config.getString("basic.soil-detector","customcrops:soil_detector"),":")[1];
|
||||||
sprinkler_1i = config.getString("basic.sprinkler-1-item");
|
|
||||||
sprinkler_2i = config.getString("basic.sprinkler-2-item");
|
hasWaterLore = config.getBoolean("lore.watering-can.enable",false);
|
||||||
dead = config.getString("basic.dead-crop");
|
if (hasWaterLore){
|
||||||
soilDetector = StringUtils.split(config.getString("basic.soil-detector"),":")[1];
|
waterLeft = config.getString("lore.watering-can.left");
|
||||||
|
waterFull = config.getString("lore.watering-can.full");
|
||||||
|
waterEmpty = config.getString("lore.watering-can.empty");
|
||||||
|
waterRight = config.getString("lore.watering-can.right");
|
||||||
|
waterLore = config.getStringList("lore.watering-can.lore");
|
||||||
|
}
|
||||||
|
|
||||||
CANS.clear();
|
CANS.clear();
|
||||||
if (config.contains("water-can")){
|
if (config.contains("water-can")){
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ public class ItemSpawn implements Listener {
|
|||||||
if(event.getEntity() instanceof Item item) {
|
if(event.getEntity() instanceof Item item) {
|
||||||
if(CustomStack.byItemStack(item.getItemStack()) != null){
|
if(CustomStack.byItemStack(item.getItemStack()) != null){
|
||||||
String id = CustomStack.byItemStack(item.getItemStack()).getId();
|
String id = CustomStack.byItemStack(item.getItemStack()).getId();
|
||||||
// if(ConfigReader.SPRINKLERS.get(id) != null){
|
|
||||||
// item.remove();
|
|
||||||
// item.getWorld().dropItem(item.getLocation() ,CustomStack.getInstance(ConfigReader.SPRINKLERS.get(id).getNamespacedID_1()).getItemStack());
|
|
||||||
// }else
|
|
||||||
if(id.contains("_stage_")){
|
if(id.contains("_stage_")){
|
||||||
item.remove();
|
item.remove();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import de.tr7zw.changeme.nbtapi.NBTCompound;
|
|||||||
import de.tr7zw.changeme.nbtapi.NBTItem;
|
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.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.momirealms.customcrops.ConfigReader;
|
import net.momirealms.customcrops.ConfigReader;
|
||||||
import net.momirealms.customcrops.datamanager.CropManager;
|
import net.momirealms.customcrops.datamanager.CropManager;
|
||||||
import net.momirealms.customcrops.datamanager.PotManager;
|
import net.momirealms.customcrops.datamanager.PotManager;
|
||||||
@@ -34,6 +36,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -54,62 +57,7 @@ public class RightClick implements Listener {
|
|||||||
Action action = event.getAction();
|
Action action = event.getAction();
|
||||||
if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
|
if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
|
||||||
ItemStack itemStack = event.getItem();
|
ItemStack itemStack = event.getItem();
|
||||||
if (itemStack == null){
|
if (itemStack != null){
|
||||||
if (action != Action.RIGHT_CLICK_BLOCK) return;
|
|
||||||
Block block = event.getClickedBlock();
|
|
||||||
Location location = block.getLocation();
|
|
||||||
CustomBlock customBlock = CustomBlock.byAlreadyPlaced(block);
|
|
||||||
if (customBlock == null) return;
|
|
||||||
for (Integration integration : ConfigReader.Config.integration){
|
|
||||||
if (!integration.canBreak(location, player)) return;
|
|
||||||
}
|
|
||||||
String namespacedID = customBlock.getNamespacedID();
|
|
||||||
if (namespacedID.contains("_stage_")){
|
|
||||||
if(namespacedID.equals(ConfigReader.Basic.dead)) return;
|
|
||||||
String[] cropNameList = StringUtils.split(customBlock.getId(), "_");
|
|
||||||
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
|
|
||||||
if (CustomBlock.getInstance(StringUtils.chop(namespacedID) + nextStage) == null) {
|
|
||||||
if (ConfigReader.Config.quality){
|
|
||||||
CropInstance cropInstance = ConfigReader.CROPS.get(cropNameList[0]);
|
|
||||||
ThreadLocalRandom current = ThreadLocalRandom.current();
|
|
||||||
int random = current.nextInt(cropInstance.getMin(), cropInstance.getMax() + 1);
|
|
||||||
World world = location.getWorld();
|
|
||||||
Location itemLoc = location.clone().add(0.5,0.2,0.5);
|
|
||||||
Fertilizer fertilizer = PotManager.Cache.get(location.clone().subtract(0,1,0));
|
|
||||||
if (fertilizer != null){
|
|
||||||
if (fertilizer instanceof QualityCrop qualityCrop){
|
|
||||||
int[] weights = qualityCrop.getChance();
|
|
||||||
double weightTotal = weights[0] + weights[1] + weights[2];
|
|
||||||
double rank_1 = weights[0]/(weightTotal);
|
|
||||||
double rank_2 = 1 - weights[1]/(weightTotal);
|
|
||||||
for (int i = 0; i < random; i++){
|
|
||||||
double ran = Math.random();
|
|
||||||
if (ran < rank_1){
|
|
||||||
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
|
|
||||||
}else if(ran > rank_2){
|
|
||||||
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
|
|
||||||
}else {
|
|
||||||
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
customBlock.getLoot().forEach(loot-> location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), loot));
|
|
||||||
}
|
|
||||||
CustomBlock.remove(location);
|
|
||||||
CropInstance crop = ConfigReader.CROPS.get(cropNameList[0]);
|
|
||||||
if(crop.getReturnStage() != null){
|
|
||||||
CustomBlock.place(crop.getReturnStage(), location);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
NBTItem nbtItem = new NBTItem(itemStack);
|
NBTItem nbtItem = new NBTItem(itemStack);
|
||||||
NBTCompound nbtCompound = nbtItem.getCompound("itemsadder");
|
NBTCompound nbtCompound = nbtItem.getCompound("itemsadder");
|
||||||
if (nbtCompound != null){
|
if (nbtCompound != null){
|
||||||
@@ -179,12 +127,19 @@ public class RightClick implements Listener {
|
|||||||
if (wateringCan.getMax() > water){
|
if (wateringCan.getMax() > water){
|
||||||
nbtItem.setInteger("WaterAmount", water + 1);
|
nbtItem.setInteger("WaterAmount", water + 1);
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BUCKET_FILL,1,1);
|
player.getWorld().playSound(player.getLocation(), Sound.ITEM_BUCKET_FILL,1,1);
|
||||||
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
|
||||||
if (ConfigReader.Message.hasWaterInfo){
|
if (ConfigReader.Message.hasWaterInfo){
|
||||||
String string = ConfigReader.Message.waterLeft + ConfigReader.Message.waterFull.repeat(water + 1) +
|
String string = ConfigReader.Message.waterLeft + ConfigReader.Message.waterFull.repeat(water + 1) +
|
||||||
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water - 1) + ConfigReader.Message.waterRight;
|
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water - 1) + ConfigReader.Message.waterRight;
|
||||||
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water + 1)));
|
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water + 1)));
|
||||||
}
|
}
|
||||||
|
if (ConfigReader.Basic.hasWaterLore){
|
||||||
|
String string = (ConfigReader.Basic.waterLeft + ConfigReader.Basic.waterFull.repeat(water + 1) +
|
||||||
|
ConfigReader.Basic.waterEmpty.repeat(wateringCan.getMax() - water - 1) + ConfigReader.Basic.waterRight).replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water + 1));
|
||||||
|
List<String> lores = nbtItem.getCompound("display").getStringList("Lore");
|
||||||
|
lores.clear();
|
||||||
|
ConfigReader.Basic.waterLore.forEach(lore -> lores.add(GsonComponentSerializer.gson().serialize(MiniMessage.miniMessage().deserialize(lore.replace("{water_info}", string)))));
|
||||||
|
}
|
||||||
|
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -199,7 +154,6 @@ 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)){
|
||||||
nbtItem.setInteger("WaterAmount", water - 1);
|
nbtItem.setInteger("WaterAmount", water - 1);
|
||||||
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.BLOCK_WATER_AMBIENT,1,1);
|
player.getWorld().playSound(player.getLocation(), Sound.BLOCK_WATER_AMBIENT,1,1);
|
||||||
waterPot(wateringCan.getWidth(), wateringCan.getLength(), block.getLocation(), player.getLocation().getYaw());
|
waterPot(wateringCan.getWidth(), wateringCan.getLength(), block.getLocation(), player.getLocation().getYaw());
|
||||||
if (ConfigReader.Message.hasWaterInfo){
|
if (ConfigReader.Message.hasWaterInfo){
|
||||||
@@ -207,9 +161,16 @@ public class RightClick implements Listener {
|
|||||||
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Message.waterRight;
|
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Message.waterRight;
|
||||||
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1)));
|
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1)));
|
||||||
}
|
}
|
||||||
|
if (ConfigReader.Basic.hasWaterLore){
|
||||||
|
String string = (ConfigReader.Basic.waterLeft + ConfigReader.Basic.waterFull.repeat(water - 1) +
|
||||||
|
ConfigReader.Basic.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Basic.waterRight).replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1));
|
||||||
|
List<String> lores = nbtItem.getCompound("display").getStringList("Lore");
|
||||||
|
lores.clear();
|
||||||
|
ConfigReader.Basic.waterLore.forEach(lore -> lores.add(GsonComponentSerializer.gson().serialize(MiniMessage.miniMessage().deserialize(lore.replace("{water_info}", string)))));
|
||||||
|
}
|
||||||
|
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
||||||
}else if (namespacedID.contains("_stage_")){
|
}else if (namespacedID.contains("_stage_")){
|
||||||
nbtItem.setInteger("WaterAmount", water - 1);
|
nbtItem.setInteger("WaterAmount", water - 1);
|
||||||
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.BLOCK_WATER_AMBIENT,1,1);
|
player.getWorld().playSound(player.getLocation(), Sound.BLOCK_WATER_AMBIENT,1,1);
|
||||||
waterPot(wateringCan.getWidth(), wateringCan.getLength(), block.getLocation().subtract(0,1,0), player.getLocation().getYaw());
|
waterPot(wateringCan.getWidth(), wateringCan.getLength(), block.getLocation().subtract(0,1,0), player.getLocation().getYaw());
|
||||||
if (ConfigReader.Message.hasWaterInfo){
|
if (ConfigReader.Message.hasWaterInfo){
|
||||||
@@ -217,6 +178,14 @@ public class RightClick implements Listener {
|
|||||||
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Message.waterRight;
|
ConfigReader.Message.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Message.waterRight;
|
||||||
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1)));
|
AdventureManager.playerActionbar(player, string.replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1)));
|
||||||
}
|
}
|
||||||
|
if (ConfigReader.Basic.hasWaterLore){
|
||||||
|
String string = (ConfigReader.Basic.waterLeft + ConfigReader.Basic.waterFull.repeat(water - 1) +
|
||||||
|
ConfigReader.Basic.waterEmpty.repeat(wateringCan.getMax() - water + 1) + ConfigReader.Basic.waterRight).replace("{max_water}", String.valueOf(wateringCan.getMax())).replace("{water}", String.valueOf(water -1));
|
||||||
|
List<String> lores = nbtItem.getCompound("display").getStringList("Lore");
|
||||||
|
lores.clear();
|
||||||
|
ConfigReader.Basic.waterLore.forEach(lore -> lores.add(GsonComponentSerializer.gson().serialize(MiniMessage.miniMessage().deserialize(lore.replace("{water_info}", string)))));
|
||||||
|
}
|
||||||
|
itemStack.setItemMeta(nbtItem.getItem().getItemMeta());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -312,6 +281,61 @@ public class RightClick implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (action == Action.RIGHT_CLICK_BLOCK) {
|
||||||
|
Block block = event.getClickedBlock();
|
||||||
|
Location location = block.getLocation();
|
||||||
|
CustomBlock customBlock = CustomBlock.byAlreadyPlaced(block);
|
||||||
|
if (customBlock == null) return;
|
||||||
|
for (Integration integration : ConfigReader.Config.integration){
|
||||||
|
if (!integration.canBreak(location, player)) return;
|
||||||
|
}
|
||||||
|
String namespacedID = customBlock.getNamespacedID();
|
||||||
|
if (namespacedID.contains("_stage_")){
|
||||||
|
if(namespacedID.equals(ConfigReader.Basic.dead)) return;
|
||||||
|
String[] cropNameList = StringUtils.split(customBlock.getId(), "_");
|
||||||
|
int nextStage = Integer.parseInt(cropNameList[2]) + 1;
|
||||||
|
if (CustomBlock.getInstance(StringUtils.chop(namespacedID) + nextStage) == null) {
|
||||||
|
if (ConfigReader.Config.quality){
|
||||||
|
CropInstance cropInstance = ConfigReader.CROPS.get(cropNameList[0]);
|
||||||
|
ThreadLocalRandom current = ThreadLocalRandom.current();
|
||||||
|
int random = current.nextInt(cropInstance.getMin(), cropInstance.getMax() + 1);
|
||||||
|
World world = location.getWorld();
|
||||||
|
Location itemLoc = location.clone().add(0.5,0.2,0.5);
|
||||||
|
Fertilizer fertilizer = PotManager.Cache.get(location.clone().subtract(0,1,0));
|
||||||
|
if (fertilizer != null){
|
||||||
|
if (fertilizer instanceof QualityCrop qualityCrop){
|
||||||
|
int[] weights = qualityCrop.getChance();
|
||||||
|
double weightTotal = weights[0] + weights[1] + weights[2];
|
||||||
|
double rank_1 = weights[0]/(weightTotal);
|
||||||
|
double rank_2 = 1 - weights[1]/(weightTotal);
|
||||||
|
for (int i = 0; i < random; i++){
|
||||||
|
double ran = Math.random();
|
||||||
|
if (ran < rank_1){
|
||||||
|
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_1()).getItemStack());
|
||||||
|
}else if(ran > rank_2){
|
||||||
|
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_2()).getItemStack());
|
||||||
|
}else {
|
||||||
|
world.dropItem(itemLoc, CustomStack.getInstance(cropInstance.getQuality_3()).getItemStack());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
BreakBlock.normalDrop(cropInstance, random, itemLoc, world);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
customBlock.getLoot().forEach(loot-> location.getWorld().dropItem(location.clone().add(0.5,0.2,0.5), loot));
|
||||||
|
}
|
||||||
|
CustomBlock.remove(location);
|
||||||
|
CropInstance crop = ConfigReader.CROPS.get(cropNameList[0]);
|
||||||
|
if(crop.getReturnStage() != null){
|
||||||
|
CustomBlock.place(crop.getReturnStage(), location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,22 @@ water-can:
|
|||||||
width: 3
|
width: 3
|
||||||
length: 5
|
length: 5
|
||||||
|
|
||||||
|
lore:
|
||||||
|
#是否修改水壶物品的Lore
|
||||||
|
watering-can:
|
||||||
|
enable: true
|
||||||
|
#Lore样式
|
||||||
|
lore:
|
||||||
|
- '<italic:false><white>{water_info}'
|
||||||
|
- '<italic:false><gray>右键水方块为水壶加水'
|
||||||
|
|
||||||
|
#水量 {water_info}
|
||||||
|
#可用变量 {water}当前水量 {max_water}最大蓄水量
|
||||||
|
left: '<font:customcrops:default>뀂'
|
||||||
|
full: '뀁뀃'
|
||||||
|
empty: '뀁뀄'
|
||||||
|
right: '뀁뀅</font>'
|
||||||
|
|
||||||
sprinkler:
|
sprinkler:
|
||||||
sprinkler_1:
|
sprinkler_1:
|
||||||
#洒水器工作范围
|
#洒水器工作范围
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: CustomCrops
|
name: CustomCrops
|
||||||
version: '1.5.5'
|
version: '1.5.6'
|
||||||
main: net.momirealms.customcrops.CustomCrops
|
main: net.momirealms.customcrops.CustomCrops
|
||||||
api-version: 1.16
|
api-version: 1.16
|
||||||
depend:
|
depend:
|
||||||
|
|||||||
Reference in New Issue
Block a user