Links
Tags
Creators
Details
1.9.2
Compatibility
Required content
Changes
🚀 PyCraft IDE 1.9.2
A major update focused on making PyCraft IDE more powerful, persistent, and comfortable for everyday Python development in Minecraft.
✨ What's New
PyCraft IDE 1.9.2 brings improvements across the IDE, terminal, Python tooling, and Minecraft API.
💬 Better Game Communication
The new Chat Event API allows Python scripts to monitor and react to different types of Minecraft server messages:
- Player chat messages
- Player commands
- System/server messages
- Command block output
- Text filtering and regular-expression matching
This makes it possible to build Python scripts that can react to what's happening in the game much more naturally.
🟨 Smarter Pressure Plates
Pressure plates have been redesigned around Minecraft's tick-based state updates.
The new system supports:
- Regular pressure plates
- Weighted iron and gold pressure plates
- Redstone signal levels from
0to15 - Player, mob, and item activation detection
- Waiting for specific plate states
- Automatic nearby plate discovery
🧠 A More Persistent IDE
Your development environment now remembers more of your work between sessions.
Added:
- Persistent undo/redo history
- Project-specific IDE settings
- Python symbol indexing
- Cross-file symbol search
- Incremental indexing
- File change monitoring
🐍 Better Python Development
Python tooling has received a major upgrade.
PyCraft IDE can now:
- Detect Python installations automatically
- Work with virtual environments
- Manage Jedi installation
- Provide smarter autocomplete
- Navigate to Python definitions
- Display function signatures
- Maintain a persistent project symbol index
🖥️ A Better Terminal
The terminal has been redesigned around streaming input/output.
Python programs can now properly receive input through:
name = input("Enter your name: ")
Terminal output is also processed as a stream instead of waiting for complete lines, making interactive programs feel much more responsive.
📦 Cleaner Resource Management
The embedded Python API has been moved out of large Java string constants and into regular resource files.
This makes the project:
- Easier to maintain
- Easier to update
- Better organized
- Safer to modify
🔧 Detailed Changes
💬 Chat Event System
Added ChatEventTracker
New server-side event tracking system supporting four categories:
player— normal player chatcommand— commands entered by playerssystem— server feedback, RCON and vanilla messagescommand_block— command block output
HTTP API
Added:
POST /api/chatEventsPOST /api/chatEventsClear
Python API
Added:
getChatEvents()clearChatEvents()waitForChat()waitForChatCategory()onChatMessage()readServerOutput()readCommandBlockOutput()
ChatEvent
Events provide structured information including:
- Timestamp
- Category
- Player
- Message
- Raw message
- Command
- Source
Helper methods include:
is_player()is_command()is_system()is_command_block()contains()matches(regex)
🟨 Pressure Plate System
Pressure plate detection has been significantly redesigned.
Instead of relying only on instant interaction callbacks, plates are now monitored through server tick updates.
Added
watchPressurePlate(x, y, z)isPlatePowered(x, y, z)getPlateSignal(x, y, z)waitForPlate()waitForPlayerPlate()waitForAnyPlate()onPlatePowered()watchPlates()
Improvements
The system now supports:
- Tick-based state tracking
- Powered/unpowered state changes
- Signal levels from
0–15 - Weighted pressure plates
- Nearby plate auto-discovery
- Best-effort identification of the entity activating a plate
BlockEvent now includes a signal value in addition to the powered state.
🧠 IDE Infrastructure
Persistent Undo/Redo
Added UndoHistoryStore.
Undo and redo history can now survive IDE restarts.
History is stored per file and periodically flushed to disk.
Project Settings
Added IDESettings.
Project-specific configuration is stored in:
.PyCraftCode/ide-settings.json
Current configurable setting:
maxUndoHistory
Default: 48
Allowed range: 1–500.
Project Symbol Index
Added ProjectSymbolIndex.
The indexer understands Python:
- Classes
- Functions
- Methods
- Variables
- Parameters
- Imports
- Constants
It also provides scope-aware local variable tracking and cross-file search.
Incremental indexing
Files are hashed with SHA-256 so unchanged files do not need to be parsed again.
🧩 Jedi Integration
Added JediServerManager.
PyCraft IDE can communicate with an external Jedi process using a JSON-Lines protocol.
Supported operations include:
- Autocomplete
- Go to definition
- Function signatures
Completion requests are debounced to reduce unnecessary subprocess calls during rapid typing.
🐍 Python Environment Management
PythonExecutableResolver
Python installations are discovered through a fallback chain:
- Configured interpreter
- Project virtual environment
python3pythonpy
The selected configuration can be persisted through:
.PyCraftCode/python-scope
PythonSetupManager
Added an interactive Jedi setup workflow:
CHECKING
↓
CHOOSE_SCOPE
↓
INSTALLING
↓
READY / FAILED
The installation process runs in the background and can create virtual environments or install Jedi globally.
🖥️ Terminal & I/O
The terminal system received one of the largest internal changes in this release.
Streaming I/O
The old line-based approach using BufferedReader.readLine() has been replaced with character-based streaming.
This allows output to appear without waiting for a newline.
Python stdin
Python processes now have dedicated stdin handling.
Added:
pythonInputpythonInputOwnerclearPythonInput()echoUserInput()isWaitingForInput()getPendingInputPrompt()
This enables interactive Python programs using input().
External Terminal Window
Added a standalone Swing terminal window with:
- Run
- Restart
- Kill
- Copy
- Live process status
- Styled output
- Dock/undock support
📁 File Management
The Python API is no longer embedded inside huge Java string constants.
Added resource-based deployment through:
src/main/resources/FilesPort/
Important resources include:
craftcode_api.py
test_all.py
FileManager now supports dedicated resource deployment methods and atomic file replacement with Windows-compatible fallback behavior.
Path normalization checks were also added to improve protection against path traversal.
🎨 Code Editor Improvements
Syntax Highlighting
SyntaxHighlighter received major improvements for Python syntax.
Added better support for:
- f-strings
- Nested f-string expressions
- String prefixes
- Triple-quoted strings
- Escape sequences
- Imports
- Class names
- Function calls
👁️ UI Improvements
Added BlurFix.
The client now forces the relevant menu background blur setting to 0 after Minecraft's client options become available.
This prevents excessive GUI background obscuring.
📦 Gradle
The development client now runs with:
-Djava.awt.headless=false
This ensures Swing-based windows can render correctly in the development environment.
🐛 Fixes
Fixed pressure plate detection
Rapid or multi-entity pressure plate activations could previously be missed.
Tick-based polling provides more reliable state tracking.
Fixed Python terminal input
Python programs using input() can now receive input from the terminal.
Fixed weighted pressure plate signals
Weighted pressure plates now expose their actual Minecraft redstone signal level instead of only a binary state.
Fixed excessive menu blur
Client-side blur is disabled to improve GUI readability.
🗑️ Removed
Embedded Python API strings
The old Java-embedded:
CRAFTCODE_API_PYTEST_ALL
constants have been removed.
The Python code now lives as normal resource files.
This significantly reduces the amount of Python code embedded directly inside Java source files and makes future API updates easier.
⚡ Performance
Several systems were optimized in this release.
Symbol indexing
SHA-256 based incremental indexing avoids re-processing unchanged files.
Pressure plates
Only monitored plates are actively polled, while nearby auto-discovery keeps the system practical.
Jedi
Completion requests use a short debounce period to prevent excessive subprocess calls.
Terminal
Streaming uses buffered chunks instead of processing every line separately.
Undo history
History is flushed to disk after a small number of changes instead of on every edit.
⚠️ Breaking Changes
BlockEvent.signal
BlockEvent now exposes a numeric signal value from 0 to 15.
Consumers should not assume that pressure plate events contain only a binary powered state.
For non-weighted plates, the signal will normally behave as a binary value.
Weighted plates can provide different signal levels depending on the number of entities affecting them.
Pressure plate API
Pressure plate detection is now based on state polling rather than instant interaction callbacks.
Scripts should use the new APIs such as:
waitForPlate()
isPlatePowered()
getPlateSignal()
watchPressurePlate()
Terminal I/O
Terminal output is now streamed in chunks rather than being strictly line-buffered.
Scripts that relied on exact line-buffering timing may observe different output timing.
📁 Major Files Added
ChatEventTracker.java
IDESettings.java
UndoHistoryStore.java
ProjectSymbolIndex.java
JediServerManager.java
PythonExecutableResolver.java
PythonSetupManager.java
ExternalTerminalWindow.java
FileWatcher.java
BlurFix.java
Resources
FilesPort/craftcode_api.py
FilesPort/test_all.py
craftcode/jedi_server.py
AI Documentation
.agents/skills/pythonlib/SKILL.md
📊 Release Summary
PyCraft IDE 1.9.2 is a major step toward a more complete Python development environment for Minecraft.
The release improves three major areas:
🎮 Minecraft integration Chat events and pressure plate tracking provide more powerful ways for Python scripts to understand and react to the game.
🧠 Development experience Persistent IDE state, symbol indexing, Jedi integration, smarter Python discovery, and improved syntax highlighting make larger projects easier to work with.
🖥️ Runtime experience The new streaming terminal and Python stdin support make interactive Python programs significantly more practical.
PyCraft IDE 1.9.2 — more persistent, more intelligent, and much more interactive.
🚀 PyCraft IDE 1.9.2
Большое обновление, направленное на улучшение IDE, Python-инструментов, терминала и взаимодействия Python с Minecraft.
✨ Что нового
PyCraft IDE 1.9.2 значительно расширяет возможности разработки и делает работу с проектами удобнее.
💬 Улучшенная работа с игровыми сообщениями
Добавлен новый Chat Event API, позволяющий Python-скриптам отслеживать различные сообщения Minecraft:
- сообщения игроков
- команды игроков
- системные сообщения сервера
- вывод командных блоков
- фильтрацию текста
- поиск по регулярным выражениям
Теперь Python-скрипты могут гораздо удобнее реагировать на происходящее в игре.
🟨 Улучшенные нажимные плиты
Система нажимных плит была переработана и теперь отслеживает их состояние через серверные тики.
Поддерживаются:
- обычные нажимные плиты
- железные и золотые взвешенные плиты
- уровень сигнала
0–15 - определение игрока, моба или предмета
- ожидание определённого состояния плиты
- автоматическое обнаружение ближайших плит
🧠 IDE теперь помнит больше
Многие данные больше не теряются после перезапуска IDE.
Добавлены:
- сохранение истории Undo/Redo
- настройки проекта
- индекс символов Python
- поиск символов между файлами
- инкрементальная индексация
- отслеживание изменений файлов
🐍 Улучшена работа с Python
Добавлена полноценная инфраструктура для Python-интерпретаторов и анализа кода.
Теперь IDE умеет:
- автоматически находить Python
- работать с виртуальными окружениями
- устанавливать Jedi
- предоставлять более умный autocomplete
- переходить к определениям
- показывать сигнатуры функций
- сохранять индекс Python-проекта
🖥️ Новый подход к терминалу
Терминал теперь работает со streaming-вводом и выводом.
Python-программы могут нормально получать пользовательский ввод:
name = input("Введите имя: ")
Вывод также отображается потоково, не дожидаясь завершения всей строки.
📦 Более чистая структура ресурсов
Встроенный Python API был вынесен из огромных Java-строк в обычные resource-файлы.
Это делает проект:
- проще для поддержки
- удобнее для обновления
- лучше организованным
- менее зависимым от Java-кода
🔧 Подробные изменения
💬 Система Chat Events
Добавлен ChatEventTracker
Новая серверная система отслеживания событий чата поддерживает четыре категории:
player— обычный чат игроковcommand— команды игроковsystem— сообщения сервера, RCON и vanillacommand_block— вывод командных блоков
HTTP API
Добавлены:
POST /api/chatEventsPOST /api/chatEventsClear
Python API
Добавлены:
getChatEvents()clearChatEvents()waitForChat()waitForChatCategory()onChatMessage()readServerOutput()readCommandBlockOutput()
ChatEvent
Событие содержит структурированные данные:
- время
- категория
- игрок
- сообщение
- исходное сообщение
- команда
- источник
Также доступны методы:
is_player()is_command()is_system()is_command_block()contains()matches(regex)
🟨 Система нажимных плит
Система обработки нажимных плит была значительно переработана.
Вместо зависимости только от мгновенных событий взаимодействия теперь используется отслеживание состояния через серверные тики.
Добавлены
watchPressurePlate(x, y, z)isPlatePowered(x, y, z)getPlateSignal(x, y, z)waitForPlate()waitForPlayerPlate()waitForAnyPlate()onPlatePowered()watchPlates()
Возможности
Система поддерживает:
- отслеживание состояния каждый тик
- переходы включено/выключено
- сигнал
0–15 - взвешенные плиты
- автоматическое обнаружение ближайших плит
- определение сущности, активировавшей плиту
В BlockEvent теперь передаётся дополнительное поле signal.
🧠 Инфраструктура IDE
Сохранение Undo/Redo
Добавлен UndoHistoryStore.
История отмены и повтора теперь может сохраняться между запусками IDE.
История хранится отдельно для каждого файла.
Настройки проекта
Добавлен IDESettings.
Настройки проекта хранятся здесь:
.PyCraftCode/ide-settings.json
Доступная настройка:
maxUndoHistory
Значение по умолчанию:
48
Допустимый диапазон:
1–500
Индекс символов Python
Добавлен ProjectSymbolIndex.
Индексатор анализирует:
- классы
- функции
- методы
- переменные
- параметры
- импорты
- константы
Также поддерживается определение локальной области видимости переменных и поиск символов между файлами.
Инкрементальная индексация
Для файлов используется SHA-256.
Если файл не изменился, его повторный полный анализ не требуется.
🧩 Интеграция Jedi
Добавлен JediServerManager.
IDE может запускать внешний процесс Jedi и обмениваться с ним данными через JSON-Lines.
Поддерживаются:
- автодополнение
- переход к определению
- сигнатуры функций
Запросы автодополнения имеют debounce-механику, предотвращающую слишком большое количество запросов при быстром вводе.
🐍 Управление Python
PythonExecutableResolver
Python-интерпретатор теперь ищется по цепочке:
- Настроенный интерпретатор
- Virtual Environment проекта
python3pythonpy
Настройка может сохраняться через:
.PyCraftCode/python-scope
PythonSetupManager
Добавлен интерактивный процесс установки Jedi:
CHECKING
↓
CHOOSE_SCOPE
↓
INSTALLING
↓
READY / FAILED
Установка выполняется в фоне и может использовать virtual environment или глобальную установку Jedi.
🖥️ Терминал и I/O
Терминальная система получила одну из самых крупных внутренних переработок этого релиза.
Streaming I/O
Старый подход через:
BufferedReader.readLine()
заменён потоковым чтением блоками символов.
Теперь вывод может появляться сразу, даже если программа ещё не завершила строку.
Python stdin
Для Python-процессов добавлена полноценная обработка stdin.
Добавлены:
pythonInputpythonInputOwnerclearPythonInput()echoUserInput()isWaitingForInput()getPendingInputPrompt()
Это позволяет использовать интерактивные программы с input().
Внешнее окно терминала
Добавлен отдельный Swing-терминал.
Поддерживаются:
- Run
- Restart
- Kill
- Copy
- отображение состояния процесса
- стилизованный вывод
- dock/undock
📁 Управление файлами
Python API больше не хранится в виде огромных Java-строк.
Ресурсы теперь находятся в:
src/main/resources/FilesPort/
Основные файлы:
craftcode_api.py
test_all.py
FileManager получил отдельные методы для развёртывания ресурсов и атомарного перемещения файлов с fallback-механизмом для Windows.
Также добавлены проверки нормализации путей для защиты от некорректного доступа через path traversal.
🎨 Улучшения редактора
Подсветка Python
SyntaxHighlighter получил серьёзное обновление.
Улучшена поддержка:
- f-строк
- вложенных выражений внутри f-строк
- префиксов строк
- многострочных строк
- escape-последовательностей
- импортов
- имён классов
- вызовов функций
👁️ Улучшения интерфейса
Добавлен BlurFix.
После инициализации Minecraft-клиента соответствующий blur устанавливается в 0.
Это уменьшает перекрытие интерфейса фоном и делает GUI более читаемым.
📦 Gradle
Для dev-клиента добавлено:
-Djava.awt.headless=false
Это позволяет корректно отображать Swing-окна во время разработки.
🐛 Исправления
Исправлена обработка нажимных плит
Быстрые или одновременные активации несколькими сущностями могли пропускаться.
Теперь состояние отслеживается через серверные тики.
Исправлен ввод Python
Программы с input() теперь могут получать ввод из терминала.
Исправлены сигналы взвешенных плит
Теперь API предоставляет фактический уровень сигнала Minecraft от 0 до 15.
Исправлено чрезмерное размытие GUI
Клиентское размытие отключается для повышения читаемости интерфейса.
🗑️ Удалено
Встроенный Python API
Удалены старые Java-константы:
CRAFTCODE_API_PYTEST_ALL
Python-код теперь хранится как обычные resource-файлы.
Это значительно упрощает дальнейшее обновление Python API и поддержку исходного кода.
⚡ Производительность
Несколько подсистем получили оптимизации.
Индексация
SHA-256 позволяет пропускать неизменённые файлы.
Нажимные плиты
Активно опрашиваются только отслеживаемые плиты.
Jedi
Debounce снижает количество лишних запросов к subprocess.
Терминал
Потоковая обработка использует буферизированные блоки вместо обработки каждой строки отдельно.
История Undo
Данные сохраняются на диск не после каждого изменения, что уменьшает количество операций записи.
⚠️ Несовместимые изменения
BlockEvent.signal
В BlockEvent добавлено числовое поле:
signal: 0–15
Клиенты больше не должны рассчитывать только на бинарное состояние powered.
Для обычных плит сигнал обычно ведёт себя как бинарное значение.
Взвешенные плиты могут возвращать различные уровни сигнала.
API нажимных плит
Система больше не полагается только на мгновенные callbacks взаимодействия.
Для работы с плитами рекомендуется использовать:
waitForPlate()
isPlatePowered()
getPlateSignal()
watchPressurePlate()
Терминальный I/O
Вывод теперь передаётся потоковыми блоками вместо строгой построчной буферизации.
Программы, зависящие от точного времени появления строк в терминале, могут вести себя немного иначе.
📁 Основные новые файлы
ChatEventTracker.java
IDESettings.java
UndoHistoryStore.java
ProjectSymbolIndex.java
JediServerManager.java
PythonExecutableResolver.java
PythonSetupManager.java
ExternalTerminalWindow.java
FileWatcher.java
BlurFix.java
Новые ресурсы
FilesPort/craftcode_api.py
FilesPort/test_all.py
craftcode/jedi_server.py
Документация для AI
.agents/skills/pythonlib/SKILL.md
📊 Итог
PyCraft IDE 1.9.2 — крупный шаг в развитии IDE и Python-интеграции с Minecraft.
Обновление улучшает три основные области:
🎮 Minecraft API Отслеживание чата и нажимных плит позволяет Python-скриптам гораздо лучше понимать происходящее в игре.
🧠 Разработка Сохранение состояния IDE, индекс символов, Jedi, автоматический поиск Python и улучшенная подсветка делают работу с большими проектами удобнее.
🖥️ Выполнение Python
Новый потоковый терминал и поддержка input() делают интерактивные Python-программы значительно практичнее.
PyCraft IDE 1.9.2 — больше возможностей, умнее IDE и более интерактивная работа с Minecraft.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:QwgeWuAG:DwZZplOc"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:QwgeWuAG:DwZZplOc"
}

