CC:Gamepad
CC: Gamepads добавляет блок-периферию для CC:Tweaked, который позволяет компьютерам ComputerCraft считывать реальный ввод с геймпадов/контроллеров игроков.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 1,2 тыс.
- Подписчиков на Modrinth
- 3
- версии
- 3
- Обновлён
- 16 июня 202616 июн.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
CC: Gamepads добавляет периферийный блок для CC:Tweaked, который позволяет компьютерам ComputerCraft считывать реальный ввод с геймпадов/контроллеров игроков.
Контроллер считывается на клиенте игрока, отправляется на сервер и становится доступен в Lua через привязанную периферию Gamepad. Работает в одиночной игре, по LAN и на выделенных серверах. Требования
Minecraft 1.21.1 NeoForge 21.1.x CC:Tweaked 1.117.1
Как использовать
Поставьте блок Gamepad Peripheral рядом с компьютером CC:Tweaked или подключите его через модем. Возьмите в руку предмет Gamepad. Присядьте и щёлкните правой кнопкой по Gamepad Peripheral с предметом Gamepad, чтобы привязать его. Держите привязанный предмет Gamepad в основной или во второй руке. Подключите контроллер (по проводу или Bluetooth) и запустите Lua-код на компьютере.
До 4 игроков могут одновременно отправлять ввод на один и тот же Gamepad Peripheral. Каждый игрок получает слот от 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 Left bumper Right bumper Back/select Start Guide/home Left stick Right stick D-pad up D-pad right D-pad down D-pad left
isButtonDown(slot, name)
Возвращает true, если кнопка с указанным именем нажата.
Имена:
a b x y leftBumper rightBumper back select start guide home leftStick rightStick dpadUp dpadRight dpadDown dpadLeft
getAxis(slot, axis)
Возвращает значение оси с указанным номером.
Оси:
Left X, от -1 до 1 Left Y, от -1 до 1 Right X, от -1 до 1 Right Y, от -1 до 1 Left trigger, от 0 до 1 Right trigger, от 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 контроллеров проверяются на стороне сервера. Размеры пакетов, длины строк, количество кнопок и осей, а также значения осей проверяются перед принятием состояния. Состояние игрока очищается при его отключении или при изменении списка его контроллеров.
Частые вопросы
Как установить CC:Gamepad?
Установите NeoForge под свою версию Minecraft, скачайте CC:Gamepad под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть CC:Gamepad?
У CC:Gamepad есть сборки для Minecraft 1.21.1.
Нужен ли CC:Gamepad на сервере?
Нужен и в игре, и на сервере