mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-22 16:39:36 +00:00
1.4.5
This commit is contained in:
@@ -24,7 +24,6 @@ public final class CustomCrops extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
saveDefaultConfig();
|
||||
|
||||
//加载配置文件
|
||||
ConfigManager.Config.ReloadConfig();
|
||||
@@ -67,9 +66,9 @@ public final class CustomCrops extends JavaPlugin {
|
||||
//检测papi依赖
|
||||
if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null){
|
||||
new Placeholders(this).register();
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &f检测到PlaceHolderAPI 已启用季节变量!",Bukkit.getConsoleSender());
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7检测到 &aPlaceHolderAPI &7已启用季节变量!",Bukkit.getConsoleSender());
|
||||
}
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &f自定义农作物插件已启用!作者:小默米 QQ:3266959688",Bukkit.getConsoleSender());
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7自定义农作物插件已启用!作者:小默米 QQ:3266959688",Bukkit.getConsoleSender());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,6 +84,6 @@ public final class CustomCrops extends JavaPlugin {
|
||||
|
||||
//备份
|
||||
BackUp.backUpData();
|
||||
MessageManager.consoleMessage(("&#ccfbff-#ef96c5&[CustomCrops] &f自定义农作物插件已卸载!作者:小默米 QQ:3266959688"),Bukkit.getConsoleSender());
|
||||
MessageManager.consoleMessage(("&#ccfbff-#ef96c5&[CustomCrops] &7自定义农作物插件已卸载!作者:小默米 QQ:3266959688"),Bukkit.getConsoleSender());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ public class BackUp {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
|
||||
|
||||
File crop_data = new File(CustomCrops.instance.getDataFolder(), "crop-data.yml");
|
||||
File cropBackUp = new File(CustomCrops.instance.getDataFolder(), "backups/"+ format.format(date) + "/" + "crop-data.yml");
|
||||
File cropBackUp = new File(CustomCrops.instance.getDataFolder(), "backups"+ File.separatorChar + format.format(date) + File.separatorChar + "crop-data.yml");
|
||||
File sprinkler_data = new File(CustomCrops.instance.getDataFolder(), "sprinkler-data.yml");
|
||||
File sprinklerBackUp = new File(CustomCrops.instance.getDataFolder(), "backups/"+ format.format(date) + "/" + "sprinkler-data.yml");
|
||||
File sprinklerBackUp = new File(CustomCrops.instance.getDataFolder(), "backups"+ File.separatorChar + format.format(date) + File.separatorChar + "sprinkler-data.yml");
|
||||
|
||||
try {
|
||||
BackUp.backUp(crop_data,cropBackUp);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package net.momirealms.customcrops.datamanager;
|
||||
|
||||
import dev.lone.itemsadder.api.CustomBlock;
|
||||
import net.momirealms.customcrops.CustomCrops;
|
||||
import net.momirealms.customcrops.utils.Crop;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@@ -25,6 +24,7 @@ public class ConfigManager {
|
||||
public static boolean res;
|
||||
public static boolean wg;
|
||||
public static boolean king;
|
||||
public static boolean gd;
|
||||
public static boolean season;
|
||||
public static boolean need_water;
|
||||
public static boolean greenhouse;
|
||||
@@ -77,15 +77,49 @@ public class ConfigManager {
|
||||
public static int max_sprinkler;
|
||||
|
||||
public static void ReloadConfig(){
|
||||
|
||||
CustomCrops.instance.saveDefaultConfig();
|
||||
CustomCrops.instance.reloadConfig();
|
||||
FileConfiguration configuration = CustomCrops.instance.getConfig();
|
||||
cropLoad();
|
||||
|
||||
//处理配置
|
||||
Config.res = configuration.getBoolean("integration.residence");
|
||||
Config.king = configuration.getBoolean("integration.kingdomsX");
|
||||
Config.wg = configuration.getBoolean("integration.worldguard");
|
||||
Config.res = configuration.getBoolean("config.integration.residence");
|
||||
Config.king = configuration.getBoolean("config.integration.kingdomsX");
|
||||
Config.wg = configuration.getBoolean("config.integration.worldguard");
|
||||
Config.gd = configuration.getBoolean("config.integration.griefdefender");
|
||||
|
||||
if(res){
|
||||
if(Bukkit.getPluginManager().getPlugin("Residence") == null){
|
||||
CustomCrops.instance.getLogger().warning("未检测到插件Residence!");
|
||||
res = false;
|
||||
}else {
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7检测到 &aResidence &7已启用领地保护!",Bukkit.getConsoleSender());
|
||||
}
|
||||
}
|
||||
if(king){
|
||||
if(Bukkit.getPluginManager().getPlugin("Kingdoms") == null){
|
||||
CustomCrops.instance.getLogger().warning("未检测到插件KingdomsX!");
|
||||
king = false;
|
||||
}else {
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7检测到 &aKingdomsX &7已启用领地保护!",Bukkit.getConsoleSender());
|
||||
}
|
||||
}
|
||||
if(wg){
|
||||
if(Bukkit.getPluginManager().getPlugin("WorldGuard") == null){
|
||||
CustomCrops.instance.getLogger().warning("未检测到插件WorldGuard!");
|
||||
wg = false;
|
||||
}else {
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7检测到 &aWorldGuard &7已启用区域保护!",Bukkit.getConsoleSender());
|
||||
}
|
||||
}
|
||||
if(gd){
|
||||
if(Bukkit.getPluginManager().getPlugin("GriefDefender") == null){
|
||||
CustomCrops.instance.getLogger().warning("未检测到插件GriefDefender!");
|
||||
gd = false;
|
||||
}else {
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7检测到 &aGriefDefender &7已启用领地保护!",Bukkit.getConsoleSender());
|
||||
}
|
||||
}
|
||||
|
||||
Config.season = configuration.getBoolean("enable-season");
|
||||
Config.need_water = configuration.getBoolean("config.bone-meal-consume-water");
|
||||
Config.greenhouse = configuration.getBoolean("config.enable-greenhouse");
|
||||
@@ -198,7 +232,7 @@ public class ConfigManager {
|
||||
}
|
||||
});
|
||||
if(keys.size() == CONFIG.size()){
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &f成功载入 &a" + CONFIG.size() + " &f种农作物", Bukkit.getConsoleSender());
|
||||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &7成功载入 &a" + CONFIG.size() + " &7种农作物", Bukkit.getConsoleSender());
|
||||
}else {
|
||||
MessageManager.consoleMessage("&c[CustomCrops] crops.yml配置存在错误,请根据上述提示仔细检查!", Bukkit.getConsoleSender());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package net.momirealms.customcrops.integrations;
|
||||
|
||||
import com.griefdefender.api.GriefDefender;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class GriefDefenderIntegrations {
|
||||
|
||||
public static boolean checkGDBreak(Location location, Player player){
|
||||
return GriefDefender.getCore().getUser(player.getUniqueId()).canBreak(location);
|
||||
}
|
||||
|
||||
public static boolean checkGDBuild(Location location, Player player){
|
||||
return GriefDefender.getCore().getUser(player.getUniqueId()).canPlace(player.getInventory().getItemInMainHand(), location);
|
||||
}
|
||||
}
|
||||
@@ -8,36 +8,68 @@ public class IntegrationCheck {
|
||||
|
||||
//收获权限检测
|
||||
public static boolean HarvestCheck(Location location, Player player){
|
||||
if(ConfigManager.Config.king){
|
||||
if(KingdomsXIntegrations.checkKDBuild(location,player)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
boolean canH = false;
|
||||
if(ConfigManager.Config.res){
|
||||
if(ResidenceIntegrations.checkResHarvest(location,player)){
|
||||
return true;
|
||||
if(ResidenceIntegrations.checkResHarvest(location, player)){
|
||||
canH = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.king){
|
||||
if(KingdomsXIntegrations.checkKDBuild(location, player)){
|
||||
canH = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.wg){
|
||||
return WorldGuardIntegrations.checkWGHarvest(location, player);
|
||||
}
|
||||
if(WorldGuardIntegrations.checkWGHarvest(location, player)){
|
||||
canH = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.gd){
|
||||
if(GriefDefenderIntegrations.checkGDBreak(location, player)){
|
||||
canH = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return canH;
|
||||
}
|
||||
//种植等权限检测
|
||||
public static boolean PlaceCheck(Location location, Player player){
|
||||
if(ConfigManager.Config.king){
|
||||
if(KingdomsXIntegrations.checkKDBuild(location,player)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
boolean canB = false;
|
||||
if(ConfigManager.Config.res){
|
||||
if(ResidenceIntegrations.checkResBuild(location,player)){
|
||||
return true;
|
||||
canB = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.king){
|
||||
if(KingdomsXIntegrations.checkKDBuild(location,player)){
|
||||
canB = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.wg){
|
||||
return WorldGuardIntegrations.checkWGBuild(location, player);
|
||||
}
|
||||
if(WorldGuardIntegrations.checkWGBuild(location, player)){
|
||||
canB = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(ConfigManager.Config.gd){
|
||||
if(GriefDefenderIntegrations.checkGDBuild(location, player)){
|
||||
canB = true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return canB;
|
||||
}
|
||||
}
|
||||
@@ -8,18 +8,18 @@ import org.kingdoms.constants.player.KingdomPlayer;
|
||||
|
||||
public class KingdomsXIntegrations {
|
||||
public static boolean checkKDBuild(Location location, Player player){
|
||||
KingdomPlayer kp = KingdomPlayer.getKingdomPlayer(player);
|
||||
Land land = Land.getLand(location);
|
||||
if (land == null) return false;
|
||||
if (land == null) return true;
|
||||
if (land.isClaimed()) {
|
||||
KingdomPlayer kp = KingdomPlayer.getKingdomPlayer(player);
|
||||
Kingdom cropKingdom = land.getKingdom();
|
||||
if (kp.getKingdom() != null) {
|
||||
Kingdom kingdom = kp.getKingdom();
|
||||
return kingdom != cropKingdom;
|
||||
}else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,25 @@ package net.momirealms.customcrops.integrations;
|
||||
|
||||
import com.bekvon.bukkit.residence.containers.Flags;
|
||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||
import com.bekvon.bukkit.residence.protection.FlagPermissions;
|
||||
import com.bekvon.bukkit.residence.protection.ResidencePermissions;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class ResidenceIntegrations {
|
||||
public static boolean checkResBuild(Location location, Player player){
|
||||
FlagPermissions.addFlag("build");
|
||||
ClaimedResidence res = com.bekvon.bukkit.residence.Residence.getInstance().getResidenceManager().getByLoc(location);
|
||||
if(res!=null){
|
||||
ResidencePermissions perms = res.getPermissions();
|
||||
boolean hasPermission = perms.playerHas(player, Flags.build, true);
|
||||
return !hasPermission;
|
||||
return perms.playerHas(player, Flags.build, true);
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
public static boolean checkResHarvest(Location location, Player player){
|
||||
FlagPermissions.addFlag("harvest");
|
||||
ClaimedResidence res = com.bekvon.bukkit.residence.Residence.getInstance().getResidenceManager().getByLoc(location);
|
||||
if(res!=null){
|
||||
ResidencePermissions perms = res.getPermissions();
|
||||
boolean hasPermission = perms.playerHas(player, Flags.harvest, true);
|
||||
return !hasPermission;
|
||||
return perms.playerHas(player, Flags.harvest, true);
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@ public class WorldGuardIntegrations {
|
||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
RegionQuery query = container.createQuery();
|
||||
return !query.testState(BukkitAdapter.adapt(loc), localPlayer, Flags.BUILD);
|
||||
return query.testState(BukkitAdapter.adapt(loc), localPlayer, Flags.BUILD);
|
||||
}
|
||||
public static boolean checkWGHarvest(Location loc,Player player){
|
||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
RegionQuery query = container.createQuery();
|
||||
return !query.testState(BukkitAdapter.adapt(loc), localPlayer, Flags.BLOCK_BREAK);
|
||||
return query.testState(BukkitAdapter.adapt(loc), localPlayer, Flags.BLOCK_BREAK);
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,7 @@ public class RightClickBlock implements Listener {
|
||||
if(namespacedId.equalsIgnoreCase(ConfigManager.Config.sprinkler_1i) || namespacedId.equalsIgnoreCase(ConfigManager.Config.sprinkler_2i)){
|
||||
Location location = event.getClickedBlock().getLocation();
|
||||
//兼容性检测
|
||||
if(IntegrationCheck.PlaceCheck(location,player)){
|
||||
if(!IntegrationCheck.PlaceCheck(location,player)){
|
||||
return;
|
||||
}
|
||||
//高度限制
|
||||
|
||||
@@ -18,12 +18,18 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
import static net.momirealms.customcrops.datamanager.CropManager.CROPS;
|
||||
|
||||
public class RightClickCustomBlock implements Listener {
|
||||
|
||||
private HashMap<Player, Long> coolDown;
|
||||
{
|
||||
coolDown = new HashMap<Player, Long>();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void rightClickCustomBlock(CustomBlockInteractEvent event){
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
@@ -39,7 +45,7 @@ public class RightClickCustomBlock implements Listener {
|
||||
CustomBlock clickedCustomBlock = CustomBlock.byAlreadyPlaced(clickedBlock);
|
||||
Player player = event.getPlayer();
|
||||
//兼容性检测
|
||||
if(!IntegrationCheck.HarvestCheck(clickedBlockLocation, player)){
|
||||
if(IntegrationCheck.HarvestCheck(clickedBlockLocation, player)){
|
||||
//获取点击方块的命名空间与ID
|
||||
String namespacedID = event.getNamespacedID();
|
||||
//如果ID内有stage则进行下一步
|
||||
|
||||
@@ -85,8 +85,10 @@ config:
|
||||
residence: false
|
||||
#收获flag为BLOCK-BREAK 浇水种植flag为BUILD
|
||||
worldguard: false
|
||||
#只有王国成员可以破坏浇水和种植
|
||||
#只有王国成员可以收获、浇水和种植
|
||||
kingdomsX: false
|
||||
#信任的玩家可以收获、浇水和种植
|
||||
griefdefender: false
|
||||
|
||||
|
||||
#MineDown格式Wiki
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
name: CustomCrops
|
||||
version: '1.4.4'
|
||||
version: '1.4.5'
|
||||
main: net.momirealms.customcrops.CustomCrops
|
||||
api-version: 1.16
|
||||
depend:
|
||||
- ItemsAdder
|
||||
softdepend:
|
||||
- PlaceholderAPI
|
||||
- Residence
|
||||
- Kingdoms
|
||||
- WorldGuard
|
||||
- GriefDefender
|
||||
authors: [ XiaoMoMi ]
|
||||
commands:
|
||||
customcrops:
|
||||
|
||||
Reference in New Issue
Block a user