mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-22 08:29:35 +00:00
Towny Support + WorldGuard Fix
This commit is contained in:
@@ -188,6 +188,14 @@ public class ConfigReader {
|
||||
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>PlotSquared <color:#FFEBCD>保护!");
|
||||
}
|
||||
}
|
||||
if(config.getBoolean("config.integration.Towny",false)){
|
||||
if(Bukkit.getPluginManager().getPlugin("Towny") == null){
|
||||
CustomCrops.instance.getLogger().warning("未检测到插件 Towny!");
|
||||
}else {
|
||||
integration.add(new Towny());
|
||||
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#FFEBCD>已启用 <gold>Towny <color:#FFEBCD>保护!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,6 +312,7 @@ public class ConfigReader {
|
||||
public static String setSeason;
|
||||
public static String wrongArgs;
|
||||
public static String forceSave;
|
||||
public static String noSeason;
|
||||
public static boolean hasCropInfo;
|
||||
public static boolean hasSprinklerInfo;
|
||||
public static boolean hasWaterInfo;
|
||||
@@ -347,6 +356,7 @@ public class ConfigReader {
|
||||
wrongArgs = config.getString("messages.wrong-args");
|
||||
forceSave = config.getString("messages.force-save");
|
||||
beforePlant = config.getString("messages.before-plant");
|
||||
noSeason = config.getString("messages.no-season","当前世界没有季节");
|
||||
|
||||
hasCropInfo = config.getBoolean("hologram.grow-info.enable");
|
||||
if (hasCropInfo){
|
||||
|
||||
@@ -79,10 +79,12 @@ public final class CustomCrops extends JavaPlugin {
|
||||
this.potManager = new PotManager(this);
|
||||
this.potManager.loadData();
|
||||
|
||||
NBTItem nbtItem = new NBTItem(new ItemStack(Material.WHEAT));
|
||||
|
||||
//启动完成
|
||||
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#F5DEB3>插件已加载!作者:小默米 QQ:3266959688");
|
||||
|
||||
NBTItem nbtItem = new NBTItem(new ItemStack(Material.WHEAT));
|
||||
nbtItem.getItem();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package net.momirealms.customcrops.integrations;
|
||||
|
||||
import com.palmergames.bukkit.towny.object.TownyPermission;
|
||||
import com.palmergames.bukkit.towny.utils.PlayerCacheUtil;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Towny implements Integration{
|
||||
|
||||
@Override
|
||||
public boolean canBreak(Location location, Player player) {
|
||||
return TownyPermission(player, location, TownyPermission.ActionType.DESTROY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlace(Location location, Player player) {
|
||||
return TownyPermission(player, location, TownyPermission.ActionType.BUILD);
|
||||
}
|
||||
|
||||
private boolean TownyPermission(Player player, Location location, TownyPermission.ActionType actionType){
|
||||
return PlayerCacheUtil.getCachePermission(player, location, location.getBlock().getType(), actionType);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,13 @@
|
||||
package net.momirealms.customcrops.integrations;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldedit.world.World;
|
||||
import com.sk89q.worldguard.LocalPlayer;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.internal.platform.WorldGuardPlatform;
|
||||
import com.sk89q.worldguard.protection.flags.Flags;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||
import org.bukkit.Location;
|
||||
@@ -15,11 +18,11 @@ public record WorldGuard() implements Integration {
|
||||
@Override
|
||||
public boolean canPlace(Location location, Player player) {
|
||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||
RegionContainer container = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
RegionQuery query = container.createQuery();
|
||||
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
|
||||
if (set != null){
|
||||
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
|
||||
World world = BukkitAdapter.adapt(location.getWorld());
|
||||
WorldGuardPlatform platform = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform();
|
||||
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
|
||||
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
|
||||
}else {
|
||||
return true;
|
||||
}
|
||||
@@ -28,13 +31,20 @@ public record WorldGuard() implements Integration {
|
||||
@Override
|
||||
public boolean canBreak(Location location, Player player) {
|
||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||
RegionContainer container = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
RegionQuery query = container.createQuery();
|
||||
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
|
||||
if (set != null){
|
||||
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
|
||||
World world = BukkitAdapter.adapt(location.getWorld());
|
||||
WorldGuardPlatform platform = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform();
|
||||
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
|
||||
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
|
||||
}else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasRegion(World world, BlockVector3 vector){
|
||||
RegionContainer container = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
RegionManager regionManager = container.get(world);
|
||||
if (regionManager == null) return true;
|
||||
return regionManager.getApplicableRegions(vector).size() > 0;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class Placeholders extends PlaceholderExpansion{
|
||||
|
||||
@Override
|
||||
@@ -27,7 +29,7 @@ public class Placeholders extends PlaceholderExpansion{
|
||||
@Override
|
||||
public String onRequest(OfflinePlayer player, String params) {
|
||||
if (params.equalsIgnoreCase("season")){
|
||||
return SeasonManager.SEASON.get(player.getPlayer().getWorld().getName())
|
||||
return Optional.ofNullable(SeasonManager.SEASON.get(player.getPlayer().getWorld().getName())).orElse(ConfigReader.Message.noSeason)
|
||||
.replace("spring", ConfigReader.Message.spring)
|
||||
.replace("summer", ConfigReader.Message.summer)
|
||||
.replace("autumn", ConfigReader.Message.autumn)
|
||||
|
||||
Reference in New Issue
Block a user