Fixing...
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed

Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
Dieser Commit ist enthalten in:
Chaoscaot 2023-06-06 17:40:37 +02:00
Ursprung 43cecb54e3
Commit 29851ca4ca
8 geänderte Dateien mit 79 neuen und 184 gelöschten Zeilen

Datei anzeigen

@ -232,13 +232,13 @@ SCRIPT_GUI_ITEM_NAME = §eScript Hilfe
## CustomScript
SCRIPT_HOTKEY_ITEM_NAME = §7Hotkey§8: §e{0}
SCRIPT_EVENT_ITEM_NAME = §7Event§8: §e{0}
SCRIPT_COMMAND_ITEM_NAME = §7Command§8: §e/{0}
SCRIPT_COMMAND_ITEM_NAME = §7Befehl§8: §e/{0}
## Script Menu GUI
SCRIPT_MENU_GUI_ITEM_LORE_1 = §7Klicke zum rausnehmen
SCRIPT_MENU_GUI_ITEM_LORE_2 = §7Shift Klicke zum kopieren
SCRIPT_MENU_GUI_ITEM_LORE_3 = §7Rechts Klicke zum editieren
SCRIPT_MENU_GUI_ITEM_LORE_4 = §7Mittel Klicke zum anschauen
SCRIPT_MENU_GUI_ITEM_LORE_2 = §7Shiftklick zum kopieren
SCRIPT_MENU_GUI_ITEM_LORE_3 = §7Rechtsklick zum editieren
SCRIPT_MENU_GUI_ITEM_LORE_4 = §7Mittelklick zum anschauen
SCRIPT_MENU_GUI_NAME = §eScript-Menü
SCRIPT_MENU_GUI_ITEM_ADD_NAME = §eHinzufügen
SCRIPT_MENU_GUI_ITEM_ADD_LORE = §7Klicke mit einem Buch zum hinzufügen

Datei anzeigen

@ -90,7 +90,7 @@ public class ScriptRunner {
public static boolean callEvent(Player player, SteamWarGlobalLuaPlugin.EventType event, LuaValue eventValue) {
List<LuaFunction> luaFunctions = EVENT_MAP.getOrDefault(player, Collections.emptyMap()).getOrDefault(event, Collections.emptyList());
if (luaFunctions == null) {
if(event == SteamWarGlobalLuaPlugin.EventType.FF) {
if(event == SteamWarGlobalLuaPlugin.EventType.DoubleSwap) {
player.performCommand("gui");
}

Datei anzeigen

@ -72,7 +72,7 @@ public class EventListener implements Listener {
@EventHandler
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
if (LAST_FS.containsKey(event.getPlayer())) {
event.setCancelled(ScriptRunner.callEvent(event.getPlayer(), SteamWarGlobalLuaPlugin.EventType.FF, LuaValue.NIL));
event.setCancelled(ScriptRunner.callEvent(event.getPlayer(), SteamWarGlobalLuaPlugin.EventType.DoubleSwap, LuaValue.NIL));
} else {
LAST_FS.put(event.getPlayer(), System.currentTimeMillis());
}

Datei anzeigen

@ -89,7 +89,7 @@ public class SteamWarGlobalLuaPlugin extends TwoArgFunction {
}
public enum EventType {
FF,
DoubleSwap,
PlaceBlock,
BreakBlock,
RightClick,

Datei anzeigen

@ -73,7 +73,7 @@ public class SteamWarLuaPlugin extends TwoArgFunction {
return LuaValue.NIL;
}
});
env.set("timeout", new TwoArgFunction() {
env.set("delayed", new TwoArgFunction() {
@Override
public LuaValue call(LuaValue arg1, LuaValue arg2) {
long time = arg1.checklong();

Datei anzeigen

@ -38,7 +38,7 @@ public class PlayerLib implements LuaLib {
public LuaTable get(Player player) {
LuaTable table = new LuaTable();
table.set("name", getter(player::getName));
table.set("message", new Print(player));
table.set("chat", new Print(player));
table.set("actionbar", new SendActionbar(player));
table.set("x", getterAndSetter(player.getLocation()::getX, player.getLocation()::setX));

Datei anzeigen

@ -1,100 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.sql;
import de.steamwar.sql.internal.Field;
import de.steamwar.sql.internal.SelectStatement;
import de.steamwar.sql.internal.Statement;
import de.steamwar.sql.internal.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
@AllArgsConstructor
@Getter
public class Script {
// TODO: 28.05.23 REMOVE THIS
private static final Table<Script> table = new Table<>(Script.class);
private static final SelectStatement<Script> select = table.select(Table.PRIMARY);
private static final SelectStatement<Script> selectNameUser = table.select("nameUser");
private static final SelectStatement<Script> list = new SelectStatement<>(table, "SELECT Id, User, Name FROM Script WHERE User = ?");
private static final Statement update = table.updateFields(new String[]{"name"}, Table.PRIMARY);
private static final Statement insert = table.insertFields(true, "User", "Name");
private static final Statement delete = table.delete(Table.PRIMARY);
private static final Statement getScript = new Statement("SELECT Code FROM Script WHERE id = ?");
private static final Statement updateScript = new Statement("UPDATE Script SET Code = ? WHERE id = ?");
public static Script get(int id) {
return select.select(id);
}
public static Script get(SteamwarUser user, String name) {
return selectNameUser.select(user, name);
}
public static Script create(SteamwarUser user, String name, String code) {
int id = insert.insertGetKey(user, name);
Script script = get(id);
script.setScript(code);
return script;
}
public static List<Script> list(SteamwarUser user) {
return list.listSelect(user);
}
@Field(keys = Table.PRIMARY, autoincrement = true)
private final int id;
@Field(keys = "nameUser")
private final int user;
@Field(keys = "nameUser")
private String name;
public void setName(String name) {
this.name = name;
update();
}
public String getScript() {
return getScript.select(rs -> {
if(rs.next()) {
return rs.getString("Code");
}
return null;
}, id);
}
public void setScript(String script) {
updateScript.update(script, id);
}
private void update() {
update.update(name, id);
}
public void delete() {
delete.update(id);
}
}

145
SCRIPT.md
Datei anzeigen

@ -6,7 +6,6 @@
* [Einleitung](#einleitung)
* [Basis-Apis](#basis-apis)
* [SteamWar.de-Api](#steamwarde-api)
* [global](#global)
* [player](#player)
* [region](#region)
* [tnt](#tnt)
@ -15,7 +14,7 @@
* [tps](#tps)
* [SteamWar.de-Global-Api](#steamwarde-global-api)
* [Hotkeys](#hotkeys)
* [Event Type](#event-type)
* [Eventtypen](#eventtypen)
* [BlockEvent](#blockevent)
* [InteractEvent](#interactevent)
* [Position](#position)
@ -23,7 +22,7 @@
* [Hello, World!](#hello-world)
* [Code](#code)
* [Ausgabe](#ausgabe)
* [BauGUI on FF](#baugui-on-ff)
* [BauGUI on DoubleSwap](#baugui-on-doubleswap)
* [Code](#code-1)
* [SL Command](#sl-command)
* [Code](#code-2)
@ -41,7 +40,7 @@ Es werden folgende Standard-Apis zur Verfügung gestellt:
- [`math`](https://www.lua.org/manual/5.4/manual.html#6.7)
- [`string`](https://www.lua.org/manual/5.4/manual.html#6.4)
- [`table`](https://www.lua.org/manual/5.4/manual.html#6.6)
- `bit32`
- [`bit32`](https://www.lua.org/manual/5.2/manual.html#6.7)
# SteamWar.de-Api
APIs, die mit einem `_` beginnen sind noch nicht stabil und können sich jederzeit ändern.
@ -54,54 +53,51 @@ In den Scripten gibt es dazu noch folgende globale Variablen:
- [`server`](#server)
- `_worldedit`
### global
Die `global`-Api stellt Funktionen zur Verfügung, QOL sind.
Es gibt folgende Funktionen:
Ohne eine Kategorie sind folgende Funktionen verfügbar, die nicht allgemein sind:
| Name | Signature | Beschreibung |
|-----------|----------------------------------|----------------------------------------------------------------------------------------------------|
| `print` | print(String...) | @see message(String...) |
| `input` | input(String, Function\<String>) | Fragt den User nach einer Eingabe mit der Nachricht und called die zugehörige Funktion nach dieser |
| `timeout` | timeout(Number, Function\<Void>) | Wartet die angegebene Anzahl an Ticks und führt danach die zugehörige Funktion aus |
| `pos` | pos(Number, Number, Number) | Erstellt aus drei Zahlen eine Position-Table, sind unter den Namen `x`, `y` und `z` abgespeichert |
| `exec` | exec(String...) | Führt den angegebenen Befehl als Spieler aus |
| Name | Signature | Beschreibung |
|-----------|----------------------------------|-------------------------------------------------------------------------------------------------------------------|
| `print` | print(String...) | @see message(String...) |
| `input` | input(String, Function\<String>) | Fragt den User nach einer Eingabe mit der Nachricht und called die zugehörige Funktion nach dieser |
| `delayed` | delayed(Number, Function\<Void>) | Wartet die angegebene Anzahl an Ticks und führt danach die zugehörige Funktion aus |
| `pos` | pos(Number, Number, Number) | Erstellt aus drei Zahlen eine Position-Table. Die Koordinaten sind unter den Namen `x`, `y` und `z` abgespeichert |
| `exec` | exec(String...) | Führt den angegebenen Befehl als Spieler aus |
### player
Die `player`-Api stellt Funktionen zur Verfügung, die den Spieler betreffen.
Das `player`-Modul stellt Funktionen zur Verfügung, die den Spieler betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|---------------|--------------------------------|-------------------------------------------------------------|
| `name` | name(): String | Gibt den `displayName` des Spielers zurück |
| `message` | message(String...) | Sendet den Text in den Chat des Spielers |
| `actionbar` | actionbar(String...) | Sendet den Text in die ActionBar des Spielers |
| `x` | x(Number), x(): Number | Setzt oder gibt die X-Koordinate des Spielers |
| `y` | y(Number), y(): Number | Setzt oder gibt die Y-Koordinate des Spielers |
| `z` | z(Number), z(): Number | Setzt oder gibt die Z-Koordinate des Spielers |
| `yaw` | yaw(Number), yaw(): Number | Setzt oder gibt den Yaw des Spielers |
| `pitch` | pitch(Number), pitch(): Number | Setzt oder gibt den Pitch des Spielers |
| `sneaking` | sneaking(): Boolean | Wahr, wenn der Spieler am Sneaken ist |
| `sprinting` | sprinting(): Boolean | Wahr, wenn der Spieler am Sprinten ist |
| `slot` | slot(Number), slot(): Number | Setzt oder gibt den Slot des gehaltenden Items des Spielers |
| `item` | item(): String | Gibt den Item Type der Main-Hand zurück |
| `offHandItem` | offHandItem(): String | Gibt den Item Type der Off-Hand zurück |
| Name | Signature | Beschreibung |
|---------------|--------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| `name` | name(): String | Gibt den `displayName` des Spielers zurück |
| `chat` | chat(String...) | Sendet den Text in den Chat des Spielers |
| `actionbar` | actionbar(String...) | Sendet den Text in die ActionBar des Spielers |
| `x` | x(Number), x(): Number | Setzt oder gibt die X-Koordinate des Spielers |
| `y` | y(Number), y(): Number | Setzt oder gibt die Y-Koordinate des Spielers |
| `z` | z(Number), z(): Number | Setzt oder gibt die Z-Koordinate des Spielers |
| `yaw` | yaw(Number), yaw(): Number | Setzt oder gibt die Gierung des Spielers |
| `pitch` | pitch(Number), pitch(): Number | Setzt oder gibt die Steigung des Spielers |
| `sneaking` | sneaking(): Boolean | Wahr, wenn der Spieler am Sneaken ist |
| `sprinting` | sprinting(): Boolean | Wahr, wenn der Spieler am Sprinten ist |
| `slot` | slot(Number), slot(): Number | Setzt oder gibt den Slot des gehaltenden Items des Spielers [(Wiki)](https://minecraft.fandom.com/wiki/Slot#Java_Edition) |
| `item` | item(): String | Gibt den Itemtyp der Main-Hand zurück |
| `offHandItem` | offHandItem(): String | Gibt den Itemtyp der Off-Hand zurück |
### region
Die `region`-Api stellt Funktion zur Verfügung, die die Region des Spielers betreffen.
Das `region`-Modul stellt Funktion zur Verfügung, die die Region des Spielers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|-----------|--------------------|------------------------------------------------------------------------------------------------------------|
| `name` | name(): String | Gibt den Namen der Region zurück |
| `type` | type(): String | Gibt den Namen des Typen der Region zurück |
| `fire` | fire(): Boolean | Gibt den Fire-Mode der Region zurück |
| `freeze` | freeze(): Boolean | Gibt den Freeze-Mode der Region zurück |
| `protect` | protect(): Boolean | Gibt den Protect-Mode der Region zurück |
| `loader` | pvp(): String | Gibt den Status des Loaders des Spielers zurück, die werte sind: `OFF`, `SETUP`, `RUNNING`, `PAUSE`, `END` |
| `name` | name(): String | Gibt den Regionsnamen |
| `type` | type(): String | Gibt den Regionstyp |
| `fire` | fire(): Boolean | Gibt den Fire-Modus der Region zurück |
| `freeze` | freeze(): Boolean | Gibt den Freeze-Modus der Region zurück |
| `protect` | protect(): Boolean | Gibt den Protect-Modus der Region zurück |
| `loader` | loader(): String | Gibt den Status des Loaders des Spielers zurück, die Werte sind: `OFF`, `SETUP`, `RUNNING`, `PAUSE`, `END` |
Es gibt folgende Variablen:
Es gibt folgende weitere Module:
| Name | Beschreibung |
|---------|-----------------|
@ -109,7 +105,7 @@ Es gibt folgende Variablen:
| `trace` | [trace](#trace) |
#### tnt
Die `tnt`-Api stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
Das `tnt`-Modul stellt Funktionen zur Verfügung, die den TNT-Modus in der Region des Spielers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
@ -120,7 +116,7 @@ Es gibt folgende Funktionen:
#### trace
Die `trace`-Api stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
Das `trace`-Modul stellt Funktionen zur Verfügung, die den Status des Tracers der Region betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
@ -131,35 +127,35 @@ Es gibt folgende Funktionen:
| `time` | time(): String | Gibt die Zeit des Tracers zurück |
## server
Die `server`-Api stellt Funktionen zur Verfügung, die den Server betreffen.
Das `server`-Modul stellt Funktionen zur Verfügung, die den Server betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|--------------|-------------------------|----------------------------------------------------|
| `time` | time(): String | Gibt die aktuelle Zeit im format `HH:mm:ss` zurück |
| `ticks` | ticks(): Number | Gibt die Ticks seit start des Server zurück |
| `getBlockAt` | getBlockAt(Pos): String | Gibt das Material an der Position zurück |
| `setBlockAt` | setBlockAt(Pos, String) | Setzt das Material an der angegebenen Stelle |
| Name | Signature | Beschreibung |
|--------------|-------------------------|---------------------------------------------------------------------|
| `time` | time(): String | Gibt die aktuelle Zeit im Format `HH:mm:ss` zurück |
| `ticks` | ticks(): Number | Gibt die Ticks seit start des Serverstarts zurück |
| `getBlockAt` | getBlockAt(Pos): String | Gibt das Material an der Position zurück |
| `setBlockAt` | setBlockAt(Pos, String) | Setzt das Material an der angegebenen Stelle (z.B. Stein = `STONE`) |
Es gibt folgende Variablen:
Es gibt folgende weitere Module:
| Name | Beschreibung |
|-------|--------------|
| `tps` | [tps](#tps) |
#### tps
Die `tps`-Api stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
Das `tps`-Modul stellt Funktionen zur Verfügung, die die TPS des Servers betreffen.
Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|--------------|----------------------|-------------------------------------------------------------------|
| `current` | current(): Number | Gibt die aktuelle TPS zurück |
| `current` | current(): Number | Gibt die aktuelle TPS zurück (Das selbe wie `oneSecound()`) |
| `oneSecond` | oneSecond(): Number | Gibt die durchschnittliche TPS über die letzte Sekunde zurück |
| `tenSecond` | tenSecond(): Number | Gibt die durchschnittliche TPS über die letzte 10 Sekunden zurück |
| `oneMinute` | oneMinute(): Number | Gibt die durchschnittliche TPS über die letzte Minute zurück |
| `fiveMinute` | fiveMinute(): Number | Gibt die durchschnittliche TPS über die letzte 5 Minuten zurück |
| `tenMinute` | tenMinute(): Number | Gibt die durchschnittliche TPS über die letzte 10 Minuten zurück |
| `limit` | limit(): Number | Gibt den TPS-Limit zurück |
| `limit` | limit(): Number | Gibt das TPS-Limit zurück |
# SteamWar.de-Global-Api
Mit `/script` kann man Script-Bücher global abspeichern. Diese haben dann zugrif auf die `global`-Api.
@ -169,8 +165,8 @@ Es gibt folgende Funktionen:
| Name | Signature | Beschreibung |
|-----------|-----------------------------------|-----------------------------------------------------------------------------|
| `event` | event(EventType, Function(Any)) | Registriere einen Event Handler |
| `command` | command(String, Function(Args)) | Registriere einen Command |
| `event` | event(EventType, Function(Any)) | Registriere einen Event Listener |
| `command` | command(String, Function(Args)) | Registriere einen Befehl |
| `hotkey` | hotkey(String, Function(Boolean)) | Registriere einen Hotkey, the function gets a boolean if the key is pressed |
Es gibt folgende Variablen:
@ -181,7 +177,7 @@ Es gibt folgende Variablen:
## Hotkeys
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Es gibt folgende Modifier:
Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Bei den Hotkey erstellung ist die Großschreibung egal. Es gibt folgende Modifier:
- `ctrl`
- `shift`
- `alt`
@ -189,24 +185,23 @@ Hotkeys werden im folgenden Format angegeben: `MODIFIER+KEY`. Es gibt folgende M
Es können auch mehrere Modifier angegeben werden, z.B. `ctrl+shift+alt+c`. Die Reihenfolge der Modifier und des Keys ist egal.
## Event Type
Einige Events sind auch cancelbar, dazu muss die Funktion `setCanceled()` aufgerufen werden.
Es gibt folgende Event-Typen:
## Eventtypen
Einige Events sind auch abbrechbar, dazu muss die Funktion `setCanceled()` aufgerufen werden.
| Name | Wenn | Parameter | Cancelbar |
|---------------------|-----------------------------------------------------|---------------------------------|-----------|
| `FF` | Beim Doppelten Drücken der Swap-Hands taste | NIL | false |
| `PlaceBlock` | Beim Platzieren von Blöcken | [BlockEvent](#blockevent) | true |
| `BreakBlock` | Beim Zerstören von Blöcken | [BlockEvent](#blockevent) | true |
| `RightClick` | Beim Rechts klicken | [InteractEvent](#interactevent) | true |
| `LeftClick` | Beim Links Klicken | [InteractEvent](#interactevent) | true |
| `TNTSpawn` | Wenn ein TNT in der aktuellen Region spawnt | NIL | false |
| `TNTExplode` | Wenn ein TNT in der aktuellen Region explodiert | [Position](#position) | true |
| `TNTExplodeInBuild` | Wenn ein TNT in der aktuellen Bau Region explodiert | [Position](#position) | true |
| `SelfJoin` | Wenn man selbst den Server betritt | NIL | false |
| `SelfLeave` | Wenn man den Server verlässt | NIL | false |
| `DropItem` | Wenn man ein item Droppt | (type: Material) | true |
| `EntityDeath` | Wenn ein Entity Stirbt | (type: Entity Type) | false |
| Name | Wenn | Parameter | Abbrechbar |
|---------------------|-----------------------------------------------------|---------------------------------|------------|
| `DoubleSwap` | Beim Doppelten Drücken der Swap-Hands taste | NIL | false |
| `PlaceBlock` | Beim Platzieren von Blöcken | [BlockEvent](#blockevent) | true |
| `BreakBlock` | Beim Zerstören von Blöcken | [BlockEvent](#blockevent) | true |
| `RightClick` | Beim Rechtsklick | [InteractEvent](#interactevent) | true |
| `LeftClick` | Beim Linksklick | [InteractEvent](#interactevent) | true |
| `TNTSpawn` | Wenn ein TNT in der aktuellen Region spawnt | NIL | false |
| `TNTExplode` | Wenn ein TNT in der aktuellen Region explodiert | [Position](#position) | true |
| `TNTExplodeInBuild` | Wenn ein TNT in der aktuellen Bau Region explodiert | [Position](#position) | true |
| `SelfJoin` | Wenn man selbst den Server betritt | NIL | false |
| `SelfLeave` | Wenn man den Server verlässt | NIL | false |
| `DropItem` | Wenn man ein Item droppt | (type: Material) | true |
| `EntityDeath` | Wenn ein Entity stirbt | (type: Entity Type) | false |
### BlockEvent
Das übergebene Objekt an den Handler hat folgende Variablen:
@ -263,8 +258,8 @@ print("Hello, World!")
Hello, World!
```
## BauGUI on FF
Das default Script für das Öffnen des BauGUIs
## BauGUI on DoubleSwap
Das Standardskript für das Öffnen des BauGUIs
#### Code
```lua
@ -288,7 +283,7 @@ command("sl", handler)
```
## Paste Hotkey
Ein Hotkey zum pasten des Clipboard-Inhalts.
Ein Hotkey zum Pasten des Clipboard-Inhalts.
#### Code
```lua