本文最后更新于8 天前,其中的信息可能已经过时,如有错误请发送邮件到nahrice@qq.com
服务器介绍
服务器地址:进群了解,端口19132,服务器版本1.21.9,开启白名单
拥有CFSP假人系统,以及coralfans内置的诸多功能。
qq群聊:975420648。
实用功能介绍
- 手持仙人掌右键可旋转的方块可以对方块进行旋转。
- 强制打开本来不能打开的容器。
- 自动填充方块(从潜影盒和背包)。
- 自动补充图腾。
- 强制放置。
- 管理计划刻和游戏运行。
- 查看服务器卡顿并定位卡顿源头。
- 禁止一切爆炸事件。
- 村庄结构可视化。
- TPA传送home建家。
CoralFans实用功能
/fc
类似java灵魂出窍,旁观模式。
/func
- 拥有调整全局功能配置的能力
/func forceopen <IsOpen: Boolean>
/func forceplace <all|entity|normal>
/func noclip <IsOpen: Boolean>
/func droppernocost <IsOpen: Boolean>
/func safeexplode <IsOpen: Boolean>
/func autotool <IsOpen: Boolean>
/func hoppercounter <IsOpen: Boolean>
/func maxpt <maxpt: int>
/func containerreader <IsOpen: Boolean>
/func autototem <IsOpen: Boolean>
/func autoitem <IsOpen: Boolean>
/func fastdrop <IsOpen: Boolean>
/func portaldisabled <IsOpen: Boolean>Copy to clipboardErrorCopied
func forceopen
强制开启容器func forceplace
方块强制放置all
表示无视所有限制,entity
表示无视实体,normal
表示正常模式
func noclip
创造模式无碰撞箱func droppernocost
投掷器不消耗物品func safeexplode
爆炸不破坏地形func autotool
自动切换工具func hoppercounter
漏斗计数器func maxpt
最大计划刻func containerreader
容器预览func autototem
自动补充图腾func autoitem
物品自动补货func fastdrop
快速扔出背包所有同类物品func portaldisabled
玩家禁用传送门- func可以开启或者关闭部分功能的全局开关。功能分为两类,全局功能和个人功能。对于个人功能,需要使用func和self同时开启该功能才会生效;对于全局功能,只需要使用func指令开启,该功能则会令全服务器的所有玩家生效。
/self autotool <IsOpen: Boolean>
/self autotool mindamage <mindamage: int>
/self containerreader <IsOpen: Boolean>
/self autototem <IsOpen: Boolean>
/self autoitem <IsOpen: Boolean>
/self fastdrop <IsOpen: Boolean>
/self portaldisabled <IsOpen: Boolean>Copy to clipboardErrorCopied
- self autotool 自动切换工具
self autotool mindamage
可以设置工具最小耐久值。低于耐久值的工具不会被自动选择
self containerreader
容器预览self autototem
自动补充图腾self autoitem
物品自动补货self fastdrop
快速扔出背包所有同类物品self portaldisabled
玩家禁用传送门- 当对应的功能没有在
func
指令中全局开启时,self
指令会一直将其配置为false
/minerule
- 用于修改游戏规则
/minerule fuck_bedrock_no_drop <IsOpen: Boolean>
/minerule fuck_movingBlock_no_drop <IsOpen: Boolean>
/minerule remove_portal_pigzombie_cd <IsOpen: Boolean>
/minerule replicated_portal_sand_farm <IsOpen: Boolean>Copy to clipboardErrorCopied
minerule fuck_bedrock_no_drop
还原旧版本基岩可掉落minerule fuck_movingBlock_no_drop
修复movingBlock破坏时不掉落的bugminerule remove_portal_pigzombie_cd
移除猪人15s传送cdminerule replicated_portal_sand_farm
还原旧版本折跃门刷沙机
/village
- 拥有显示村庄信息的能力
/village show <bounds|raid|spawn|center|poi|bind> <IsOpen: Boolean> /village list /village info <id: softenum> /village dweller
village show <bounds|raid|spawn|center|poi|bind> <IsOpen: Boolean>
用于开关村庄相关的可视化:bind
村民绑定信息可视化bounds
村庄范围可视化center
村庄中心可视化poi
POI的查询范围可视化raid
劫掠刷新边界可视化spawn
铁傀儡刷新范围可视化
village list
列出所有正在加载的村庄village info <id: softenum>
显示指定VID或UUID的村庄的信息village dweller
获取指向实体(村民)的信息
假人实用功能
/sp
- 打开ui界面来操作假人
/sp p 假人名 navto x y z
- 控制假人寻路到指定的[pos: x y z]地点(仅距离假人15格以内有效),不输入x y z则是寻路到玩家准星指向的方块上
脚本系统
腐竹已经写了一些假人的脚本,如下
/sp p SIM-猪人塔 script t.lua
/sp p SIM-猪人塔 script c.lua
/sp p SIM-猪人塔 script s.lua 1 340
对应于
投掷"SIM-猪人塔"所有的三叉戟直到没有三叉戟
查看"SIM-猪人塔"的背包有什么物品和和这些物品的id
把"SIM-猪人塔"的背包里面的id为340的物品放到主手
(id340对应的是钻石剑,不清楚物品id可以先把物品丢给假人,再用第二个脚本指令查看id)
需要更多脚本要自行书写,详细书写方式可参考https://nahrice.cn/2025/07/30/coralfans的CFSP Lua Api Doc,或者访问https://coralfans-dev.github.io/CoralFans-doc/#/CFSP/CFSPLuaDoc?id=cfsp-lua-api-doc
以下是腐竹写的脚本的具体内容,可做参考使用。
-- 假人背包检查脚本
local checkedSlots = {} -- 记录已检查的槽位
function Init(arg)
thisPlayer = SimPlayer
-- 正确输出假人信息
thisPlayer:chat("§e===== 背包检查开始 =====")
thisPlayer:chat("§b执行者: "..thisPlayer:getName())
log("脚本执行者:", thisPlayer:getName(), "XUID:", thisPlayer:getXuid())
return true
end
function Tick()
-- 安全遍历0-35主背包槽位
for slot = 0, 35 do
if not checkedSlots[slot] then
local success, item = pcall(function()
return SimPlayer:getItemFromInv(slot)
end)
if success and item then
local itemName = item:getName() or "未知"
local itemType = item:getType() or "未知"
local itemId = item:getId() or 0
local itemCount = item:getCount() or 0
-- 游戏内播报
SimPlayer:chat(string.format("槽位 %d: %s (ID: %d)", slot, itemName, itemId))
-- 控制台日志
log(string.format("槽位 %2d: %s (ID: %d, 类型: %s, 数量: %d)",
slot, itemName, itemId, itemType, itemCount))
checkedSlots[slot] = true
else
checkedSlots[slot] = true
end
end
end
-- 检查是否全部完成
local allChecked = true
for i = 0, 35 do
if not checkedSlots[i] then
allChecked = false
break
end
end
if allChecked then
SimPlayer:chat("§a背包检查完成!")
log("===== 背包检查完成 =====")
return false
end
return true
end
-- 假人自动装备物品脚本
-- 用法: /sp p 假人名 script equip_item.lua 物品ID
local targetItemId = nil
local thisPlayer = nil
function Init(arg)
thisPlayer = SimPlayer
thisPlayer:chat("§e===== 装备主手开始 =====")
thisPlayer:chat("§b执行者: "..thisPlayer:getName())
log("原始参数:", arg, "类型:", type(arg))
-- 解析参数
targetItemId = tonumber(arg)
if not targetItemId then
thisPlayer:chat("§c错误: 需要提供物品ID参数!")
thisPlayer:chat("§b正确用法: /sp p 假人名 script s.lua 物品ID")
return false
end
thisPlayer:chat(string.format("§a正在寻找物品ID: %d", targetItemId))
return true
end
function Tick()
if not thisPlayer then return false end
-- 搜索整个背包(0-35是主背包,36-39是装备栏)
local foundSlot = -1
for slot = 0, 39 do
local item = thisPlayer:getItemFromInv(slot)
if item and item:getId() == targetItemId then
foundSlot = slot
break
end
end
if foundSlot == -1 then
thisPlayer:chat(string.format("§c背包中没有找到ID为 %d 的物品", targetItemId))
return false
end
-- 主手对应快捷栏槽位(0-8)
local hotbarSlot = 0 -- 默认第一个快捷栏
-- 特殊处理:如果物品已在快捷栏,直接选中
if foundSlot <= 8 then
hotbarSlot = foundSlot
else
-- 将物品移动到快捷栏
if not thisPlayer:selectSlot(foundSlot) then
thisPlayer:chat("§c选择物品失败!")
return false
end
-- 丢出再捡起强制刷新(部分服务器需要)
thisPlayer:dropSelectedItem()
thisPlayer:runCmd("/clear @s -1 0") -- 清除掉落物避免干扰
end
-- 选中主手槽位
if thisPlayer:selectSlot(hotbarSlot) then
local item = thisPlayer:getItemFromInv(hotbarSlot)
local itemName = item and item:getName() or "未知物品"
thisPlayer:chat(string.format("§a已装备到主手: §e%s §7(槽位 %d, ID: %d)",
itemName, hotbarSlot, targetItemId))
-- 强制刷新手持状态(部分服务器需要)
thisPlayer:useItem(1) -- 模拟右键点击
else
thisPlayer:chat("§c主手装备失败!")
end
return false -- 只执行一次
end
-- 假人自动投掷三叉戟脚本
local TRIED_ID = 579 -- 三叉戟的物品ID
local thisPlayer = nil -- 存储当前假人引用
function Init(arg)
thisPlayer = SimPlayer -- 初始化时保存假人引用
thisPlayer:chat("§e===== 自动投掷三叉戟开始 =====")
thisPlayer:chat("§b执行者: "..thisPlayer:getName())
log("脚本执行者:", thisPlayer:getName(), "XUID:", thisPlayer:getXuid())
return true
end
function Tick()
if not thisPlayer then return false end -- 安全校验
-- 搜索三叉戟
local slot = thisPlayer:searchInInvWithId(TRIED_ID)
if slot == -1 then
thisPlayer:chat("§c背包中没有三叉戟了")
log(thisPlayer:getName(), "背包中没有三叉戟")
return false
end
-- 获取物品信息用于日志
local item = thisPlayer:getItemFromInv(slot)
local itemName = item and item:getName() or "三叉戟"
-- 选择并投掷
if thisPlayer:selectSlot(slot) then
thisPlayer:chat(string.format("§a投掷 %s (槽位 %d)", itemName, slot))
log(string.format("%s 投掷三叉戟 (槽位 %d)", thisPlayer:getName(), slot))
thisPlayer:useItem(20) -- 投掷动作
return true
else
thisPlayer:chat("§c选择三叉戟失败!")
return false
end
end
不错哦