add metadata
ci/woodpecker/push/jfmod Pipeline was successful
Details
ci/woodpecker/push/jfmod Pipeline was successful
Details
This commit is contained in:
parent
0aa1b38e93
commit
b4b592509b
|
@ -0,0 +1 @@
|
||||||
|
#link https://pages.frohnmeyer-wds.de/scripts/jfmod.yml
|
|
@ -0,0 +1,35 @@
|
||||||
|
Better-Whitelist provides a basic whitelist system for your server that you can adapt to your use case.
|
||||||
|
The mod is required both on the server and any clients connecting to the server.
|
||||||
|
The whitelist is configured using [μScript](https://git.frohnmeyer-wds.de/Johannes/java-commons/src/branch/master/muscript), but you don't have to be good at programming to use this mod.
|
||||||
|
A config file with some additional details will be created when you first start your server with the mod.
|
||||||
|
A simple config for Better-Whitelist could look as follows (please note that you'd probably have to add exceptions for client-side mods with optional server-side components when using this):
|
||||||
|
```
|
||||||
|
sharedMods = mods::values()::filter({ v -> v.environment != 'server' })::map({ v -> { id = v.id, version = v.version } })
|
||||||
|
|
||||||
|
// ensure the client has the correct version of every non-serverside mod on the server
|
||||||
|
assert(challenge({ arg ->
|
||||||
|
arg::allMatch({ v -> mods::values()::anyMatch({ m -> v.id == m.id & v.version == m.version }) })
|
||||||
|
}, sharedMods))
|
||||||
|
|
||||||
|
// ensure the client has no additional mods that would be required on the server
|
||||||
|
assert(challenge({ arg ->
|
||||||
|
clientSideMods = mods::values()::filter({ v -> v.environment != 'client' })
|
||||||
|
clientSideMods::allMatch({ v -> arg::anyMatch({ m -> v.id == m.id & v.version == m.version }) })
|
||||||
|
}, sharedMods))
|
||||||
|
|
||||||
|
// filter resource packs for X-Ray packs
|
||||||
|
bannedWords = listOf('xray', 'x-ray', 'cheat')
|
||||||
|
assert(!challenge({ ->
|
||||||
|
resourcePacks::map({ pack -> pack.name || ' ' || pack.displayName || ' ' || pack.description })
|
||||||
|
})::anyMatch({ v -> bannedWords::anyMatch({ word -> v::contains(word) }) }))
|
||||||
|
```
|
||||||
|
|
||||||
|
The following things are available to your scripts:
|
||||||
|
- All methods from the μScript standard library
|
||||||
|
- `resourcePacks` (client only): a list of resource packs, each of which has a `name`, `displayName` and `description`
|
||||||
|
- `println('message')` (both): a function for debugging
|
||||||
|
- `mods` (both): a list of loaded mods with the same fields as the result of `mod()`
|
||||||
|
- `mod('id')` (both): information about a specific mod (or null): `id`, `name`, `description`, `authors` (list of strings), `contributors` (list of strings), `version`, `environment` (either `client`, `server` or `*`), `license`, `contact` (same as FMJ), `depends` (list of strings)
|
||||||
|
- `assert(bool)` (server): assert that something is true and kick the player if it's not (optionally, add a message as the second parameter)
|
||||||
|
- `challenge({->closure}, additional arguments...)` (server): send a closure to the client to be executed there. The arguments may contain other closures.
|
||||||
|
- `user` (server): information about the user trying to log in, namely their `id` and `name`
|
|
@ -8,10 +8,9 @@ dependencies {
|
||||||
modImplementation(fabricApi.module("fabric-networking-api-v1", prop("fabric_version")))
|
modImplementation(fabricApi.module("fabric-networking-api-v1", prop("fabric_version")))
|
||||||
modImplementation(fabricApi.module("fabric-command-api-v2", prop("fabric_version")))
|
modImplementation(fabricApi.module("fabric-command-api-v2", prop("fabric_version")))
|
||||||
include(modImplementation("io.gitlab.jfronny:muscript:${prop("muscript_version")}")!!)
|
include(modImplementation("io.gitlab.jfronny:muscript:${prop("muscript_version")}")!!)
|
||||||
modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v1:${prop("libjf_version")}")
|
modImplementation("io.gitlab.jfronny.libjf:libjf-base:${prop("libjf_version")}")
|
||||||
|
|
||||||
// Dev env
|
// Dev env
|
||||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny-v1:${prop("libjf_version")}")
|
|
||||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${prop("libjf_version")}")
|
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${prop("libjf_version")}")
|
||||||
modLocalRuntime("com.terraformersmc:modmenu:${prop("modmenu_version")}")
|
modLocalRuntime("com.terraformersmc:modmenu:${prop("modmenu_version")}")
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,8 @@ loader_version=0.14.17
|
||||||
maven_group=io.gitlab.jfronny
|
maven_group=io.gitlab.jfronny
|
||||||
archives_base_name=better-whitelist
|
archives_base_name=better-whitelist
|
||||||
|
|
||||||
#modrinth_id=google-chat
|
modrinth_id=better-whitelist
|
||||||
#modrinth_required_dependencies=libjf
|
modrinth_required_dependencies=libjf, fabric-api
|
||||||
#modrinth_optional_dependencies=modmenu
|
|
||||||
#curseforge_id=574331
|
|
||||||
#curseforge_required_dependencies=libjf
|
|
||||||
#curseforge_optional_dependencies=modmenu
|
|
||||||
|
|
||||||
libjf_version=3.5.0-SNAPSHOT
|
libjf_version=3.5.0-SNAPSHOT
|
||||||
fabric_version=0.75.3+1.19.4
|
fabric_version=0.75.3+1.19.4
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
|
|
|
@ -38,7 +38,7 @@ public class BetterWhitelistClient implements ClientModInitializer {
|
||||||
int paramSize = buf.readInt();
|
int paramSize = buf.readInt();
|
||||||
List<Dynamic<?>> params = new LinkedList<>();
|
List<Dynamic<?>> params = new LinkedList<>();
|
||||||
for (int i = 0; i < paramSize; i++) {
|
for (int i = 0; i < paramSize; i++) {
|
||||||
params.add(Dynamic.deserialize(buf.readString()));
|
params.add(Parser.parse(buf.readString()).asDynamicExpr().get(fork));
|
||||||
}
|
}
|
||||||
String resultString = Dynamic.serialize(script.call(DFinal.of(params)));
|
String resultString = Dynamic.serialize(script.call(DFinal.of(params)));
|
||||||
BetterWhitelist.LOG.info("Sending result: " + resultString);
|
BetterWhitelist.LOG.info("Sending result: " + resultString);
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
|
@ -32,6 +32,7 @@
|
||||||
"fabricloader": ">=0.14.17",
|
"fabricloader": ">=0.14.17",
|
||||||
"minecraft": "*",
|
"minecraft": "*",
|
||||||
"fabric-networking-api-v1": "*",
|
"fabric-networking-api-v1": "*",
|
||||||
"fabric-command-api-v2": "*"
|
"fabric-command-api-v2": "*",
|
||||||
|
"libjf-base": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue