feat: add kubejs script (WIP)
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
LordMZTE 2022-06-29 22:14:03 +02:00
parent fab3d55721
commit b3791ea05f
Signed by: LordMZTE
GPG key ID: B64802DC33A64FF6
8 changed files with 247 additions and 79 deletions

View file

@ -7,6 +7,7 @@ steps:
- apt update
- apt install -y
curl
haxe
jq
libarchive-dev
libcurl4-openssl-dev

37
README.md Normal file
View file

@ -0,0 +1,37 @@
# Anvilcraft 4
The 4th pack of the Anvilcraft series!
## Building
First, Install the dependencies required for compilation:
- zig (master version)
- haxe
- libcurl
- libarchive
Arch:
```bash
paru -S \
zig-git \
haxe \
curl \
libarchive
```
Debian:
```bash
apt install \
haxe \
libcurl4-openssl-dev \
libarchive-dev
# install zig manually
```
Install `kubejs-haxe`:
```bash
haxelib install kubejs
```
Run the build script:
```bash
./build.zig
```

121
build.zig
View file

@ -34,12 +34,11 @@ pub fn main() !void {
var entry = c.archive_entry_new();
defer c.archive_entry_free(entry);
entrySetDir(entry.?);
c.archive_entry_set_size(entry, 0);
c.archive_entry_set_pathname(entry, "minecraft/");
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
c.archive_entry_set_pathname(entry, "minecraft/mods/");
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
try archiveCreateDir(zip.?, entry.?, "minecraft/");
try archiveCreateDir(zip.?, entry.?, "minecraft/mods/");
try installHaxe(zip.?, entry.?, &buf);
var overrides = try std.fs.cwd().openDir("overrides", .{ .iterate = true });
defer overrides.close();
@ -55,15 +54,9 @@ pub fn main() !void {
&[_][]const u8{ "minecraft/", e.path, "/\x00" },
);
defer std.heap.c_allocator.free(path);
entrySetDir(entry.?);
c.archive_entry_set_pathname(entry, path.ptr);
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
try archiveCreateDir(zip.?, entry.?, path.ptr);
},
.File => {
var file = try overrides.openFile(e.path, .{});
const stat = try file.stat();
entrySetFile(entry.?);
c.archive_entry_set_size(entry, @intCast(i64, stat.size));
const path = try std.mem.concatWithSentinel(
std.heap.c_allocator,
u8,
@ -71,30 +64,30 @@ pub fn main() !void {
0,
);
defer std.heap.c_allocator.free(path);
c.archive_entry_set_pathname(entry, path);
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
var file = try overrides.openFile(e.path, .{});
defer file.close();
var read = try file.read(&buf);
while (read != 0) {
_ = c.archive_write_data(zip, &buf, read);
read = try file.read(&buf);
}
try archiveFile(
zip.?,
entry.?,
&buf,
path,
file,
);
},
else => {},
}
}
entrySetFile(entry.?);
var file = try std.fs.cwd().openFile("mmc-pack.json", .{});
c.archive_entry_set_pathname(entry, "mmc-pack.json");
c.archive_entry_set_size(entry, @intCast(i64, (try file.stat()).size));
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
var read = try file.read(&buf);
while (read != 0) {
_ = c.archive_write_data(zip, &buf, read);
read = try file.read(&buf);
}
var mmc_pack_file = try std.fs.cwd().openFile("mmc-pack.json", .{});
defer mmc_pack_file.close();
try archiveFile(
zip.?,
entry.?,
&buf,
"mmc-pack.json",
mmc_pack_file,
);
const instance_cfg_data = "InstanceType=OneSix";
c.archive_entry_set_pathname(entry, "instance.cfg");
@ -124,6 +117,64 @@ pub fn main() !void {
try handleArchiveErr(c.archive_write_close(zip), zip);
}
fn archiveFile(
archive: *c.archive,
entry: *c.archive_entry,
buf: []u8,
name: [*c]const u8,
file: std.fs.File,
) !void {
entrySetFile(entry);
c.archive_entry_set_pathname(entry, name);
c.archive_entry_set_size(entry, @intCast(i64, (try file.stat()).size));
try handleArchiveErr(c.archive_write_header(archive, entry), archive);
var read = try file.read(buf);
while (read != 0) {
_ = c.archive_write_data(archive, buf.ptr, read);
read = try file.read(buf);
}
}
/// `name` must end with '/'!
fn archiveCreateDir(
archive: *c.archive,
entry: *c.archive_entry,
name: [*c]const u8,
) !void {
entrySetDir(entry);
c.archive_entry_set_pathname(entry, name);
try handleArchiveErr(c.archive_write_header(archive, entry), archive);
}
fn installHaxe(archive: *c.archive, entry: *c.archive_entry, buf: []u8) !void {
const term = try std.ChildProcess.init(
&.{ "haxe", "kubejs/build.hxml" },
std.heap.c_allocator,
).spawnAndWait();
const term_n = switch (term) {
.Exited => |n| @intCast(u32, n),
.Signal, .Unknown, .Stopped => |n| n,
};
if (term_n != 0)
return error.BuildHaxeError;
try archiveCreateDir(archive, entry, "minecraft/kubejs/");
try archiveCreateDir(archive, entry, "minecraft/kubejs/server_scripts/");
var file = try std.fs.cwd().openFile("build/kubejs-server.js", .{});
defer file.close();
try archiveFile(
archive,
entry,
buf,
"minecraft/kubejs/server_scripts/script.js",
file,
);
}
fn readMods(list: *std.ArrayList([]u8), alloc: std.mem.Allocator) !void {
var file = try std.fs.cwd().openFile("mods.txt", .{});
defer file.close();
@ -253,12 +304,14 @@ fn downloadMods(
}
fn entrySetDir(entry: *c.archive_entry) void {
c.archive_entry_set_mode(entry, c.S_IFDIR | 0777);
c.archive_entry_set_size(entry, 0);
c.archive_entry_set_filetype(entry, c.S_IFDIR);
c.archive_entry_set_perm(entry, 0o755);
c.archive_entry_unset_size(entry);
}
fn entrySetFile(entry: *c.archive_entry) void {
c.archive_entry_set_mode(entry, c.S_IFREG | 0777);
c.archive_entry_set_filetype(entry, c.S_IFREG);
c.archive_entry_set_perm(entry, 0o644);
}
fn handleCurlErr(code: c.CURLcode) !void {

15
kubejs/Main.hx Normal file
View file

@ -0,0 +1,15 @@
package;
import kubejs.Events;
import kubejs.Settings;
class Main {
static function main() {
Settings.logAddedRecipes = true;
Settings.logErroringRecipes = true;
Settings.logRemovedRecipes = true;
Settings.logSkippedRecipes = false;
Events.onEvent(EventType.RecipesEventType, Recipes.onEvent);
}
}

20
kubejs/Recipes.hx Normal file
View file

@ -0,0 +1,20 @@
import kubejs.events.server.RecipesEvent;
class Recipes {
public static function onEvent(event:RecipesEvent) {
event.shaped(
"flight_rings:t_basic_ring_treasure",
[
"S", "W", "S",
"W", "R", "W",
"F", "W", "F",
],
{
S: "terramine:mana_crystal",
W: "minecraft:feather",
R: "botania:pixie_ring",
F: "create:encased_fan",
}
);
}
}

5
kubejs/build.hxml Normal file
View file

@ -0,0 +1,5 @@
# invoke haxe from the repository root
-cp kubejs
-main Main
-lib kubejs
-js build/kubejs-server.js

View file

@ -5,7 +5,7 @@ https://github.com/Fabricators-of-Create/Porting-Lib/releases/download/1.0.0/por
https://cdn.modrinth.com/data/Xbc0uyRg/versions/mc1.18.2_v0.4.1+631/create-mc1.18.2_v0.4.1%2B631.jar
https://cdn.modrinth.com/data/svgZx0UN/versions/1.0-beta4/createplus-1.0.0-beta4.jar
https://cdn.modrinth.com/data/gKNwt7xu/versions/1.2.2-fabric/Tempad-fabric-1.18.2-1.2.2.jar
https://edge.forgecdn.net/files/3798/505/TechReborn-5.2.0.jar
https://mediafiles.forgecdn.net/files/3798/505/TechReborn-5.2.0.jar
https://cdn.modrinth.com/data/nfn13YXA/versions/8.2.490+fabric/RoughlyEnoughItems-8.2.490.jar
https://cdn.modrinth.com/data/XxWD5pD3/versions/fabric-11.1.3/appliedenergistics2-11.1.3.jar
https://cdn.modrinth.com/data/pNabrMMw/versions/11.1.1-fabric/AE2WTLib-11.1.1.jar
@ -36,36 +36,35 @@ https://cdn.modrinth.com/data/yn9u3ypm/versions/2.0.3+1.18.2/graves-2.0.3%2B1.18
#https://cdn.modrinth.com/data/IKpsG0nF/versions/1.6.8/paradise-lost-1.6.8%2B1.18.2.jar
https://cdn.modrinth.com/data/zgaWtmrV/versions/1.29/arcanus-1.29.jar
https://cdn.modrinth.com/data/F6KTit9k/versions/1.0.12/magitekmechs-fabric-MC1.18-1.0.12.jar
https://cdn.modrinth.com/data/4KWv7wbN/versions/1.4.5/chisel-1.4.5%2B1.18.2.jar
https://cdn.modrinth.com/data/1IjD5062/versions/2.0.0+1.18.2/continuity-2.0.0%2B1.18.2.jar
https://cdn.modrinth.com/data/WbwMfRsz/versions/1.3.4/terramine-1.3.4%2B1.18.2.jar
https://edge.forgecdn.net/files/3759/591/indrev-1.14.0-BETA.jar
https://edge.forgecdn.net/files/3758/209/deepmoblearning-refabricated-1.18.2.jar
https://edge.forgecdn.net/files/3832/920/upc-0.0.2.jar
https://edge.forgecdn.net/files/3785/658/simulacrum-0.5.4-beta.jar
https://edge.forgecdn.net/files/3795/212/mininggadgets-1.11.0.jar
https://edge.forgecdn.net/files/3734/921/iron-jetpacks-0.4.3.jar
https://edge.forgecdn.net/files/3724/30/EnhancedQuarries-1.18.2-1.2.1.jar
https://edge.forgecdn.net/files/3804/888/createaddition-1.18.2-20220525a.jar
https://edge.forgecdn.net/files/3732/839/DimensionalDoors-4.0.4-1.18.2.jar
https://mediafiles.forgecdn.net/files/3759/591/indrev-1.14.0-BETA.jar
https://mediafiles.forgecdn.net/files/3758/209/deepmoblearning-refabricated-1.18.2.jar
https://mediafiles.forgecdn.net/files/3832/920/upc-0.0.2.jar
https://mediafiles.forgecdn.net/files/3785/658/simulacrum-0.5.4-beta.jar
https://mediafiles.forgecdn.net/files/3795/212/mininggadgets-1.11.0.jar
https://mediafiles.forgecdn.net/files/3734/921/iron-jetpacks-0.4.3.jar
https://mediafiles.forgecdn.net/files/3724/30/EnhancedQuarries-1.18.2-1.2.1.jar
https://mediafiles.forgecdn.net/files/3804/888/createaddition-1.18.2-20220525a.jar
https://mediafiles.forgecdn.net/files/3732/839/DimensionalDoors-4.0.4-1.18.2.jar
https://cdn.modrinth.com/data/7SDalH12/versions/1.5.3-1.18.2/FabricShieldLib-1.5.3-1.18.jar
https://cdn.modrinth.com/data/rfj2v0X6/versions/v1.4.0/sizeshiftingpotions-1.4.0.jar
https://edge.forgecdn.net/files/3816/496/TerraBlender-fabric-1.18.2-1.1.0.102.jar
https://mediafiles.forgecdn.net/files/3816/496/TerraBlender-fabric-1.18.2-1.1.0.102.jar
https://cdn.modrinth.com/data/t5W7Jfwy/versions/3.3.2+1.14.4-1.19/Pehkui-3.3.2%2B1.14.4-1.19.jar
https://edge.forgecdn.net/files/3798/506/RebornCore-5.2.0.jar
https://edge.forgecdn.net/files/3827/255/geckolib-fabric-1.18-3.0.47.jar
https://mediafiles.forgecdn.net/files/3798/506/RebornCore-5.2.0.jar
https://mediafiles.forgecdn.net/files/3827/255/geckolib-fabric-1.18-3.0.47.jar
https://cdn.modrinth.com/data/9s6osm5g/versions/6.2.62/cloth-config-fabric-6.2.62.jar
https://edge.forgecdn.net/files/3668/220/autoconfig1u-3.4.0.jar
https://mediafiles.forgecdn.net/files/3668/220/autoconfig1u-3.4.0.jar
https://cdn.modrinth.com/data/5aaWibi9/versions/3.3.1/trinkets-3.3.1.jar
https://edge.forgecdn.net/files/3648/220/%5b1.18%2B%5d+Flight+Rings+1.6.2.jar
https://edge.forgecdn.net/files/3824/538/ftb-chunks-fabric-1802.3.6-build.147.jar
https://edge.forgecdn.net/files/3725/500/ftb-teams-fabric-1802.2.6-build.51.jar
https://edge.forgecdn.net/files/3822/757/ftb-library-fabric-1802.3.6-build.123.jar
https://edge.forgecdn.net/files/3725/671/ftb-ultimine-fabric-1802.3.3-build.55.jar
https://edge.forgecdn.net/files/3796/516/Mine-Pop!+1.0-1.18.2+(FABRIC).jar
https://edge.forgecdn.net/files/3807/435/Applied-Botanics-1.2.1.jar
https://edge.forgecdn.net/files/3778/610/aofemotes-0.0.4+1.18.1.jar
https://edge.forgecdn.net/files/3772/197/archon-0.2.4.jar
https://mediafiles.forgecdn.net/files/3648/220/%5b1.18%2B%5d+Flight+Rings+1.6.2.jar
https://mediafiles.forgecdn.net/files/3824/538/ftb-chunks-fabric-1802.3.6-build.147.jar
https://mediafiles.forgecdn.net/files/3725/500/ftb-teams-fabric-1802.2.6-build.51.jar
https://mediafiles.forgecdn.net/files/3822/757/ftb-library-fabric-1802.3.6-build.123.jar
https://mediafiles.forgecdn.net/files/3725/671/ftb-ultimine-fabric-1802.3.3-build.55.jar
https://mediafiles.forgecdn.net/files/3796/516/Mine-Pop!+1.0-1.18.2+(FABRIC).jar
https://mediafiles.forgecdn.net/files/3807/435/Applied-Botanics-1.2.1.jar
https://mediafiles.forgecdn.net/files/3778/610/aofemotes-0.0.4%2B1.18.1.jar
https://mediafiles.forgecdn.net/files/3772/197/archon-0.2.4.jar
https://cdn.modrinth.com/data/nU0bVIaL/versions/1.18.2-71.1-fabric/Patchouli-1.18.2-71.1-FABRIC.jar
# disabled because of mixin crash
#https://cdn.modrinth.com/data/IsKsViE2/versions/0.5.5/artifality-0.5.5.jar
@ -91,24 +90,25 @@ https://cdn.modrinth.com/data/5g7OOxWC/versions/1.2.1+1.18.2/sandwichable-1.2.1%
https://cdn.modrinth.com/data/7n8PQuhb/versions/1.0.1/grains-of-sand-1.0.1.jar
https://cdn.modrinth.com/data/AKgnrAFj/versions/1.3.1/secretrooms-1.3.1%2B1.18.2.jar
https://cdn.modrinth.com/data/3rc31Hgo/versions/1.4.2/spectrum-1.4.2-1.18.2-chaos_and_exploration.jar
https://edge.forgecdn.net/files/3838/886/architects-palette-fabric-2.2.jar
https://edge.forgecdn.net/files/3756/730/artifacts-7.0.3+fabric.jar
https://edge.forgecdn.net/files/3740/439/AdditionalStructures-1.18.2-(v.3.0.3).jar
https://edge.forgecdn.net/files/3830/795/bewitchment-1.18-22.jar
https://edge.forgecdn.net/files/3814/359/bclib-1.4.7.jar
https://edge.forgecdn.net/files/3814/370/better-end-1.1.1.jar
https://edge.forgecdn.net/files/3814/362/better-nether-6.1.2.jar
https://edge.forgecdn.net/files/3807/49/blockus-2.4.7+1.18.2.jar
https://edge.forgecdn.net/files/3770/217/dankstorage-1.18.2-3.7.jar
https://edge.forgecdn.net/files/3681/918/Decorative+Blocks-fabric-1.18.2-2.1.0.jar
https://edge.forgecdn.net/files/3777/271/mcdar-1.4.8.jar
https://edge.forgecdn.net/files/3851/61/agape_space_18_2-0.5.15.jar
https://edge.forgecdn.net/files/3844/873/travelers-backpack-1.18.2-7.1.1.jar
https://edge.forgecdn.net/files/3759/595/wirelessnetworks-1.5.1.jar
https://edge.forgecdn.net/files/3671/220/winged-1.18.2-3.2.0.jar
https://edge.forgecdn.net/files/3847/377/xp_obelisk-0.4.1.r_for_1.18.x_Fabric.jar
https://edge.forgecdn.net/files/3683/667/Runelic-Fabric-1.18.2-11.0.1.jar
https://edge.forgecdn.net/files/3832/269/Bookshelf-Fabric-1.18.2-13.2.21.jar
https://edge.forgecdn.net/files/3683/673/PigPen-Fabric-1.18.2-8.0.1.jar
https://edge.forgecdn.net/files/3830/308/DarkUtilities-Fabric-1.18.2-10.0.5.jar
https://cdn.modrinth.com/data/ccKDOlHs/versions/0.7.2+1.18/owo-lib-0.7.2%2B1.18.jar
https://mediafiles.forgecdn.net/files/3838/886/architects-palette-fabric-2.2.jar
https://mediafiles.forgecdn.net/files/3756/730/artifacts-7.0.3%2Bfabric.jar
https://mediafiles.forgecdn.net/files/3740/439/AdditionalStructures-1.18.2-(v.3.0.3).jar
https://mediafiles.forgecdn.net/files/3830/795/bewitchment-1.18-22.jar
https://mediafiles.forgecdn.net/files/3814/359/bclib-1.4.7.jar
https://mediafiles.forgecdn.net/files/3814/370/better-end-1.1.1.jar
https://mediafiles.forgecdn.net/files/3814/362/better-nether-6.1.2.jar
https://mediafiles.forgecdn.net/files/3807/49/blockus-2.4.7%2B1.18.2.jar
https://mediafiles.forgecdn.net/files/3770/217/dankstorage-1.18.2-3.7.jar
https://mediafiles.forgecdn.net/files/3681/918/Decorative+Blocks-fabric-1.18.2-2.1.0.jar
https://mediafiles.forgecdn.net/files/3777/271/mcdar-1.4.8.jar
https://mediafiles.forgecdn.net/files/3851/61/agape_space_18_2-0.5.15.jar
https://mediafiles.forgecdn.net/files/3844/873/travelers-backpack-1.18.2-7.1.1.jar
https://mediafiles.forgecdn.net/files/3759/595/wirelessnetworks-1.5.1.jar
https://mediafiles.forgecdn.net/files/3671/220/winged-1.18.2-3.2.0.jar
https://mediafiles.forgecdn.net/files/3847/377/xp_obelisk-0.4.1.r_for_1.18.x_Fabric.jar
https://mediafiles.forgecdn.net/files/3683/667/Runelic-Fabric-1.18.2-11.0.1.jar
https://mediafiles.forgecdn.net/files/3832/269/Bookshelf-Fabric-1.18.2-13.2.21.jar
https://mediafiles.forgecdn.net/files/3683/673/PigPen-Fabric-1.18.2-8.0.1.jar
https://mediafiles.forgecdn.net/files/3830/308/DarkUtilities-Fabric-1.18.2-10.0.5.jar
https://cdn.modrinth.com/data/ccKDOlHs/versions/0.7.2+1.18/owo-lib-0.7.2%2B1.18.jar
https://cdn.modrinth.com/data/umyGl7zF/versions/1802.5.4-build.506+fabric/kubejs-fabric-1802.5.4-build.506.jar

View file

@ -0,0 +1,37 @@
{
"basicRingOptions": {
"enabled": true,
"durability": true,
// Durability of basic ring
"durabilityValue": 180,
// Recipe uses an ender eye instead of quartz. §c§lDeletes existing basic rings
"eye": false,
"exhaustion": 0.15000000596046448,
// Basic ring gives slow falling after breaking
"protects": false
},
"pureRingOptions": {
"durability": true,
// Durability of pure ring
"durabilityValue": 9000,
"exhaustion": 0.029999999329447746,
// Pure ring uses XP instead of durability
"xpEnabled": false,
// How much percentage of the XP bar is used per second
"xpCost": 1.0,
// Pure ring gives you slow falling when out of durability
"protects": true
},
"misc": {
// Percentage chance per tick (20/s) for a ring to lose durability
"damageChance": 10.0,
// Recipes disabled. §c§lDeletes all existing rings
"treasure": true,
// Enables rings to spawn in chest loot
"chestLoot": false,
// Adds Trinkets support. §c§lDeletes all existing rings
"trinkets": true,
// Rings force flight when equipping or loading world midair
"autofly": true
}
}