diff --git a/src/main/java/net/momirealms/customcrops/CustomCrops.java b/src/main/java/net/momirealms/customcrops/CustomCrops.java index 7dbf4da..fa72830 100644 --- a/src/main/java/net/momirealms/customcrops/CustomCrops.java +++ b/src/main/java/net/momirealms/customcrops/CustomCrops.java @@ -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()); } } diff --git a/src/main/java/net/momirealms/customcrops/datamanager/BackUp.java b/src/main/java/net/momirealms/customcrops/datamanager/BackUp.java index 27a20ba..3b0f1d5 100644 --- a/src/main/java/net/momirealms/customcrops/datamanager/BackUp.java +++ b/src/main/java/net/momirealms/customcrops/datamanager/BackUp.java @@ -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); diff --git a/src/main/java/net/momirealms/customcrops/datamanager/ConfigManager.java b/src/main/java/net/momirealms/customcrops/datamanager/ConfigManager.java index 9d49ffe..989136c 100644 --- a/src/main/java/net/momirealms/customcrops/datamanager/ConfigManager.java +++ b/src/main/java/net/momirealms/customcrops/datamanager/ConfigManager.java @@ -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()); } diff --git a/src/main/java/net/momirealms/customcrops/integrations/GriefDefenderIntegrations.java b/src/main/java/net/momirealms/customcrops/integrations/GriefDefenderIntegrations.java new file mode 100644 index 0000000..709ac8a --- /dev/null +++ b/src/main/java/net/momirealms/customcrops/integrations/GriefDefenderIntegrations.java @@ -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); + } +} diff --git a/src/main/java/net/momirealms/customcrops/integrations/IntegrationCheck.java b/src/main/java/net/momirealms/customcrops/integrations/IntegrationCheck.java index 7462c6c..8e72048 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/IntegrationCheck.java +++ b/src/main/java/net/momirealms/customcrops/integrations/IntegrationCheck.java @@ -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)){ + canH = true; + }else { + return false; } } - if(ConfigManager.Config.res){ - if(ResidenceIntegrations.checkResHarvest(location,player)){ - return true; + 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; + } } - 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; + } } - return false; + if(ConfigManager.Config.gd){ + if(GriefDefenderIntegrations.checkGDBuild(location, player)){ + canB = true; + }else { + return false; + } + } + return canB; } -} +} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/integrations/KingdomsXIntegrations.java b/src/main/java/net/momirealms/customcrops/integrations/KingdomsXIntegrations.java index 8d77dd3..8f01ad9 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/KingdomsXIntegrations.java +++ b/src/main/java/net/momirealms/customcrops/integrations/KingdomsXIntegrations.java @@ -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 false; + return true; } } diff --git a/src/main/java/net/momirealms/customcrops/integrations/ResidenceIntegrations.java b/src/main/java/net/momirealms/customcrops/integrations/ResidenceIntegrations.java index 358ccd6..f3bad98 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/ResidenceIntegrations.java +++ b/src/main/java/net/momirealms/customcrops/integrations/ResidenceIntegrations.java @@ -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; } } diff --git a/src/main/java/net/momirealms/customcrops/integrations/WorldGuardIntegrations.java b/src/main/java/net/momirealms/customcrops/integrations/WorldGuardIntegrations.java index 391ac71..fc415e8 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/WorldGuardIntegrations.java +++ b/src/main/java/net/momirealms/customcrops/integrations/WorldGuardIntegrations.java @@ -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); } -} +} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customcrops/listener/RightClickBlock.java b/src/main/java/net/momirealms/customcrops/listener/RightClickBlock.java index 1719bdc..88d1e72 100644 --- a/src/main/java/net/momirealms/customcrops/listener/RightClickBlock.java +++ b/src/main/java/net/momirealms/customcrops/listener/RightClickBlock.java @@ -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; } //高度限制 diff --git a/src/main/java/net/momirealms/customcrops/listener/RightClickCustomBlock.java b/src/main/java/net/momirealms/customcrops/listener/RightClickCustomBlock.java index 2d6e49e..ca1e684 100644 --- a/src/main/java/net/momirealms/customcrops/listener/RightClickCustomBlock.java +++ b/src/main/java/net/momirealms/customcrops/listener/RightClickCustomBlock.java @@ -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 coolDown; + { + coolDown = new HashMap(); + } + @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则进行下一步 diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 166484c..9cbd64a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -85,8 +85,10 @@ config: residence: false #收获flag为BLOCK-BREAK 浇水种植flag为BUILD worldguard: false - #只有王国成员可以破坏浇水和种植 + #只有王国成员可以收获、浇水和种植 kingdomsX: false + #信任的玩家可以收获、浇水和种植 + griefdefender: false #MineDown格式Wiki diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1d41d6a..c18b15d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -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: