Doc ID: SIRC-154

Residence API 与变量文档

Residence 领地插件官方 API 与全部 PAPI 变量整理:5 大接口、27 个事件、139 个 flag 与 31 个 %residence_% 变量。

Overview

Residence API 与变量文档

Residence 是一款经典的 Minecraft 领地保护插件(原作者 bekvon,现由 Zrips 维护)。玩家可自行圈地、设置权限旗帜、出租或出售领地,管理员可配置玩家组上限。插件对外提供官方 Java API(ResidenceApi 入口 + 5 大接口)、27 个事件以及 31 个内置 PlaceholderAPI 变量,并支持 Folia。

  • 插件主类:com.bekvon.bukkit.residence.Residence
  • 版本线:6.x(本文基于最新发布版 6.0.2.3 源码整理)
  • 硬依赖:CMILib;软依赖:PlaceholderAPI、Vault、WorldEdit、WorldGuard 等
  • Folia 支持:是(plugin.yml: folia-supported: true

依赖引入

Residence 可通过 JitPack 引入:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.Zrips</groupId>
    <artifactId>Residence</artifactId>
    <version>6.0.2.3</version>
    <scope>provided</scope>
</dependency>

注:如处理 ResidenceChatEvent 中的 CMIChatColor 等类型,需要同时引入 CMILib。

包名结构

内容
com.bekvon.bukkit.residence 主类 Residence、命令与配置
com.bekvon.bukkit.residence.api 官方 API:ResidenceApi 与 5 个接口
com.bekvon.bukkit.residence.protection 领地核心:ClaimedResidenceResidenceManagerFlagPermissionsResidencePermissionsCuboidAreaPlayerManagerLeaseManager
com.bekvon.bukkit.residence.containers 数据容器:ResidencePlayerFlags
com.bekvon.bukkit.residence.permissions 权限组:PermissionGroupPermissionManager
com.bekvon.bukkit.residence.economy / .economy.rent 经济:ResidenceBankRentManagerRentedLandRentableLand
com.bekvon.bukkit.residence.chat 聊天频道:ChatManagerChatChannel
com.bekvon.bukkit.residence.event 全部 27 个事件
com.bekvon.bukkit.residence.Placeholders PAPI 变量实现

API 入口:ResidenceApi

com.bekvon.bukkit.residence.api.ResidenceApi(全静态方法):

方法 返回类型 实现类
getResidenceManager() ResidenceInterface ResidenceManager
getPlayerManager() ResidencePlayerInterface PlayerManager
getChatManager() ChatInterface ChatManager
getMarketBuyManager() MarketBuyInterface TransactionManager
getMarketRentManager() MarketRentInterface RentManager

也可以直接使用 Residence.getInstance().getResidenceManager() 获取完整实现类;对外发布插件建议使用接口。

API 接口方法清单

1. ResidenceInterface(领地管理)

方法 说明
ClaimedResidence getByLoc(Location loc) 按坐标获取领地(无则 null)
ClaimedResidence getByName(String name) 按名称获取领地
void addShop(ClaimedResidence res) / addShop(String res) 加入商店列表
void removeShop(...) 移出商店列表
List<ClaimedResidence> getShops() 商店领地列表
boolean addResidence(String name, Location loc1, Location loc2) 创建领地
boolean addResidence(String name, String owner, Location loc1, Location loc2) 指定主人创建
boolean addResidence(Player player, String name, Location loc1, Location loc2, boolean resadmin) 玩家创建(支持 resadmin)
boolean addResidence(Player player, String name, boolean resadmin) 用当前选区创建

2. ResidencePlayerInterface(玩家数据)

方法 说明
ArrayList<String> getResidenceList(String player) 玩家名下领地列表
ArrayList<String> getResidenceList(UUID uuid) 同上(UUID)
ArrayList<String> getResidenceList(String player, boolean showhidden) 可选包含隐藏领地
ResidencePlayer getResidencePlayer(String player) 获取玩家包装对象

3. ChatInterface(领地聊天)

方法 说明
boolean setChannel(UUID player, String resName) 已废弃(Deprecated)
boolean setChannel(UUID player, ClaimedResidence res) 加入领地聊天频道
boolean removeFromChannel(UUID player) 离开频道
ChatChannel getChannel(String channel) 按名称获取频道
ChatChannel getPlayerChannel(UUID player) 玩家当前频道

4. MarketBuyInterface(领地买卖)

方法 说明
Map<String, Integer> getBuyableResidences() 可购买领地 → 价格
void buyPlot(String areaname, Player player, boolean resadmin) 购买
void removeFromSale(String areaname) 下架
boolean isForSale(String areaname) 是否在售
int getSaleAmount(String name) 售价
boolean putForSale(String areaname, int amount) 已废弃(Deprecated)
boolean putForSale(ClaimedResidence res, int amount) 上架出售

5. MarketRentInterface(领地租赁)

方法 说明
Set<ClaimedResidence> getRentableResidences() 可租赁领地
Set<ClaimedResidence> getCurrentlyRentedResidences() 出租中的领地
RentedLand getRentedLand(String landName) 租赁数据
List<String> getRentedLands(String playerName) 玩家租到的领地
void setForRent(...) 设为出租(含 StayInMarket / AllowAutoPay 重载)
void rent(Player, String, boolean repeat, boolean resadmin) 租下
void removeFromForRent(...) / void unrent(...) 取消出租 / 退租
void removeFromRent(String) / void removeRentable(String) 移除租赁 / 可租状态
boolean isForRent(String) / boolean isRented(String) 状态判断
String getRentingPlayer(String) 承租人
int getCostOfRent(String) 租金
boolean getRentableRepeatable(String) / getRentedAutoRepeats(String) 续租 / 自动续费
int getRentDays(String) 租赁天数
void checkCurrentRents() 检查过期租赁
void setRentRepeatable(...) / setRentedRepeatable(...) 设置续租
int getRentCount(UUID) / getRentableCount(UUID) 统计(String 版已废弃)

核心类常用方法

ClaimedResidence(protection,领地对象)

  • 名称与归属:getName()getResidenceName()setName(String)getOwner()getOwnerUUID()isOwner(...)isServerLand()
  • 层级结构:getParent()getTopParent()getTopParentName()isSubzone()isMainResidence()getSubzoneDeep()
  • 区域:getMainArea()getMainAreaName()getArea(String)getAreaMap()getAreaList()containsLoc(Location)checkCollision(CuboidArea)addArea(...)replaceArea(...)removeArea(...)
  • 子领地:addSubzone(...)removeSubzone(...)getSubzone(String)getSubzoneByLoc(Location)getSubzoneList()getSubzonesMap()
  • 权限与信任:getPermissions()isTrusted(Player/String/UUID)getTrustedPlayers()
  • 银行 / 价值:getBank()getWorth()getWorthByOwner()
  • 出售 / 出租:isForSell()getSellPrice()setSellPrice(...)isForRent()isRented()getRentable()getRentedLand()
  • 其他:getCreateTime()getTotalSize()getXZSize()getWorldName()getTeleportLocation(Player)kickFromResidence(Player)getChunks()remove()
  • 静态:ClaimedResidence.getByName(String)ClaimedResidence.getByLoc(Location)

ResidenceManager(protection)

  • 查询:getByLoc(Location)getByName(String)getByChunk(Chunk)getResidenceList(...)getResidences()getResidenceCount()
  • 创建 / 删除:addResidence(...)removeResidence(...)removeAllByOwner(String)
  • 管理:renameResidence(...)giveResidence(...)mirrorPerms(...)checkAreaCollision(...)
  • 商店:addShop(...)removeShop(...)getShops()
  • 统计:getOwnedZoneCount(...)hasMaxZones(...)

FlagPermissions / ResidencePermissions(protection)

  • 枚举:FlagState { TRUE, FALSE, NEITHER, INVALID }FlagCombo { OnlyTrue, OnlyFalse, TrueOrNone, FalseOrNone }
  • 判断:playerHas(Player, Flags, boolean)playerHas(Player, Flags, FlagCombo)has(Flags, boolean)groupHas(...)
  • 静态:FlagPermissions.has(Location, Flags, boolean)getPerms(Location/Player/World)
  • 修改:setFlag(String, FlagState)setPlayerFlag(...)setGroupFlag(...)
  • ResidencePermissions 额外:hasResidencePermission(...)applyTemplate(...)applyDefaultFlags()setOwner(...)mirrorPlayerFlags(...)

CuboidArea(protection)

CuboidArea(Location, Location)containsLoc(Location)checkCollision(CuboidArea)isAreaWithinArea(CuboidArea)getSize()getXSize()getYSize()getZSize()getHighLoc()getLowLoc()getWorld()getCost(PermissionGroup)getChunks()

ResidencePlayer(containers)

getPlayerName()getUniqueId()getPlayer()isOnline()getResAmount()getResList()getMainResidence()getMaxRes()getMaxX()getMaxZ()getMaxSubzones()getMaxSubzoneDepth()getMaxRents()getGroup()canBreakBlock(...)canPlaceBlock(...);静态:ResidencePlayer.get(Player/String/UUID)

PermissionGroup(permissions)

getMaxX()getMaxZ()getMaxZones()getMaxSubzones()getMaxSubzoneDepth()getMaxRents()getMaxRentDays()getCostperarea()getSellperarea()canCreateResidences()canBuyLand()canSellLand()hasTpAccess();静态:PermissionGroup.getGroup(Player/UUID[, world])

ResidenceBank(economy)

getStoredMoney()getStoredMoneyFormated()add(double)subtract(double)hasEnough(double)deposit(...)withdraw(...)

ChatChannel(chat)

getChannelName()chat(String source, String message)join(UUID)leave(UUID)hasMember(UUID)memberCount()

租赁数据类(economy.rent)

  • RentedLand:字段 playerstartTimeendTimeAutoPay;方法 hasValidRenter()getRenterName()getUniqueId()
  • RentableLand:字段 dayscostAllowRenewingStayInMarketAllowAutoPay

EconomyInterface(economy)

getBalance(...)canAfford(...)add(...)subtract(...)transfer(from, to, amount)getName()format(double)

LeaseManager(protection)

leaseExpires(...)isLeased(...)getExpireTime(...)setExpireTime(...)renewArea(...)getRenewCostD(...)doExpirations()

事件列表(共 27 个)

事件包:com.bekvon.bukkit.residence.event。带 RESIDENCE_* 常量的事件在源码中以 super("...") 传入事件名;可取消事件继承 CancellableResidence* 系列或实现 Cancellable

# 事件类 事件常量 继承 关键方法
1 ResidenceEvent —(基类) Event getResidence()、getMessage();静态 call/callSync/callAsync
2 CancellableResidenceEvent —(基类) ResidenceEvent isCancelled()、setCancelled(boolean)
3 CancellableResidencePlayerEvent —(基类) ResidencePlayerEvent isCancelled()、setCancelled(boolean)
4 CancellableResidencePlayerFlagEvent —(基类) ResidencePlayerFlagEvent isCancelled()、setCancelled(boolean)
5 ResidencePlayerEvent —(基类) ResidenceEvent getPlayer()、isPlayer()、isAdmin()
6 ResidencePlayerEventInterface —(接口) isAdmin()、isPlayer()、getPlayer()
7 ResidencePlayerFlagEvent —(基类) ResidenceFlagEvent 旗帜方法 + getPlayer()
8 ResidenceFlagEvent —(基类) ResidenceEvent getFlag()、getFlagType()、getFlagTargetPlayerOrGroup()
9 ResidenceFlagCheckEvent RESIDENCE_FLAG_CHECK ResidenceFlagEvent isOverriden()、overrideCheck(boolean)、getDefaultValue()
10 ResidenceFlagChangeEvent RESIDENCE_FLAG_CHANGE CancellableResidencePlayerFlagEvent getNewState()
11 ResidenceOwnerChangeEvent RESIDENCE_OWNER_CHANGE ResidenceEvent getNewOwner()、getNewOwnerUuid()
12 ResidenceCreationEvent RESIDENCE_CREATE CancellableResidencePlayerEvent getResidenceName()、getPhysicalArea()
13 ResidenceDeleteEvent RESIDENCE_DELETE CancellableResidencePlayerEvent getCause()(LEASE_EXPIRE / PLAYER_DELETE / OTHER)
14 ResidenceRentEvent RESIDENCE_RENT_EVENT CancellableResidencePlayerEvent getCause()(RENT / UNRENT / RENTABLE / UNRENTABLE / RENT_EXPIRE)
15 ResidenceAreaAddEvent RESIDENCE_AREA_ADD CancellableResidencePlayerEvent getResidenceName()、getPhysicalArea()
16 ResidenceAreaDeleteEvent RESIDENCE_AREA_DELETE CancellableResidencePlayerEvent getCause()
17 ResidenceChatEvent RESIDENCE_CHAT_EVENT CancellableResidencePlayerEvent getChatMessage() / setChatMessage()、getChatprefix() / setChatprefix()
18 ResidenceCommandEvent —(Bukkit 事件) Event getCommand()、getArgs()、getSender()
19 ResidenceChangedEvent RESIDENCE_CHANGE ResidencePlayerEvent getFrom()、getTo()
20 ResidenceTPEvent RESIDENCE_TP CancellableResidencePlayerEvent getRequestingPlayer()、getTeleportLocation()
21 ResidenceRenameEvent RESIDENCE_RENAME CancellableResidenceEvent getNewResidenceName()、setNewResidenceName()、getOldResidenceName()
22 ResidenceSizeChangeEvent RESIDENCE_SIZE_CHANGE CancellableResidencePlayerEvent getOldArea()、getNewArea()
23 ResidenceSubzoneCreationEvent RESIDENCE_SUBZONE_CREATE CancellableResidencePlayerEvent getResidenceName() / setResidenceName()、getPhysicalArea() / setPhysicalArea()
24 ResidenceRaidStartEvent —(Bukkit 事件) Event getRes()、getAttackers()、getDefenders()
25 ResidenceRaidPreStartEvent —(Bukkit 事件) Event getRes()、getAttackers()、getDefenders()
26 ResidenceRaidEndEvent —(Bukkit 事件) Event getRes()
27 ResidenceSelectionVisualizationEvent —(Bukkit 事件) PlayerEvent getAreas()、getErrorAreas()、isShortShow()

Flags 权限旗帜

  • 枚举类:com.bekvon.bukkit.residence.containers.Flags
  • 相关枚举:FlagState { TRUE, FALSE, NEITHER, INVALID }FlagCombo { OnlyTrue, OnlyFalse, TrueOrNone, FalseOrNone }FlagMode { Player, Residence, Both }
  • 工具方法:Flags.getFlag(String)getDesc()getFlagMode()isEnabled()
  • 共 139 个可用 flag(已排除源码注释项 overridepvp):
anvil, admin, animalfeeding, animalgriefing, animalkilling, animals, anchor, anvilbreak, safezone, backup, bank, bed, honey, honeycomb, beacon, brew, build, burn, button, boarding, brush, cake, canimals, cartography, chorustp, chat, cmonsters, commandblock, command, container, coords, copper, copperoxidation, coraldryup, creeper, dragongrief, day, dye, damage, decay, destroy, dryup, diode, door, egg, enchant, explode, elytra, enderpearl, fallinprotection, falldamage, feed, friendlyfire, fireball, firespread, fletching, flowinprotection, flow, flowerpot, grow, glow, goathorn, golemopenchest, grindstone, harvest, hotfloor, hidden, hook, healing, iceform, icemelt, ignite, itemdrop, itempickup, jump2, jump3, keepinv, keepexp, lavaflow, leash, lever, loom, minecartsuction, mobexpdrop, mobgriefing, mobitemdrop, mobkilling, monsters, move, nametag, nanimals, nmonsters, night, nofly, fly, nomobs, note, nodurability, pressure, piston, pistonprotection, place, push, pvp, raid, rain, respawn, riding, shoot, sun, shop, snowtrail, spread, skulk, smithing, snowball, sanimals, shear, smonsters, stonecutter, subzone, title, table, tnt, tp, trade, trample, use, visualizer, vehicledestroy, vehicleplacing, witherspawn, phantomspawn, windexplode, witherdamage, witherdestruction, waterflow, wspeed1, wspeed2

常用速查:

flag 说明
build / destroy / place 建造破坏总开关 / 仅破坏 / 仅放置
use / container 交互总开关 / 容器使用
pvp 领地内 PvP
tnt / explode / creeper / fireball 爆炸相关
firespread / ignite 火焰蔓延 / 点火
mobgriefing / animalgriefing 怪物 / 动物破坏
animalkilling / mobkilling 击杀动物 / 击杀怪物
monsters / nmonsters / nomobs 怪物生成相关
itempickup / itemdrop 拾取 / 丢弃物品
move 移动限制(禁止进出)
tp / enderpearl / chorustp 传送相关
bank 领地银行存取
subzone 创建子领地
admin 修改领地 flags
chat / title / hidden / coords / visualizer 聊天 / 提示 / 隐藏 / 坐标 / 粒子
keepinv / keepexp / respawn 死亡保留物品 / 经验、自动重生
fly / nofly / elytra / wspeed1 / wspeed2 飞行与速度
jump2 / jump3 跳跃高度
day / night / sun / rain 时间与天气
FlagPermissions perms = res.getPermissions();
boolean canBuild = perms.playerHas(player, Flags.build, true);
perms.setFlag("build", FlagPermissions.FlagState.FALSE);

变量(PlaceholderAPI)

注册与格式说明

  • 插件内置 PAPI 扩展(Placeholders/PlaceholderAPIHook.java),identifier 为 residence,加载后自动注册(persist: true),无需额外扩展。
  • 所有变量以 %residence_ 开头;带参数变量把参数直接拼接在末尾。
  • 游戏内可使用 /res placeholders 查看变量列表。
  • 普通变量按玩家缓存 1000ms;带参数变量不缓存。

变量完整列表(共 31 个)

A. 玩家领地信息

变量 描述
%residence_user_main_name% 玩家“主领地”名称,无则空
%residence_user_main_owner% 玩家主领地所有者
%residence_user_amount% 玩家拥有领地数量

B. 权限组与限制

变量 描述
%residence_user_group% 玩家权限组名
%residence_user_admin% 是否领地管理员(true/false)
%residence_user_cancreate% 组是否允许创建领地
%residence_user_maxres% 最大领地数量
%residence_user_maxew% 东西范围(minX-maxX)
%residence_user_maxns% 南北范围(minZ-maxZ)
%residence_user_maxud% 高度范围(minYSize-maxYSize)
%residence_user_maxsub% 最大子领地数量
%residence_user_maxsubdepth% 最大子领地层级
%residence_user_maxrents% 最大可租赁数量
%residence_user_maxrentdays% 最长租赁天数
%residence_user_blockcost% 每方块购买价格
%residence_user_blocksell% 每方块出售价格

C. 当前所在领地(按玩家当前位置实时计算)

变量 描述
%residence_user_current_owner% 当前领地所有者
%residence_user_current_res% 当前领地名称(子领地含“父.子”前缀)
%residence_user_current_resname% 当前领地原始名称
%residence_user_current_bank% 领地银行余额(无领地返回 0)
%residence_user_current_qsize% 领地总体积
%residence_user_current_ssize% 领地水平面积(XZ)
%residence_user_current_forsale% 是否出售中
%residence_user_current_saleprice% 出售价格
%residence_user_current_forrent% 是否出租中
%residence_user_current_rentprice% 租金
%residence_user_current_rentdays% 租赁天数
%residence_user_current_rentedby% 承租人
%residence_user_current_rentends% 租赁到期时间(按配置短日期格式)

D. 带参数变量

变量 描述
%residence_user_current_flag_<flag名>% 玩家在当前领地对某 flag 的判定(TrueOrNone),返回 true/false。示例:%residence_user_current_flag_build%
%residence_ownername_<领地名>% 描述为“根据领地名获取领主名”,但源码实际返回领地名称;取领主名建议使用 %residence_user_current_owner%%residence_user_main_owner%

使用示例

我的领地数量: %residence_user_amount%
所在领地: %residence_user_current_res% (主人: %residence_user_current_owner%)
领地银行: %residence_user_current_bank%
建造权限: %residence_user_current_flag_build%
可租赁上限: %residence_user_maxrents%

注意事项

  1. 需安装 PlaceholderAPI;扩展随 Residence 自动注册。
  2. 普通变量有 1000ms 缓存;current_* 变量依赖玩家在线位置。
  3. 布尔结果取自语言文件(默认 true/false)。
  4. current_bank / qsize / ssize 无领地时返回 0,其余当前领地为空串。
  5. 变量列表与 6.0.2.3 / master 源码一致(31 项)。

代码示例

import com.bekvon.bukkit.residence.api.ResidenceApi;
import com.bekvon.bukkit.residence.containers.Flags;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;

ClaimedResidence res = ResidenceApi.getResidenceManager().getByLoc(player.getLocation());
if (res != null && res.getPermissions().playerHas(player, Flags.build, true)) {
    // 玩家有权在此建造
}
@EventHandler
public void onResidenceCreate(ResidenceCreationEvent e) {
    if (e.getResidenceName().equalsIgnoreCase("spawn")) {
        e.setCancelled(true);
    }
}

指令列表(完整)

  • 主命令:/res(别名 /residence);管理命令:/resadmin;插件管理:/resreload/resload;领地聊天:/rc
  • 支持通过 /res <命令> ? 或附加页码查看帮助(如 /res select ?/res market ?/res flags ?
  • 以下列表整理自插件内置帮助(Language 文件 CommandHelp 树)与 commands 包源码

1. 选区与创建

指令 说明
/res select [x] [y] [z] 选区命令(以你为中心按尺寸选区)
/res select coords 显示选区坐标
/res select size 显示选区尺寸
/res select auto [玩家名称] 开启自动选区工具
/res select cost 显示选区价格
/res select vert 纵向扩展到最大高度和深度
/res select sky 扩展到最大高度
/res select bedrock 扩展到最大深度
/res select expand <长度> 向面对方向扩展选区
/res select shift <距离> 向面对方向平移选区
/res select chunk 选择你所在的区块
/res select residence <领地名称> 选择领地中一个存在的区域
/res select worldedit 以 WorldEdit 当前选区作为领地选区
/res auto [领地名称] [范围] 以你为中心创建可创建的最大领地
/res create [领地名称] 创建领地
/res expand <领地名称> [长度] 向面对方向扩展领地
/res contract <领地名称> [长度] 向面对方向缩小领地
/res remove [领地名称] 删除领地(需 /res confirm 确认)
/res confirm 确认删除指定领地

2. 领地信息与查询

指令 说明
/res info [领地名称] 显示领地的信息(留空为当前领地)
/res current 显示你当前所在的领地
/res list <玩家名称> <页码> <世界名称> 显示玩家的领地列表
/res listall <页码> <世界名称> <-a/-f> 列出所有的领地
/res listhidden <玩家名称> <页码> 列出玩家的隐藏领地
/res listallhidden <页码> 列出服务器中的所有隐藏领地
/res sublist <领地名称> <页码> 列出指定领地的所有子领地
/res check [领地名称] [权限] <玩家名称> 查看权限状态
/res limits <玩家名称> 显示你的领地限制
/res show <领地名称> 显示领地的边界
/res compass <领地名称> 将指南针指向领地
/res tool 显示选区/查看领地信息的工具名称
/res material [材料ID] 通过 ID 查看是否存在对应的材料
/res version 显示领地插件版本

3. 区域与子领地

指令 说明
/res area list [领地名称] <页码> 列出领地的区域
/res area listall [领地名称] <页码> 列出领地区域的坐标和详细信息
/res area add [领地名称] [区域ID] 为领地添加区域(需先选中两个选取点)
/res area remove [领地名称] [区域ID] 删除领地的区域
/res area replace [领地名称] [区域ID] 替换领地的区域(需先选中两个选取点)
/res renamearea [领地名称] [区域旧名称] [区域新名称] 修改领地区域名称
/res subzone <领地名称> [子领地名称] 在领地中创建子领地

4. 权限管理

指令 说明
/res set <领地名称> [权限] [true/false/remove] 为领地设置公共权限
/res pset <领地名称> [玩家名称] [权限] [true/false/remove] 为玩家设置特定权限(removeall 清除全部)
/res gset <领地名称> [权限组] [权限] [true/false/remove] 为权限组设置特定权限
/res flags ? 查看权限(flag)列表
/res clearflags <领地名称> 清除领地所有权限
/res reset <领地名称/all> 将领地重置为默认权限
/res setall [权限] [true/false/remove] 设置自己所有领地的公共权限
/res setallfor [玩家名称] [权限] [true/false/remove] 设置指定玩家所有领地的公共权限
/res mirror [来源领地] [目标领地] 克隆领地权限
/res pmirror [领地] [来源玩家] [目标玩家] 克隆玩家在领地中的权限
/res lset <领地名称> [blacklist/ignorelist] [物品] 物品黑名单/忽略名单(info 查看现状)
/res lists add/remove/apply/set/pset/gset/view 预定义权限列表管理

pset 支持快捷组合权限:trusted(build+use+move+container+tp)、redstone(lever+diode+button+pressure+note)、admin(领地管理)。

5. 玩家与所有权

指令 说明
/res padd <领地名称> [玩家名称] 向领地添加玩家(基本权限)
/res pdel <领地名称> [玩家名称] 从领地删除玩家(基本权限)
/res give <领地名称> [玩家名称] <-s> 将领地给予指定玩家(<-s> 含子领地)
/res rename [旧名称] [新名称] 重命名领地
/res setmain <领地名称> 设置为主领地(用于聊天前缀)
/res message <领地名称> [enter/leave] [消息文本] 设置进入/离开提示(变量:%player、%playerDisplay、%owner、%residence、%zone)
/res command <领地名称> <allow/block/list> <命令> 管理领地允许/禁止的命令
/res kick <玩家名称> 将玩家踢出领地
/res bank [deposit/withdraw] <领地名称> [数额] 领地银行存取(需 bank 权限)
/res removeall [玩家名称] 删除玩家的所有领地(需 resadmin 权限)
/res removeworld [世界名称] <例外玩家> 删除指定世界所有领地(仅控制台)
/res signconvert 转换 ResidenceSign 的告示牌
/res signupdate 更新领地告示牌

6. 领地市场(/res market)

指令 说明
/res market ? 市场帮助
/res market Info [领地名称] 查看领地经济信息(出售/出租状态与价格)
/res market list [rent/sell] 列出正在出租/出售的领地
/res market sell [领地名称] [售价] 出售领地
/res market buy [领地名称] 购买领地
/res market unsell [领地名称] 取消出售
/res market sign [领地名称] 设置市场告示牌
/res market rent [领地名称] <自动续租> 租用领地
/res market rentable [领地名称] [价格] [天数] <可续租> <留在市场> <可自动续租> 将领地设为出租
/res market autopay [领地名称] [true/false] 开关领地自动续租
/res market payrent [领地名称] 支付租金
/res market confirm 确认退租操作
/res market unrent [领地名称] 退租 / 取消出租

7. 领地聊天(/res rc、/rc)

指令 说明
/res rc [领地名称] 加入指定或当前领地的聊天频道
/res rc leave 离开领地聊天频道
/res rc setcolor [颜色代码] 设置频道文字颜色
/res rc setprefix [前缀] 设置频道前缀
/res rc kick [玩家名称] 从频道中踢出玩家
/rc 聊天快捷命令(/rc l、/rc setprefix、/rc setcolor、/rc kick)

8. 领地商店(/res shop)

指令 说明
/res shop list 显示领地商店列表
/res shop vote <领地名称> [分数] 为领地商店评分
/res shop like <领地名称> 为领地商店点赞
/res shop votes <领地名称> <页码> 列出领地商店的评分
/res shop likes <领地名称> <页码> 列出领地商店的赞
/res shop setdesc [描述文字] 设置商店描述(支持颜色代码,/n 换行)
/res shop createboard [位置] 创建商店宣传板
/res shop deleteboard 移除商店宣传板

9. 袭击系统(Raid)

指令 说明
/res raid start [领地名称] <玩家名称> 开始对领地的袭击
/res raid stop [领地名称] 停止袭击
/res raid kick [玩家名称] 踢出袭击参与者
/res raid immunity [add/take/set/clear] [领地名称/当前领地] [时长] 设置袭击免疫
/res raidstatus <领地名称/玩家名称> 查看领地袭击状态
/res attack [领地名称] 开始对领地进行袭击
/res defend [领地名称] <玩家名称> 加入袭击防守
/res leaveraid 离开袭击

10. 领地租约(/res lease、/resadmin lease)

指令 说明
/res lease cost [领地名称] 显示续租的价格
/res lease renew [领地名称] 续租指定领地
/resadmin lease set [领地名称] [天数/infinite] 设置租用时间(天数或无限)
/resadmin lease renew <领地名称> 续租指定或当前领地
/resadmin lease list <领地名称> <页码> 显示领地的租用列表
/resadmin lease expires <领地名称> 显示租约到期时间
/resadmin lease cost <领地名称> 显示续租价格

11. 传送相关

指令 说明
/res tp [领地名称] 传送到领地(需所有者或 tp 权限)
/res tpset 设置领地传送点(需站在领地内)
/res tpconfirm 忽略传送不安全的警告
/res unstuck 传送到领地外面
/res rt <世界名称> <玩家名称> 随机传送

12. 系统与管理(/resadmin 与顶层命令)

指令 说明
/resadmin [on/off] 开启/关闭领地管理员模式
/resadmin setowner [领地名称] [玩家名称] (-keepflags) 改变领地所有者
/resadmin setallowner [原拥有者] [新拥有者] (-keepflags) 转让玩家名下所有领地
/resadmin server [领地名称] 将领地设置为服务器拥有
/res save [领地名称] 将领地保存为模板
/res restore [领地名称] [序号] 从模板还原领地
/res reload [config/lang/groups/flags] 重新加载配置/语言/组/权限
/res resadmin [on/off] 管理员开关(/res 子命令形式)
/res placeholders <parse> <placeholder> <玩家名称> 列出并解析 Placeholder 变量
/resreload 重新加载领地插件
/resload 加载领地存档文件(不安全,不会先保存)

以上为插件内置帮助树整理的全部指令;不同版本可能略有差异,以游戏内 /res ? 帮助为准。

注意事项与已知偏差

  1. %residence_ownername_<领地名>%:描述为获取领主名,但 6.0.2.3 / master 源码实际返回领地名称(疑为源码 Bug)。
  2. 普通变量 1000ms 缓存;带参数变量实时计算。
  3. current_* 系列依赖玩家在线位置,批量调用时注意。
  4. 布尔输出走语言文件(默认 true/false)。
  5. 本文档适用于 Residence 6.x;旧版(4.x 等)事件与接口可能不同。
  6. ResidenceChatEvent 使用 CMILib 的 CMIChatColor 类型。

本文档基于 Zrips/Residence 6.0.2.3 官方源码整理。