9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-22 16:39:36 +00:00
This commit is contained in:
Xiao-MoMi
2022-06-19 20:24:58 +08:00
parent bea7e823b6
commit f4a9b3b217
12 changed files with 138 additions and 50 deletions

View File

@@ -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());
}
}

View File

@@ -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);

View File

@@ -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());
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
//高度限制

View File

@@ -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则进行下一步

View File

@@ -85,8 +85,10 @@ config:
residence: false
#收获flag为BLOCK-BREAK 浇水种植flag为BUILD
worldguard: false
#只有王国成员可以破坏浇水和种植
#只有王国成员可以收获、浇水和种植
kingdomsX: false
#信任的玩家可以收获、浇水和种植
griefdefender: false
#MineDown格式Wiki

View File

@@ -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: