Skip to content

Commit 84cdd6c

Browse files
timilirisclaude
andcommitted
v1.3.2 - Run Configuration, UI Files & Code Cleanup
Features: - Hytale Server Run Configuration with Build, Deploy & Debug - Hytale UI File (.ui) language support with syntax highlighting - Dynamic debug port allocation (5005-5015 range) - Auto-detect plugin info from manifest.json/build files - Discord community link added to README, plugin.xml & tool window Fixes: - Windows file locking: server restart workflow instead of hot reload - Kill lingering Java processes before file operations - Fixed deprecated API warnings (createSingleLocalFileDescriptor) - Removed unused imports and dead code Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent c3186ed commit 84cdd6c

File tree

77 files changed

+8240
-675
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+8240
-675
lines changed

.claude/settings.local.json

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,40 @@
66
"Bash(./gradlew clean buildPlugin:*)",
77
"Bash(git add:*)",
88
"Bash(git commit:*)",
9-
"Bash(git push)"
9+
"Bash(git push)",
10+
"WebFetch(domain:github.com)",
11+
"Bash(gh issue comment:*)",
12+
"Bash(./gradlew buildPlugin:*)",
13+
"Bash(./gradlew clean:*)",
14+
"Bash(kotlinc:*)",
15+
"Bash(xxd:*)",
16+
"Bash(identify:*)",
17+
"Bash(./gradlew:*)",
18+
"Bash(timeout:*)",
19+
"Bash(find:*)",
20+
"Bash(gh issue close:*)",
21+
"Bash(gh release create:*)",
22+
"Bash(gh release edit:*)",
23+
"Bash(jar -tf:*)",
24+
"Bash(dir:*)",
25+
"WebFetch(domain:plugins.jetbrains.com)",
26+
"Bash(git tag:*)",
27+
"Bash(git push:*)",
28+
"Bash(wc:*)",
29+
"WebFetch(domain:hytale.ellie.au)",
30+
"WebSearch",
31+
"WebFetch(domain:raw.githubusercontent.com)",
32+
"WebFetch(domain:api.github.com)",
33+
"Bash(kotlin:*)",
34+
"Bash(cat:*)",
35+
"WebFetch(domain:hytale-docs.com)",
36+
"Bash(xargs ls:*)",
37+
"Bash(powershell -Command \"Add-Type -AssemblyName System.IO.Compression.FileSystem; $zip = [System.IO.Compression.ZipFile]::OpenRead\\(''server/Assets.zip''\\); $entry = $zip.Entries | Where-Object { $_FullName -eq ''Common/UI/Custom/Common.ui'' }; if \\($entry\\) { $stream = $entry.Open\\(\\); $reader = New-Object System.IO.StreamReader\\($stream\\); $reader.ReadToEnd\\(\\); $reader.Close\\(\\); $stream.Close\\(\\) }; $zip.Dispose\\(\\)\")",
38+
"Bash(powershell -Command \"Add-Type -AssemblyName System.IO.Compression.FileSystem; $zip = [System.IO.Compression.ZipFile]::OpenRead\\(''server/Assets.zip''\\); $zip.Entries | Where-Object { $_FullName -like ''*.ui'' } | Select-Object -First 30 -ExpandProperty FullName; $zip.Dispose\\(\\)\")",
39+
"Bash(powershell -Command \"Add-Type -AssemblyName System.IO.Compression.FileSystem; $z = [System.IO.Compression.ZipFile]::OpenRead\\(''server/Assets.zip''\\); $z.Entries | Where-Object { $_FullName -like ''*.ui'' } | Select-Object -First 30 -ExpandProperty FullName; $z.Dispose\\(\\)\")",
40+
"Bash(grep:*)",
41+
"Bash(xargs:*)",
42+
"Bash(git reset -- archive/ nul)"
1043
]
1144
}
1245
}

README.md

Lines changed: 105 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,129 @@
11
# HytaleDocs IntelliJ Plugin
22

3+
<p align="center">
4+
<img src="src/main/resources/icons/hytaledocs-plugin-16.svg" alt="HytaleDocs Logo" width="64" height="64">
5+
</p>
6+
7+
<p align="center">
8+
<a href="https://discord.gg/yAjaFBH4Y8"><img src="https://img.shields.io/discord/1234567890?color=5865F2&logo=discord&logoColor=white&label=Discord" alt="Discord"></a>
9+
<a href="https://github.com/HytaleDocs/hytale-intellij-plugin/releases"><img src="https://img.shields.io/github/v/release/HytaleDocs/hytale-intellij-plugin?color=blue" alt="Release"></a>
10+
<a href="https://plugins.jetbrains.com/plugin/XXXXX-hytale-development-tools"><img src="https://img.shields.io/jetbrains/plugin/v/XXXXX?color=green" alt="JetBrains Plugin"></a>
11+
</p>
12+
313
<!-- Plugin description -->
414
A comprehensive toolkit for developing Hytale server plugins in IntelliJ IDEA.
515

616
**Features:**
717
- Project Wizard for new Hytale plugin projects
18+
- Run Configuration with Build, Deploy & Debug support
19+
- Assets Explorer with preview for images, audio, and JSON
820
- Live Templates: `hyevent`, `hycmd`, `hyecs`, `hyplugin`, `hymsg`, `hyconfig`, `hyscheduler`, `hycustom`
9-
- Tool Window with Home, Docs, and AI tabs
21+
- Tool Window with Server, Console, Assets, Docs, AI, and Infos tabs
1022
- Integrated documentation browser with offline mode
11-
- MCP Server integration for Claude Code AI assistance
12-
- Server management (Start/Stop/Restart)
13-
- File templates for Plugin, Listener, Command, ECS System
23+
- Hytale UI file (.ui) language support with syntax highlighting
24+
- API autocompletion for Hytale server classes
1425

1526
**Requirements:** IntelliJ IDEA 2025.3+, Java 25
1627
<!-- Plugin description end -->
1728

29+
## Community
30+
31+
Join our Discord to get help, share your plugins, and discuss Hytale modding:
32+
33+
[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/yAjaFBH4Y8)
34+
1835
## Features
1936

37+
### Run Configuration
38+
39+
The plugin provides a dedicated Run Configuration for Hytale servers:
40+
41+
- **Build before run** - Automatically build your plugin with Gradle
42+
- **Deploy plugin** - Copy JAR to server's mods folder
43+
- **Debug support** - Attach IntelliJ debugger to the running server
44+
- **Auto-detection** - Automatically detects plugin info from manifest.json
45+
46+
Simply click **Run** or **Debug** to build, deploy, and start your server!
47+
2048
### Project Wizard
49+
2150
Create new Hytale plugin projects with pre-configured structure:
2251
- File > New > Project > Hytale Plugin
2352
- Automatic Gradle setup with correct dependencies
2453
- Plugin manifest generation
2554

55+
### Assets Explorer
56+
57+
Browse and preview Hytale assets directly in the IDE:
58+
- **Images** - PNG, JPG preview with zoom
59+
- **Audio** - OGG playback with controls
60+
- **JSON** - Syntax highlighted preview
61+
- **Sync** - Compare local assets with server
62+
63+
### Hytale UI Files
64+
65+
Full language support for `.ui` files:
66+
- Syntax highlighting
67+
- Code completion
68+
- Brace matching
69+
- Color preview in gutter
70+
2671
### Live Templates
72+
2773
Code snippets for rapid development:
28-
- `hyevent` - Register event listener
29-
- `hycmd` - Create command collection
30-
- `hyecs` - Create ECS event system
31-
- `hyplugin` - Create plugin main class
32-
- `hymsg` - Send formatted message
33-
- `hyconfig` - Create config handler
34-
- `hyscheduler` - Create scheduled task
35-
- `hycustom` - Create custom UI element
3674

37-
### Tool Window
38-
Access everything from the Hytale tool window:
75+
| Shortcut | Description |
76+
|----------|-------------|
77+
| `hyevent` | Register event listener |
78+
| `hycmd` | Create command collection |
79+
| `hyecs` | Create ECS event system |
80+
| `hyplugin` | Create plugin main class |
81+
| `hymsg` | Send formatted message |
82+
| `hyconfig` | Create config handler |
83+
| `hyscheduler` | Create scheduled task |
84+
| `hycustom` | Create custom UI element |
3985

40-
**Home Tab**
41-
- Server controls (Start/Stop/Restart)
42-
- Quick actions and project setup
43-
- Resource links
86+
### Tool Window
4487

45-
**Docs Tab**
46-
- Browse documentation directly in IDE
47-
- Offline mode with local cache
48-
- Search across all docs
88+
Access everything from the **HytaleDocs** tool window (right sidebar):
4989

50-
**AI Tab**
51-
- MCP Server integration for Claude Code
52-
- One-click MCP installation
53-
- Quick prompts for common tasks
54-
- Launch Claude Code from IDE
90+
| Tab | Description |
91+
|-----|-------------|
92+
| **Server** | Start/Stop server, view status, quick settings |
93+
| **Console** | Server console with command input |
94+
| **Assets** | Browse and preview game assets |
95+
| **Docs** | Browse documentation in IDE |
96+
| **AI** | MCP Server integration for Claude |
97+
| **Infos** | Useful links and commands reference |
5598

5699
### Additional Features
57-
- **File Templates**: New > Hytale > Plugin/Listener/Command/ECS System
58-
- **Server JAR Download**: Tools > Download Hytale Server JAR
59-
- **Run Configurations**: Launch Hytale servers directly
100+
101+
- **File Templates**: New > Hytale > Plugin/Listener/Command/ECS System/UI File
102+
- **Server Setup**: Tools > Hytale Server > Setup Server (Java 25 + Server files)
103+
- **Hot Reload**: Build and reload plugin on running server (Linux/Mac)
104+
- **API Completion**: Autocomplete for Hytale server API classes
60105

61106
## Installation
62107

63-
### From GitHub Releases (Recommended)
64-
1. Download the latest `.zip` from [Releases](https://github.com/timiliris/hytaledDocs-intelliJ-plugin/releases)
108+
### From JetBrains Marketplace (Recommended)
109+
110+
1. In IntelliJ: Settings > Plugins > Marketplace
111+
2. Search for "Hytale Development Tools"
112+
3. Click Install
113+
4. Restart IntelliJ
114+
115+
### From GitHub Releases
116+
117+
1. Download the latest `.zip` from [Releases](https://github.com/HytaleDocs/hytale-intellij-plugin/releases)
65118
2. In IntelliJ: Settings > Plugins > ⚙️ > Install plugin from disk...
66119
3. Select the downloaded ZIP file
67120
4. Restart IntelliJ
68121

69122
### From Source
123+
70124
```bash
71-
git clone https://github.com/timiliris/hytaledDocs-intelliJ-plugin.git
72-
cd hytaledDocs-intelliJ-plugin
125+
git clone https://github.com/HytaleDocs/hytale-intellij-plugin.git
126+
cd hytale-intellij-plugin
73127
./gradlew buildPlugin
74128
```
75129
The plugin ZIP will be in `build/distributions/`
@@ -80,6 +134,14 @@ The plugin ZIP will be in `build/distributions/`
80134
- Java 25 (for Hytale server development)
81135
- Gradle 8.11+
82136

137+
## Quick Start
138+
139+
1. **Install the plugin** (see Installation above)
140+
2. **Create a new project**: File > New > Project > Hytale Plugin
141+
3. **Setup server**: Tools > Hytale Server > Setup Server
142+
4. **Run your plugin**: Click the Run button (builds, deploys, starts server)
143+
5. **Debug**: Click Debug to attach the debugger
144+
83145
## MCP Server Integration
84146

85147
The plugin integrates with [hytaledocs-mcp-server](https://www.npmjs.com/package/hytaledocs-mcp-server) to provide AI-assisted development:
@@ -102,10 +164,18 @@ Claude will now have access to all Hytale documentation!
102164

103165
Contributions are welcome! Please feel free to submit a Pull Request.
104166

167+
Join our [Discord](https://discord.gg/yAjaFBH4Y8) to discuss features and get help.
168+
105169
## License
106170

107171
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
108172

109173
---
110174

111-
Made with love by the [HytaleDocs](https://hytale-docs.com) community.
175+
<p align="center">
176+
Made with ❤️ by the <a href="https://hytale-docs.com">HytaleDocs</a> community
177+
<br>
178+
<a href="https://discord.gg/yAjaFBH4Y8">Discord</a> •
179+
<a href="https://hytale-docs.com">Website</a> •
180+
<a href="https://github.com/HytaleDocs">GitHub</a>
181+
</p>

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ pluginGroup = com.hytaledocs.hytale
44
pluginName = Hytale Development Tools
55
pluginRepositoryUrl = https://github.com/HytaleDocs/hytale-intellij-plugin
66
# SemVer format -> https://semver.org
7-
pluginVersion = 1.3.1
7+
pluginVersion = 1.3.2
88

99
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
1010
pluginSinceBuild = 253

src/main/kotlin/com/hytaledocs/intellij/actions/DownloadServerJarAction.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.intellij.openapi.progress.ProgressIndicator
99
import com.intellij.openapi.progress.ProgressManager
1010
import com.intellij.openapi.progress.Task
1111
import java.nio.file.Paths
12+
import java.util.concurrent.TimeUnit
1213

1314
class DownloadServerJarAction : AnAction() {
1415

@@ -33,7 +34,9 @@ class DownloadServerJarAction : AnAction() {
3334
downloadService.downloadServerJar(serverPath) { progress ->
3435
indicator.fraction = progress.progress / 100.0
3536
indicator.text = progress.message
36-
}.get()
37+
}.exceptionally { e ->
38+
throw RuntimeException("Download failed: ${e.message}", e)
39+
}.get(60, TimeUnit.SECONDS)
3740

3841
NotificationGroupManager.getInstance()
3942
.getNotificationGroup("Hytale Plugin")

0 commit comments

Comments
 (0)