
CC:游戏手柄
CC:游戏手柄为CC:Tweaked添加了一个外设方块,使ComputerCraft计算机能够读取玩家的真实游戏手柄/控制器输入。
查看大图CC: Gamepads 添加了一个 CC:Tweaked 外设方块,让 ComputerCraft 计算机能够读取玩家的真实游戏手柄/控制器输入。
控制器在玩家客户端读取,发送到服务器,并通过绑定的 Gamepad 外设暴露给 Lua。这适用于单人游戏、局域网和专用多人服务器。 要求
Minecraft 1.21.1
NeoForge 21.1.x
CC:Tweaked 1.117.1
使用方法
将 Gamepad 外设方块放置在 CC:Tweaked 计算机旁边,或通过调制解调器连接到计算机。
手持一个 Gamepad 物品。
手持 Gamepad 物品潜行右键点击 Gamepad 外设方块以进行绑定。
将绑定的 Gamepad 物品保持在主手或副手。
插入/通过蓝牙连接你的控制器,并在计算机上运行 Lua 代码。
最多 4 名玩家可以同时向同一个 Gamepad 外设发送输入。每位玩家获得 1 到 4 的槽位。 Lua 外设
像包装其他 CC:Tweaked 外设一样包装该外设:
local pad = peripheral.find("gamepad")
功能 getPlayers()
返回已连接控制器状态的列表。
每个条目包括:
slot: 玩家槽位,1 到 4
player: 玩家名称
playerId: 玩家 UUID
controllerId: 客户端控制器 ID
controllerName: 控制器名称
guid: 控制器 GUID
buttons: 编号按钮表
buttonNames: 命名按钮表
axes: 编号轴表
axisNames: 命名轴表
updatedAt: 服务器时间戳
getState(slot)
返回某一个槽位的完整状态表。
如果该槽位未绑定控制器,则抛出错误。 isDown(slot, button)
如果编号按钮被按住,返回 true。
按钮:
A
B
X
Y
左肩键
右肩键
返回/选择
开始
菜单/主页
左摇杆
右摇杆
方向键上
方向键右
方向键下
方向键左
isButtonDown(slot, name)
如果命名按钮被按住,返回 true。
名称:
a b x y leftBumper rightBumper back select start guide home leftStick rightStick dpadUp dpadRight dpadDown dpadLeft
getAxis(slot, axis)
返回一个编号轴的值。
轴:
左 X,-1 到 1
左 Y,-1 到 1
右 X,-1 到 1
右 Y,-1 到 1
左扳机,0 到 1
右扳机,0 到 1
getAxisValue(slot, name)
返回一个命名轴的值。
名称:
leftX leftY rightX rightY leftTrigger rightTrigger
getMaxPlayers()
返回 4。 getButtonCount()
返回 15。 getAxisCount()
返回 6。 事件
当控制器状态改变时,连接的计算机接收:
cc_events, "gamepad", slot, playerName, controllerId
示例:
local event, kind, slot, player, controllerId = os.pullEvent("cc_events") if kind == "gamepad" then print(player .. " updated slot " .. slot) end
Lua 示例程序
此程序打印槽位 1 的基本状态,并在按下 Start 时退出。
local pad = peripheral.find("gamepad") if not pad then error("No gamepad peripheral found") end
print("Waiting for gamepad input...")
while true do local event, kind, slot, player = os.pullEvent("cc_events") if kind == "gamepad" and slot == 1 then local lx = pad.getAxisValue(1, "leftX") local ly = pad.getAxisValue(1, "leftY") local a = pad.isButtonDown(1, "a") local b = pad.isButtonDown(1, "b")
term.clear()
term.setCursorPos(1, 1)
print("Player: " .. player)
print(("Left stick: %.2f %.2f"):format(lx, ly))
print("A: " .. tostring(a))
print("B: " .. tostring(b))
print("Start exits")
if pad.isButtonDown(1, "start") then
break
end
end end
多人游戏注意事项
控制器输入仅接受来自发送它的玩家。
玩家必须持有绑定到目标外设的 Gamepad 物品。
控制器 ID 和 GUID 在服务器端进行验证。
数据包大小、字符串长度、按钮数量、轴数量和轴值在状态被接受之前都会进行验证。
玩家断开连接或其控制器列表变化时,玩家状态将被清除。

还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。