feat: Go Guide
This commit is contained in:
parent
d4f9bb8253
commit
a026982d26
@ -136,6 +136,20 @@ export const en = defineConfig({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: "Go",
|
||||||
|
collapsed: false,
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
text: "Quick Start",
|
||||||
|
link: "/plugin-dev/go/quick-start",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "Basic Logic",
|
||||||
|
link: "/plugin-dev/go/basic-logic",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,10 +7,11 @@ Wenn du auf Probleme stößt, melde dich bitte auf unserem [Discord‑Server](ht
|
|||||||
|
|
||||||
Pumpkin‑Plugins integrieren sich sehr tief in die Server‑Software und ermöglichen dadurch viele Dinge, die auf anderer Serversoftware nicht möglich wären.
|
Pumpkin‑Plugins integrieren sich sehr tief in die Server‑Software und ermöglichen dadurch viele Dinge, die auf anderer Serversoftware nicht möglich wären.
|
||||||
|
|
||||||
Die Pumpkin Plugin API orientiert sich in vielen Bereichen an der Spigot/Bukkit Plugin API. Wenn du damit bereits Erfahrung hast und Rust, Python, C# oder C beherrscht, solltest du relativ einfach Plugins für Pumpkin schreiben können. :smile:
|
Die Pumpkin Plugin API orientiert sich in vielen Bereichen an der Spigot/Bukkit Plugin API. Wenn du damit bereits Erfahrung hast und Rust, Python, C#, Go oder C beherrscht, solltest du relativ einfach Plugins für Pumpkin schreiben können. :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|
||||||
|
|||||||
60
docs/en/plugin-dev/go/basic-logic.md
Normal file
60
docs/en/plugin-dev/go/basic-logic.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Writing the basic logic
|
||||||
|
|
||||||
|
## Plugin Entry Point
|
||||||
|
|
||||||
|
In Go, your plugin must implement the `api.Plugin` interface and register itself in the `init()` function. You also need to import `wit_exports` for WebAssembly compatibility.
|
||||||
|
|
||||||
|
:::code-group
|
||||||
|
|
||||||
|
```go [main.go]
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Pumpkin-MC/pumpkin-api-go/api"
|
||||||
|
"github.com/Pumpkin-MC/pumpkin-api-go/pkg/pumpkin_plugin_context"
|
||||||
|
"github.com/Pumpkin-MC/pumpkin-api-go/pkg/pumpkin_plugin_logging"
|
||||||
|
_ "github.com/Pumpkin-MC/pumpkin-api-go/pkg/wit_exports" // Required for WASM exports
|
||||||
|
)
|
||||||
|
|
||||||
|
type MyPlugin struct {
|
||||||
|
api.DefaultPlugin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *MyPlugin) Metadata() api.Metadata {
|
||||||
|
return api.Metadata{
|
||||||
|
Name: "my-go-plugin",
|
||||||
|
Version: "0.1.0",
|
||||||
|
Authors: []string{"you"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *MyPlugin) OnLoad(ctx *pumpkin_plugin_context.Context) {
|
||||||
|
pumpkin_plugin_logging.Log(pumpkin_plugin_logging.LevelInfo(), "Go plugin loaded!")
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
api.RegisterPlugin(&MyPlugin{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {}
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Compiling the plugin
|
||||||
|
|
||||||
|
To compile your plugin to WebAssembly, you must use **TinyGo**. The standard Go compiler does not yet support the specific WASI targets required by Pumpkin in the same way.
|
||||||
|
|
||||||
|
Run the following command in your project folder:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tinygo build -o my_plugin.wasm -target=wasi main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
This will generate a `my_plugin.wasm` file that can be loaded by Pumpkin.
|
||||||
|
|
||||||
|
## Testing the plugin
|
||||||
|
|
||||||
|
Installing a plugin is as simple as putting the plugin binary (`.wasm`) into the `plugins/` folder of your Pumpkin server!
|
||||||
|
|
||||||
|
When you start up the server and run the `/plugins` command, you should see your plugin listed.
|
||||||
35
docs/en/plugin-dev/go/quick-start.md
Normal file
35
docs/en/plugin-dev/go/quick-start.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Creating a new project
|
||||||
|
|
||||||
|
Pumpkin plugins use the [Go](https://go.dev/) programming language and are compiled to WebAssembly.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before we can start, make sure you have the following installed:
|
||||||
|
- [Go](https://go.dev/doc/install) (latest version recommended)
|
||||||
|
- [TinyGo](https://tinygo.org/getting-started/install/) (required for WASM compilation)
|
||||||
|
|
||||||
|
## Initializing a new module
|
||||||
|
|
||||||
|
First, create a new directory for your project and initialize a Go module:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir hello-pumpkin
|
||||||
|
cd hello-pumpkin
|
||||||
|
go mod init github.com/yourname/hello-pumpkin
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, add the Pumpkin Go API as a dependency:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/Pumpkin-MC/pumpkin-api-go
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
Your project should have at least a `main.go` file. The structure should look like this:
|
||||||
|
|
||||||
|
```text
|
||||||
|
├── go.mod
|
||||||
|
├── go.sum
|
||||||
|
└── main.go
|
||||||
|
```
|
||||||
@ -6,10 +6,11 @@ If you run into any issues please reach out on [our Discord server](https://disc
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
The Pumpkin Plugin API takes inspiration from the Spigot/Bukkit plugin API in many places,
|
The Pumpkin Plugin API takes inspiration from the Spigot/Bukkit plugin API in many places,
|
||||||
so if you have previous experience with these and have experience with Rust, Python, C#, or C development,
|
so if you have previous experience with these and have experience with Rust, Python, C#, Go, or C development,
|
||||||
you should have a pretty easy time writing plugins for Pumpkin. :smile:
|
you should have a pretty easy time writing plugins for Pumpkin. :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|||||||
@ -6,10 +6,11 @@ Als je problemen ondervindt, neem dan contact op via [onze discord](https://disc
|
|||||||
|
|
||||||
Pumpkin Plugins integreren op een zeer diep niveau met de server software, waardoor veel dingen mogelijk zijn die op andere server software niet mogelijk zouden zijn.
|
Pumpkin Plugins integreren op een zeer diep niveau met de server software, waardoor veel dingen mogelijk zijn die op andere server software niet mogelijk zouden zijn.
|
||||||
|
|
||||||
De Pumpkin Plugin API haalt inspiratie uit de Spigot/Bukkit plugin API op veel plaatsen, dus als je eerdere ervaring hebt met deze en ervaring hebt met Rust, Python, C# of C ontwikkeling, zou je vrij gemakkelijk plugins voor Pumpkin moeten kunnen schrijven :smile:
|
De Pumpkin Plugin API haalt inspiratie uit de Spigot/Bukkit plugin API op veel plaatsen, dus als je eerdere ervaring hebt met deze en ervaring hebt met Rust, Python, C#, Go of C ontwikkeling, zou je vrij gemakkelijk plugins voor Pumpkin moeten kunnen schrijven :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|
||||||
|
|||||||
@ -7,9 +7,10 @@ Se você encontrar algum problema, por favor, entre em contato em [nosso servido
|
|||||||
|
|
||||||
Os Plugins Pumpkin se integram ao software do servidor de maneira muito profunda, permitindo muitas coisas que não seriam possíveis em outros softwares de servidor.
|
Os Plugins Pumpkin se integram ao software do servidor de maneira muito profunda, permitindo muitas coisas que não seriam possíveis em outros softwares de servidor.
|
||||||
|
|
||||||
A API de Plugins Pumpkin se inspira na API de plugins do Spigot/Bukkit em diversos aspectos, então, se você tem experiência prévia com os mesmos e possui experiência com desenvolvimento em Rust, Python, C# ou C, você terá uma experiência relativamente fácil ao escrever plugins para o Pumpkin. :smile:
|
A API de Plugins Pumpkin se inspira na API de plugins do Spigot/Bukkit em diversos aspectos, então, se você tem experiência prévia com os mesmos e possui experiência com desenvolvimento em Rust, Python, C#, Go ou C, você terá uma experiência relativamente fácil ao escrever plugins para o Pumpkin. :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|||||||
@ -7,9 +7,10 @@ Herhangi bir sorunla karşılaşırsanız lütfen [Discord sunucumuzdan](https:/
|
|||||||
|
|
||||||
Pumpkin Eklentileri, sunucu yazılımıyla çok derin bir seviyede entegre olur ve diğer sunucu yazılımlarında mümkün olmayacak birçok şeye olanak tanır.
|
Pumpkin Eklentileri, sunucu yazılımıyla çok derin bir seviyede entegre olur ve diğer sunucu yazılımlarında mümkün olmayacak birçok şeye olanak tanır.
|
||||||
|
|
||||||
Pumpkin Eklenti API'si birçok yerde Spigot/Bukkit eklenti API'sinden ilham alır; daha önce bunlarla deneyiminiz ve Rust, Python, C# veya C geliştirme tecrübeniz varsa Pumpkin için eklenti yazmanız oldukça kolay olacaktır. :smile:
|
Pumpkin Eklenti API'si birçok yerde Spigot/Bukkit eklenti API'sinden ilham alır; daha önce bunlarla deneyiminiz ve Rust, Python, C#, Go veya C geliştirme tecrübeniz varsa Pumpkin için eklenti yazmanız oldukça kolay olacaktır. :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|||||||
@ -7,9 +7,10 @@ Pumpkin 插件 API 仍处于非常早期的开发阶段,可能随时会发生
|
|||||||
|
|
||||||
Pumpkin 插件与服务器软件在很深的层次上集成,允许实现其他服务器软件无法实现的许多功能。
|
Pumpkin 插件与服务器软件在很深的层次上集成,允许实现其他服务器软件无法实现的许多功能。
|
||||||
|
|
||||||
Pumpkin 插件 API 在很多方面受到 Spigot/Bukkit 插件 API 的启发,因此如果您有这些 API 的使用经验并且熟悉 Rust、Python、C# 或 C 开发,您应该能够相对轻松地为 Pumpkin 编写插件。 :smile:
|
Pumpkin 插件 API 在很多方面受到 Spigot/Bukkit 插件 API 的启发,因此如果您有这些 API 的使用经验并且熟悉 Rust、Python、C#、Go 或 C 开发,您应该能够相对轻松地为 Pumpkin 编写插件。 :smile:
|
||||||
|
|
||||||
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
* [Rust API](https://github.com/Pumpkin-MC/Pumpkin)
|
||||||
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
* [Python API](https://github.com/Pumpkin-MC/pumpkin-python)
|
||||||
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
* [C# API](https://github.com/Pumpkin-MC/pumpkin-api-cs)
|
||||||
|
* [Go API](https://github.com/Pumpkin-MC/pumpkin-api-go)
|
||||||
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
* [C API](https://github.com/Pumpkin-MC/pumpkin-api-c)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user