mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-22 16:39:36 +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>保护!");
|
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 setSeason;
|
||||||
public static String wrongArgs;
|
public static String wrongArgs;
|
||||||
public static String forceSave;
|
public static String forceSave;
|
||||||
|
public static String noSeason;
|
||||||
public static boolean hasCropInfo;
|
public static boolean hasCropInfo;
|
||||||
public static boolean hasSprinklerInfo;
|
public static boolean hasSprinklerInfo;
|
||||||
public static boolean hasWaterInfo;
|
public static boolean hasWaterInfo;
|
||||||
@@ -347,6 +356,7 @@ public class ConfigReader {
|
|||||||
wrongArgs = config.getString("messages.wrong-args");
|
wrongArgs = config.getString("messages.wrong-args");
|
||||||
forceSave = config.getString("messages.force-save");
|
forceSave = config.getString("messages.force-save");
|
||||||
beforePlant = config.getString("messages.before-plant");
|
beforePlant = config.getString("messages.before-plant");
|
||||||
|
noSeason = config.getString("messages.no-season","当前世界没有季节");
|
||||||
|
|
||||||
hasCropInfo = config.getBoolean("hologram.grow-info.enable");
|
hasCropInfo = config.getBoolean("hologram.grow-info.enable");
|
||||||
if (hasCropInfo){
|
if (hasCropInfo){
|
||||||
|
|||||||
@@ -79,10 +79,12 @@ public final class CustomCrops extends JavaPlugin {
|
|||||||
this.potManager = new PotManager(this);
|
this.potManager = new PotManager(this);
|
||||||
this.potManager.loadData();
|
this.potManager.loadData();
|
||||||
|
|
||||||
NBTItem nbtItem = new NBTItem(new ItemStack(Material.WHEAT));
|
|
||||||
|
|
||||||
//启动完成
|
//启动完成
|
||||||
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#F5DEB3>插件已加载!作者:小默米 QQ:3266959688");
|
AdventureManager.consoleMessage("<gradient:#ff206c:#fdee55>[CustomCrops] </gradient><color:#F5DEB3>插件已加载!作者:小默米 QQ:3266959688");
|
||||||
|
|
||||||
|
NBTItem nbtItem = new NBTItem(new ItemStack(Material.WHEAT));
|
||||||
|
nbtItem.getItem();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
package net.momirealms.customcrops.integrations;
|
||||||
|
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
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.LocalPlayer;
|
||||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
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.flags.Flags;
|
||||||
|
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -15,11 +18,11 @@ public record WorldGuard() implements Integration {
|
|||||||
@Override
|
@Override
|
||||||
public boolean canPlace(Location location, Player player) {
|
public boolean canPlace(Location location, Player player) {
|
||||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||||
RegionContainer container = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer();
|
World world = BukkitAdapter.adapt(location.getWorld());
|
||||||
RegionQuery query = container.createQuery();
|
WorldGuardPlatform platform = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform();
|
||||||
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
|
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
|
||||||
if (set != null){
|
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||||
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
|
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BUILD);
|
||||||
}else {
|
}else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -28,13 +31,20 @@ public record WorldGuard() implements Integration {
|
|||||||
@Override
|
@Override
|
||||||
public boolean canBreak(Location location, Player player) {
|
public boolean canBreak(Location location, Player player) {
|
||||||
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||||
RegionContainer container = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer();
|
World world = BukkitAdapter.adapt(location.getWorld());
|
||||||
RegionQuery query = container.createQuery();
|
WorldGuardPlatform platform = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform();
|
||||||
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(location));
|
if (hasRegion(world, BukkitAdapter.asBlockVector(location))){
|
||||||
if (set != null){
|
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||||
return query.testState(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
|
return query.testBuild(BukkitAdapter.adapt(location), localPlayer, Flags.BLOCK_BREAK);
|
||||||
}else {
|
}else {
|
||||||
return true;
|
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.bukkit.OfflinePlayer;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class Placeholders extends PlaceholderExpansion{
|
public class Placeholders extends PlaceholderExpansion{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -27,7 +29,7 @@ public class Placeholders extends PlaceholderExpansion{
|
|||||||
@Override
|
@Override
|
||||||
public String onRequest(OfflinePlayer player, String params) {
|
public String onRequest(OfflinePlayer player, String params) {
|
||||||
if (params.equalsIgnoreCase("season")){
|
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("spring", ConfigReader.Message.spring)
|
||||||
.replace("summer", ConfigReader.Message.summer)
|
.replace("summer", ConfigReader.Message.summer)
|
||||||
.replace("autumn", ConfigReader.Message.autumn)
|
.replace("autumn", ConfigReader.Message.autumn)
|
||||||
|
|||||||
@@ -9,9 +9,10 @@ config:
|
|||||||
Kingdoms: false
|
Kingdoms: false
|
||||||
#信任的玩家可以收获、浇水和种植
|
#信任的玩家可以收获、浇水和种植
|
||||||
GriefDefender: false
|
GriefDefender: false
|
||||||
#拥有地皮权限的玩家可以收获、浇水和种植
|
#拥有plot add的玩家可以收获、浇水和种植
|
||||||
PlotSquared: false
|
PlotSquared: false
|
||||||
|
#拥有Town权限的玩家可以收获、浇水和种植
|
||||||
|
Towny: false
|
||||||
|
|
||||||
#生长时间点(tick)
|
#生长时间点(tick)
|
||||||
#洒水器将会在农作物全部完成生长后开始工作
|
#洒水器将会在农作物全部完成生长后开始工作
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ messages:
|
|||||||
back-up: '<white>已完成数据备份!'
|
back-up: '<white>已完成数据备份!'
|
||||||
set-season: '<white>成功切换世界 {world} 的季节为 {season}!'
|
set-season: '<white>成功切换世界 {world} 的季节为 {season}!'
|
||||||
before-plant: '<white>这种肥料必须在种植前使用!'
|
before-plant: '<white>这种肥料必须在种植前使用!'
|
||||||
|
no-season: '当前世界没有季节'
|
||||||
|
|
||||||
#全息信息显示
|
#全息信息显示
|
||||||
hologram:
|
hologram:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: CustomCrops
|
name: CustomCrops
|
||||||
version: '1.5.1'
|
version: '1.5.3'
|
||||||
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