Skip to content

Commit

Permalink
Basic Webeditor setup
Browse files Browse the repository at this point in the history
  • Loading branch information
ToberoCat committed Sep 29, 2023
1 parent e4e7956 commit f4b7697
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 3 deletions.
3 changes: 2 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ services:
volumes:
- ./server:/data
ports:
- "25565:25565"
- "25565:25565"
- "4567:4567"
26 changes: 25 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
<spigot.api.version>1.18.1-R0.1-SNAPSHOT</spigot.api.version>
<toberocore.version>0f2d094899</toberocore.version>
<kotlin.version>1.9.10</kotlin.version>

<org.slf4j.version>1.7.5</org.slf4j.version>

<!-- Server Location. Set as run arg -->
<server.location>.</server.location>
</properties>
Expand Down Expand Up @@ -112,6 +113,29 @@
<version>3.0.3</version> <!-- Check on GitHub for the latest version -->
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-kotlin</artifactId>
<version>1.0.0-alpha</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import io.github.toberocat.guiengine.utils.BStatsCollector
import io.github.toberocat.guiengine.utils.Utils
import io.github.toberocat.guiengine.utils.logger.PluginLogger
import io.github.toberocat.guiengine.view.DefaultGuiViewManager
import io.github.toberocat.guiengine.webeditor.WebEditorServer
import io.github.toberocat.toberocore.action.ActionCore
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
Expand Down Expand Up @@ -92,6 +93,8 @@ class GuiEngineApiPlugin : JavaPlugin() {
registerCommands()
checkForUpdate()
BStatsCollector(this)

WebEditorServer(4567)
}

override fun onDisable() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.github.toberocat.guiengine.commands

import io.github.toberocat.guiengine.GuiEngineApiPlugin
import io.github.toberocat.guiengine.webeditor.WebEditorServer
import io.github.toberocat.toberocore.command.SubCommand
import io.github.toberocat.toberocore.command.arguments.Argument
import io.github.toberocat.toberocore.command.exceptions.CommandException
Expand All @@ -16,7 +18,11 @@ class WebEditorCommand : SubCommand("webeditor") {
sender: CommandSender,
strings: Array<String>
): Boolean {
sender.sendMessage("§6The Gui web editor is only available for gui engine premium users")
sender.sendMessage("§6The webeditor is starting...")

val port = GuiEngineApiPlugin.plugin.config.getInt("webeditor-port", 4567)
WebEditorServer(port)
sender.sendMessage("§7The webeditor is available to you at port §6localhost:$port")
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ open class PagedComponent(
override fun onViewInit(placeholders: Map<String, String>) {
pageParser = createParser()
pages = pageParser?.parse(parent) ?: pages
emptyFill = parent.node("empty-fill").map {
context!!.interpreter()
.createComponent(context!!.interpreter().xmlComponent(it.node, api!!), api!!, context!!)
}.nullable(null)
updateEmbedded()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.github.toberocat.guiengine.webeditor

import io.github.toberocat.guiengine.webeditor.controller.GuiEngineApiController
import spark.kotlin.port
import spark.kotlin.staticFiles

class WebEditorServer(port: Int) {
init {
port(port)
staticFiles.location("/webeditor")
GuiEngineApiController().register()
}
}

fun main() {
WebEditorServer(8080)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.github.toberocat.guiengine.webeditor.controller

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import spark.Request
import spark.Spark

private val mapper = ObjectMapper().registerKotlinModule()

interface Controller {
fun <T> getRequest(route: String, callback: (req: Request) -> T) {
Spark.get(route) { req, res ->
res.type("application/json")
return@get mapper.writeValueAsString(callback.invoke(req))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.github.toberocat.guiengine.webeditor.controller

import io.github.toberocat.guiengine.GuiEngineApi
import spark.Spark

class GuiEngineApiController : Controller {
fun register() {
getRequest("/apis") { GuiEngineApi.APIS.keys }
getRequest("/guis/:api") { GuiEngineApi.APIS[it.params("api")]?.getAvailableGuis() ?: emptySet() }
Spark.get("/guis/:api/:gui") { req, res ->
res.type("application/xml")
return@get """<?xml version="1.0" encoding="UTF-8"?>\n${getXmlGui(req.params("api"), req.params("gui"))}"""
}
}

private fun getXmlGui(apiId: String, guiId: String): String {
val api = GuiEngineApi.APIS[apiId] ?: return ""
return api.xmlMapper.writeValueAsString(api.loadXmlGui(emptyMap(), guiId))
}
}
1 change: 1 addition & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ items:
lore:
- ""
- "§7Click me! I can't get eaten"
webeditor-port: 4657
update-checker: true
28 changes: 28 additions & 0 deletions src/main/resources/log4j.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>

<logger name="org.apache.spark">
<level value="error"/>
</logger>

<logger name="org.spark-project">
<level value="error"/>
</logger>

<logger name="org.spark-project">
<level value="error"/>
</logger>

<root>
<priority value="debug"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
3 changes: 3 additions & 0 deletions src/main/resources/webeditor/components/simple-item.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class SimpleItem {

}
1 change: 1 addition & 0 deletions src/main/resources/webeditor/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<h1>Hallo Welt!</h1>

0 comments on commit f4b7697

Please sign in to comment.