Compare commits
15 commits
Author | SHA1 | Date | |
---|---|---|---|
b5883bccd8 | |||
c4878e6d42 | |||
49a8ef908a | |||
cd515d9ace | |||
8b3f5ce53a | |||
c396b9c99a | |||
2cb4b901e8 | |||
0de66cacf3 | |||
9d0d1f9ccb | |||
edbcfc183f | |||
286d65ccfd | |||
d253d2b9bd | |||
cc6c8688f5 | |||
7c738210f9 | |||
ecffd904c0 |
16 changed files with 376 additions and 74 deletions
6
.prettierrc.json5
Normal file
6
.prettierrc.json5
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
// Formatter configuration for the KubeJS scripts.
|
||||||
|
{
|
||||||
|
tabWidth: 4,
|
||||||
|
trailingComma: "always",
|
||||||
|
}
|
||||||
|
|
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -1,7 +1,3 @@
|
||||||
- added Mouse Wheelie
|
- fixed some tags and recipes
|
||||||
- added Not Enough Crashes
|
- removed ae2 spatial anchor (broken on fabric)
|
||||||
- added Polymorph (recipe conflict fix)
|
- added `/rtp` command
|
||||||
- fixed recipe conflicts
|
|
||||||
- removed earthbounds (causes crashes)
|
|
||||||
- removed terramine (causes too many crashes and has unbalanced demon eyes)
|
|
||||||
|
|
||||||
|
|
46
build.zig
46
build.zig
|
@ -45,18 +45,25 @@ pub fn main() !void {
|
||||||
var walker = try overrides.walk(std.heap.c_allocator);
|
var walker = try overrides.walk(std.heap.c_allocator);
|
||||||
defer walker.deinit();
|
defer walker.deinit();
|
||||||
|
|
||||||
|
const stdout = std.io.getStdOut().writer();
|
||||||
while (try walker.next()) |e| {
|
while (try walker.next()) |e| {
|
||||||
switch (e.kind) {
|
switch (e.kind) {
|
||||||
.Directory => {
|
.Directory => {
|
||||||
const path = try std.mem.concat(
|
stdout.print(
|
||||||
|
"Writing Directory\t\x1b[34m{s}/\x1b[0m\n",
|
||||||
|
.{e.path},
|
||||||
|
) catch {};
|
||||||
|
const path = try std.mem.concatWithSentinel(
|
||||||
std.heap.c_allocator,
|
std.heap.c_allocator,
|
||||||
u8,
|
u8,
|
||||||
&[_][]const u8{ "minecraft/", e.path, "/\x00" },
|
&[_][]const u8{ "minecraft/", e.path },
|
||||||
|
0,
|
||||||
);
|
);
|
||||||
defer std.heap.c_allocator.free(path);
|
defer std.heap.c_allocator.free(path);
|
||||||
try archiveCreateDir(zip.?, entry.?, path.ptr);
|
try archiveCreateDir(zip.?, entry.?, path.ptr);
|
||||||
},
|
},
|
||||||
.File => {
|
.File => {
|
||||||
|
stdout.print("Writing File\t\t\x1b[34m{s}\x1b[0m\n", .{e.path}) catch {};
|
||||||
const path = try std.mem.concatWithSentinel(
|
const path = try std.mem.concatWithSentinel(
|
||||||
std.heap.c_allocator,
|
std.heap.c_allocator,
|
||||||
u8,
|
u8,
|
||||||
|
@ -71,7 +78,7 @@ pub fn main() !void {
|
||||||
zip.?,
|
zip.?,
|
||||||
entry.?,
|
entry.?,
|
||||||
&buf,
|
&buf,
|
||||||
path,
|
path.ptr,
|
||||||
file,
|
file,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -81,11 +88,10 @@ pub fn main() !void {
|
||||||
|
|
||||||
try installMmcPackJson(zip.?, entry.?);
|
try installMmcPackJson(zip.?, entry.?);
|
||||||
|
|
||||||
const instance_cfg_data = "InstanceType=OneSix";
|
|
||||||
c.archive_entry_set_pathname(entry, "instance.cfg");
|
c.archive_entry_set_pathname(entry, "instance.cfg");
|
||||||
c.archive_entry_set_size(entry, instance_cfg_data.len);
|
c.archive_entry_set_size(entry, settings.instance_cfg_data.len);
|
||||||
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
|
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
|
||||||
try writer.writeAll(instance_cfg_data);
|
try writer.writeAll(settings.instance_cfg_data);
|
||||||
|
|
||||||
var mods_arena = std.heap.ArenaAllocator.init(std.heap.c_allocator);
|
var mods_arena = std.heap.ArenaAllocator.init(std.heap.c_allocator);
|
||||||
defer mods_arena.deinit();
|
defer mods_arena.deinit();
|
||||||
|
@ -132,11 +138,8 @@ fn archiveFile(
|
||||||
try handleArchiveErr(c.archive_write_header(archive, entry), archive);
|
try handleArchiveErr(c.archive_write_header(archive, entry), archive);
|
||||||
|
|
||||||
const writer = ArchiveWriter{ .context = archive };
|
const writer = ArchiveWriter{ .context = archive };
|
||||||
var read = try file.read(buf);
|
var fifo = std.fifo.LinearFifo(u8, .Slice).init(buf);
|
||||||
while (read != 0) {
|
try fifo.pump(file.reader(), writer);
|
||||||
try writer.writeAll(buf[0..read]);
|
|
||||||
read = try file.read(buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// `name` must end with '/'!
|
/// `name` must end with '/'!
|
||||||
|
@ -271,6 +274,7 @@ const CurlInfo = struct {
|
||||||
filename: []const u8,
|
filename: []const u8,
|
||||||
index: usize,
|
index: usize,
|
||||||
total: usize,
|
total: usize,
|
||||||
|
mod_number_width: usize,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn curlInfoCallback(
|
fn curlInfoCallback(
|
||||||
|
@ -283,12 +287,13 @@ fn curlInfoCallback(
|
||||||
_ = ultotal;
|
_ = ultotal;
|
||||||
_ = ulnow;
|
_ = ulnow;
|
||||||
std.io.getStdOut().writer().print(
|
std.io.getStdOut().writer().print(
|
||||||
"\r\x1b[34m[{d}/{d}] \x1b[97m{s} \x1b[32m{}%",
|
"\r\x1b[34m[{d:[4]}/{d}] \x1b[97m{s} \x1b[32m{}%",
|
||||||
.{
|
.{
|
||||||
info.index,
|
info.index,
|
||||||
info.total,
|
info.total,
|
||||||
info.filename,
|
info.filename,
|
||||||
if (dltotal != 0) @divTrunc(dlnow * 100, dltotal) else 0,
|
if (dltotal != 0) @divTrunc(dlnow * 100, dltotal) else 0,
|
||||||
|
info.mod_number_width,
|
||||||
},
|
},
|
||||||
) catch {};
|
) catch {};
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -307,16 +312,18 @@ fn downloadMods(
|
||||||
try handleCurlErr(c.curl_easy_setopt(
|
try handleCurlErr(c.curl_easy_setopt(
|
||||||
curl,
|
curl,
|
||||||
c.CURLOPT_WRITEFUNCTION,
|
c.CURLOPT_WRITEFUNCTION,
|
||||||
curlWriteCallback,
|
&curlWriteCallback,
|
||||||
));
|
));
|
||||||
try handleCurlErr(c.curl_easy_setopt(
|
try handleCurlErr(c.curl_easy_setopt(
|
||||||
curl,
|
curl,
|
||||||
c.CURLOPT_XFERINFOFUNCTION,
|
c.CURLOPT_XFERINFOFUNCTION,
|
||||||
curlInfoCallback,
|
&curlInfoCallback,
|
||||||
));
|
));
|
||||||
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_NOPROGRESS, @as(c_long, 0)));
|
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_NOPROGRESS, @as(c_long, 0)));
|
||||||
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_FOLLOWLOCATION, @as(c_long, 1)));
|
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_FOLLOWLOCATION, @as(c_long, 1)));
|
||||||
|
|
||||||
|
const mod_number_width = std.math.log10(mods.len) + 1;
|
||||||
|
|
||||||
const writer = ArchiveWriter{ .context = zip };
|
const writer = ArchiveWriter{ .context = zip };
|
||||||
var mod_buf = std.ArrayList(u8).init(std.heap.c_allocator);
|
var mod_buf = std.ArrayList(u8).init(std.heap.c_allocator);
|
||||||
defer mod_buf.deinit();
|
defer mod_buf.deinit();
|
||||||
|
@ -324,6 +331,7 @@ fn downloadMods(
|
||||||
.filename = "",
|
.filename = "",
|
||||||
.index = 0,
|
.index = 0,
|
||||||
.total = mods.len,
|
.total = mods.len,
|
||||||
|
.mod_number_width = mod_number_width,
|
||||||
};
|
};
|
||||||
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_XFERINFODATA, &info));
|
try handleCurlErr(c.curl_easy_setopt(curl, c.CURLOPT_XFERINFODATA, &info));
|
||||||
// hide cursor
|
// hide cursor
|
||||||
|
@ -371,13 +379,13 @@ fn downloadMods(
|
||||||
try handleCurlErr(c.curl_easy_setopt(
|
try handleCurlErr(c.curl_easy_setopt(
|
||||||
curl,
|
curl,
|
||||||
c.CURLOPT_URL,
|
c.CURLOPT_URL,
|
||||||
@ptrCast([*c]const u8, mod_cstr),
|
mod_cstr.ptr,
|
||||||
));
|
));
|
||||||
try handleCurlErr(c.curl_easy_perform(curl));
|
try handleCurlErr(c.curl_easy_perform(curl));
|
||||||
|
|
||||||
std.io.getStdOut().writer().print(
|
std.io.getStdOut().writer().print(
|
||||||
"\r\x1b[34m[{d}/{d}] \x1b[97m{s} \x1b[31mZipping...",
|
"\r\x1b[34m[{d:[3]}/{d}] \x1b[97m{s} \x1b[31mZipping...",
|
||||||
.{ info.index, info.total, info.filename },
|
.{ info.index, info.total, info.filename, mod_number_width },
|
||||||
) catch {};
|
) catch {};
|
||||||
|
|
||||||
var archive_path = try std.mem.concatWithSentinel(
|
var archive_path = try std.mem.concatWithSentinel(
|
||||||
|
@ -393,8 +401,8 @@ fn downloadMods(
|
||||||
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
|
try handleArchiveErr(c.archive_write_header(zip, entry), zip);
|
||||||
try writer.writeAll(mod_buf.items);
|
try writer.writeAll(mod_buf.items);
|
||||||
std.io.getStdOut().writer().print(
|
std.io.getStdOut().writer().print(
|
||||||
"\x1b[2K\r\x1b[34m[{d}/{d}] \x1b[97m{s}\n",
|
"\x1b[2K\r\x1b[34m[{d:[3]}/{d}] \x1b[97m{s}\n",
|
||||||
.{ info.index, info.total, info.filename },
|
.{ info.index, info.total, info.filename, mod_number_width },
|
||||||
) catch {};
|
) catch {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
10
mods.txt
10
mods.txt
|
@ -25,11 +25,12 @@ https://cdn.modrinth.com/data/GUwDZ4ZU/versions/2.2.4+quilt/portal_cubed-2.2.4.j
|
||||||
https://cdn.modrinth.com/data/6AQIaxuO/versions/fabric-4.11.0/wthit-fabric-4.11.0.jar
|
https://cdn.modrinth.com/data/6AQIaxuO/versions/fabric-4.11.0/wthit-fabric-4.11.0.jar
|
||||||
https://cdn.modrinth.com/data/ftdbN0KK/versions/fabric-0.1.2/badpackets-fabric-0.1.2.jar
|
https://cdn.modrinth.com/data/ftdbN0KK/versions/fabric-0.1.2/badpackets-fabric-0.1.2.jar
|
||||||
https://cdn.modrinth.com/data/KZO4S4DO/versions/3.0.0-alpha-fabric/Powah-3.0.0-alpha.jar
|
https://cdn.modrinth.com/data/KZO4S4DO/versions/3.0.0-alpha-fabric/Powah-3.0.0-alpha.jar
|
||||||
https://cdn.modrinth.com/data/lhGA9TYQ/versions/4.5.74+fabric/architectury-4.5.74-fabric.jar
|
https://mediafiles.forgecdn.net/files/3893/734/architectury-4.6.77-fabric.jar
|
||||||
https://cdn.modrinth.com/data/WuFYdGVB/versions/2.0.10+fabric/flyingfluxery-3.0.10.jar
|
https://cdn.modrinth.com/data/WuFYdGVB/versions/2.0.10+fabric/flyingfluxery-3.0.10.jar
|
||||||
https://cdn.modrinth.com/data/OrJTMhHF/versions/mc1.18-4.1/sync-mc1.18.2-4.1.jar
|
https://cdn.modrinth.com/data/OrJTMhHF/versions/mc1.18-4.1/sync-mc1.18.2-4.1.jar
|
||||||
https://cdn.modrinth.com/data/34431T56/versions/1.0.6+1.18.2/wthit-plugins-1.0.6%2B1.18.2.jar
|
https://cdn.modrinth.com/data/34431T56/versions/1.0.6+1.18.2/wthit-plugins-1.0.6%2B1.18.2.jar
|
||||||
https://cdn.modrinth.com/data/yn9u3ypm/versions/2.0.3+1.18.2/graves-2.0.3%2B1.18.2.jar
|
# causes crashes
|
||||||
|
#https://cdn.modrinth.com/data/yn9u3ypm/versions/2.0.3+1.18.2/graves-2.0.3%2B1.18.2.jar
|
||||||
# disabled because crash with create
|
# disabled because crash with create
|
||||||
#https://cdn.modrinth.com/data/IKpsG0nF/versions/1.6.8/paradise-lost-1.6.8%2B1.18.2.jar
|
#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/zgaWtmrV/versions/1.29/arcanus-1.29.jar
|
||||||
|
@ -110,3 +111,8 @@ https://mediafiles.forgecdn.net/files/3599/719/ftb-ranks-fabric-1801.1.6-build.2
|
||||||
https://cdn.modrinth.com/data/yM94ont6/versions/4.1.6+1.18.2-fabric/notenoughcrashes-4.1.6%2B1.18.2-fabric.jar
|
https://cdn.modrinth.com/data/yM94ont6/versions/4.1.6+1.18.2-fabric/notenoughcrashes-4.1.6%2B1.18.2-fabric.jar
|
||||||
https://cdn.modrinth.com/data/u5Ic2U1u/versions/1.10.2+mc1.18.2/mousewheelie-1.10.2%2Bmc1.18.2.jar
|
https://cdn.modrinth.com/data/u5Ic2U1u/versions/1.10.2+mc1.18.2/mousewheelie-1.10.2%2Bmc1.18.2.jar
|
||||||
https://mediafiles.forgecdn.net/files/3793/108/polymorph-fabric-0.0.21-1.18.2.jar
|
https://mediafiles.forgecdn.net/files/3793/108/polymorph-fabric-0.0.21-1.18.2.jar
|
||||||
|
https://cdn.modrinth.com/data/sGmHWmeL/versions/1.1.1+1.17/mixintrace-1.1.1%2B1.17.jar
|
||||||
|
https://cdn.modrinth.com/data/OvlwmUdC/versions/1.9.8-BETA+1.18/kibe-1.9.8-BETA%2B1.18.jar
|
||||||
|
https://mediafiles.forgecdn.net/files/3875/410/BuildingWands_mc1.18.2-2.6_beta-fabric.jar
|
||||||
|
https://git.tilera.org/api/packages/tilera/generic/palettefix/1.0.0/palettefix-1.0.0.jar
|
||||||
|
https://cdn.modrinth.com/data/PTGd6dWp/versions/1.4.2+1.18.2/mostructures-1.4.2%2B1.18.2.jar
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
"sponglob": "kubejs:emotes/sponglob.png",
|
"sponglob": "kubejs:emotes/sponglob.png",
|
||||||
"surstroemming": "kubejs:emotes/surstroemming.png",
|
"surstroemming": "kubejs:emotes/surstroemming.png",
|
||||||
"tilera": "kubejs:emotes/tilera.png",
|
"tilera": "kubejs:emotes/tilera.png",
|
||||||
"waaas": "kubejs:emotes/waaas.png"
|
"waaas": "kubejs:emotes/waaas.png",
|
||||||
|
"leder": "kubejs:emotes/leder.png",
|
||||||
|
"austri3Fix": "kubejs:emotes/austri3fix.png"
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
overrides/kubejs/assets/kubejs/emotes/austri3fix.png
Normal file
BIN
overrides/kubejs/assets/kubejs/emotes/austri3fix.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
overrides/kubejs/assets/kubejs/emotes/leder.png
Normal file
BIN
overrides/kubejs/assets/kubejs/emotes/leder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
104
overrides/kubejs/client_scripts/99-lang.js
Normal file
104
overrides/kubejs/client_scripts/99-lang.js
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
function lang(ev) {
|
||||||
|
const addAll = langs => {
|
||||||
|
for (kv of langs) {
|
||||||
|
ev.addLang(kv[0], kv[1]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Alectrolyzer
|
||||||
|
addAll([
|
||||||
|
[
|
||||||
|
"advancements.modern_industrialization.electrolyzer.description",
|
||||||
|
"Craft an Alectrolyzer",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"block.modern_industrialization.electrolyzer",
|
||||||
|
"Alectrolyzer",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"block.techreborn.industrial_electrolyzer",
|
||||||
|
"Industrial Alectrolyzer",
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Alectronic Circuit
|
||||||
|
addAll([
|
||||||
|
[
|
||||||
|
"advancements.modern_industrialization.electronic_circuit.description",
|
||||||
|
"Craft an Alectronic Circuit",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"item.modern_industrialization.electronic_circuit",
|
||||||
|
"Alectronic Circuit",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"item.modern_industrialization.electronic_circuit_board",
|
||||||
|
"Alectronic Circuit Board",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"item.techreborn.electronic_circuit",
|
||||||
|
"Electronic Circuit",
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Alectrum
|
||||||
|
addAll([
|
||||||
|
// Modern Industrialization
|
||||||
|
["item.modern_industrialization.electrum_cable", "Alectrum Cable"],
|
||||||
|
["item.modern_industrialization.electrum_double_ingot", "Alectrum Double Ingot"],
|
||||||
|
["item.modern_industrialization.electrum_dust", "Alectrum Dust"],
|
||||||
|
["item.modern_industrialization.electrum_fine_wire", "Alectrum Fine Wire"],
|
||||||
|
["item.modern_industrialization.electrum_ingot", "Alectrum Ingot"],
|
||||||
|
["item.modern_industrialization.electrum_nugget", "Alectrum Nugget"],
|
||||||
|
["item.modern_industrialization.electrum_plate", "Alectrum Plate"],
|
||||||
|
["item.modern_industrialization.electrum_tiny_dust", "Alectrum Tiny Dust"],
|
||||||
|
["item.modern_industrialization.electrum_wire", "Alectrum Wire"],
|
||||||
|
|
||||||
|
// Industrial Revolution
|
||||||
|
["block.indrev.electrum_block", "Block of Alectrum"],
|
||||||
|
["item.indrev.electrum_ingot", "Alectrum Ingot"],
|
||||||
|
["item.indrev.electrum_dust", "Alectrum Dust"],
|
||||||
|
["item.indrev.electrum_plate", "Alectrum Plate"],
|
||||||
|
["item.indrev.electrum_gear", "Alectrum Gear"],
|
||||||
|
["item.indrev.electrum_nugget", "Alectrum Nugget"],
|
||||||
|
|
||||||
|
// Tech Reborn
|
||||||
|
["block.techreborn.electrum_storage_block", "Block of Alectrum"],
|
||||||
|
["block.techreborn.electrum_storage_block_stairs", "Alectrum Stairs"],
|
||||||
|
["block.techreborn.electrum_storage_block_slab", "Alectrum Slab"],
|
||||||
|
["block.techreborn.electrum_storage_block_wall", "Alectrum Wall"],
|
||||||
|
["item.techreborn.electrum_dust", "Alectrum Dust"],
|
||||||
|
["item.techreborn.electrum_small_dust", "Small Pile of Alectrum Dust"],
|
||||||
|
["item.techreborn.electrum_ingot", "Alectrum Ingot"],
|
||||||
|
["item.techreborn.electrum_nugget", "Alectrum Nugget"],
|
||||||
|
["item.techreborn.electrum_plate", "Alectrum Plate"],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Alectrolytic Separator
|
||||||
|
addAll([
|
||||||
|
["block.indrev.electrolytic_separator", "Alectrolytic Separator"],
|
||||||
|
["block.indrev.electrolytic_separator_mk1", "Alectrolytic Separator MK1"],
|
||||||
|
["block.indrev.electrolytic_separator_mk2", "Alectrolytic Separator MK2"],
|
||||||
|
["block.indrev.electrolytic_separator_mk3", "Alectrolytic Separator MK3"],
|
||||||
|
["block.indrev.electrolytic_separator_mk4", "Alectrolytic Separator MK4"],
|
||||||
|
["block.indrev.electrolytic_separator_creative", "Alectrolytic Separator Creative"],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Alectric Furnace
|
||||||
|
addAll([
|
||||||
|
// Tech Reborn
|
||||||
|
["block.techreborn.electric_furnace", "Alectric Furnace"],
|
||||||
|
|
||||||
|
// Industrial Revolution
|
||||||
|
["block.indrev.electric_furnace", "Alectric Furnace"],
|
||||||
|
["block.indrev.electric_furnace_mk1", "Alectric Furnace MK1"],
|
||||||
|
["block.indrev.electric_furnace_mk2", "Alectric Furnace MK2"],
|
||||||
|
["block.indrev.electric_furnace_mk3", "Alectric Furnace MK3"],
|
||||||
|
["block.indrev.electric_furnace_mk4", "Alectric Furnace MK4"],
|
||||||
|
["block.indrev.electric_furnace_creative", "Alectric Furnace Creative"],
|
||||||
|
["block.indrev.electric_furnace_factory", "Alectric Furnace Factory"],
|
||||||
|
["block.indrev.electric_furnace_factory_mk4", "Alectric Furnace Factory MK4"],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
onEvent("client.generate_assets", lang);
|
5
overrides/kubejs/client_scripts/99-tooltips.js
Normal file
5
overrides/kubejs/client_scripts/99-tooltips.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
function itemTooltips(ev) {
|
||||||
|
ev.add("ae2:spatial_anchor", Text.of("Broken on Fabric!").red());
|
||||||
|
}
|
||||||
|
|
||||||
|
onEvent("item.tooltip", itemTooltips);
|
1
overrides/kubejs/config/client.properties
Normal file
1
overrides/kubejs/config/client.properties
Normal file
|
@ -0,0 +1 @@
|
||||||
|
title=Anvilcraft 4
|
BIN
overrides/kubejs/config/packicon.png
Normal file
BIN
overrides/kubejs/config/packicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
55
overrides/kubejs/server_scripts/30-tags.js
Normal file
55
overrides/kubejs/server_scripts/30-tags.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
/// IDs of all waystones.
|
||||||
|
const waystones = [
|
||||||
|
"waystones:waystone",
|
||||||
|
"waystones:desert_waystone",
|
||||||
|
"waystones:red_desert_waystone",
|
||||||
|
"waystones:stone_brick_waystone",
|
||||||
|
"waystones:nether_brick_waystone",
|
||||||
|
"waystones:red_nether_brick_waystone",
|
||||||
|
"waystones:end_stone_brick_waystone",
|
||||||
|
"waystones:deepslate_brick_waystone",
|
||||||
|
"waystones:blackstone_brick_waystone",
|
||||||
|
];
|
||||||
|
|
||||||
|
const ores_with_missing_tags = {
|
||||||
|
iron: ["archon:cloud_iron"],
|
||||||
|
quartz: [
|
||||||
|
"byg:blue_nether_quartz_ore",
|
||||||
|
"byg:brimstone_nether_quartz_ore",
|
||||||
|
],
|
||||||
|
lapis: ["betternether:nether_lapis_ore"],
|
||||||
|
redstone: ["betternether:nether_redstone_ore"],
|
||||||
|
};
|
||||||
|
|
||||||
|
function blockTags(ev) {
|
||||||
|
// this allows players to activate other people's waystones
|
||||||
|
ev.add("ftbchunks:interact_whitelist", waystones);
|
||||||
|
|
||||||
|
for (let [tag, ores] of Object.entries(ores_with_missing_tags)) {
|
||||||
|
for (ore of ores) {
|
||||||
|
ev.add(`c:${tag}_ores`, ore);
|
||||||
|
ev.add(`c:ores/${tag}`, ore);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addNuggetTags(ev, material, item) {
|
||||||
|
ev.add(`c:${material}_nuggets`, item);
|
||||||
|
ev.add(`c:nuggets/${material}`, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
function itemTags(ev) {
|
||||||
|
// ConsistencyPlus actually doesn't know how tags work
|
||||||
|
addNuggetTags(ev, "copper", "consistency_plus:copper_nugget");
|
||||||
|
addNuggetTags(ev, "netherite", "consistency_plus:netherite_nugget");
|
||||||
|
|
||||||
|
for (let [tag, ores] of Object.entries(ores_with_missing_tags)) {
|
||||||
|
for (ore of ores) {
|
||||||
|
ev.add(`c:${tag}_ores`, ore);
|
||||||
|
ev.add(`c:ores/${tag}`, ore);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onEvent("tags.blocks", blockTags);
|
||||||
|
onEvent("tags.items", itemTags);
|
|
@ -1,39 +1,83 @@
|
||||||
function recipes(ev) {
|
function recipes(ev) {
|
||||||
ev.remove({output: "tempad:tempad"});
|
|
||||||
|
|
||||||
// conflicts with copper nuggets
|
// conflicts with copper nuggets
|
||||||
ev.remove({output: "redstonebits:copper_button"});
|
ev.remove({output: "redstonebits:copper_button"});
|
||||||
|
|
||||||
|
const removeBrokenGrinderRecipe = metal => {
|
||||||
|
// This recipe allows to turn ingots back into raw ores,
|
||||||
|
// allowing infinite duplication.
|
||||||
|
ev.remove({
|
||||||
|
type: "techreborn:industrial_grinder",
|
||||||
|
input: `#c:${metal}_ingots`,
|
||||||
|
output: `#c:raw_${metal}_ores`
|
||||||
|
});
|
||||||
|
};
|
||||||
|
removeBrokenGrinderRecipe("copper");
|
||||||
|
removeBrokenGrinderRecipe("gold");
|
||||||
|
removeBrokenGrinderRecipe("iridium");
|
||||||
|
removeBrokenGrinderRecipe("iron");
|
||||||
|
removeBrokenGrinderRecipe("lead");
|
||||||
|
removeBrokenGrinderRecipe("silver");
|
||||||
|
removeBrokenGrinderRecipe("tin");
|
||||||
|
removeBrokenGrinderRecipe("tungsten");
|
||||||
|
removeBrokenGrinderRecipe("zinc");
|
||||||
|
|
||||||
|
// this recipe makes alectrum out of copper. wtf.
|
||||||
|
ev.remove({
|
||||||
|
type: "create:mixing",
|
||||||
|
output: "techreborn:electrum_ingot",
|
||||||
|
});
|
||||||
|
ev.custom({
|
||||||
|
type: "create:mixing",
|
||||||
|
ingredients: [
|
||||||
|
Ingredient.of("#c:silver_ingots").toJson(),
|
||||||
|
Ingredient.of("#c:gold_ingots").toJson(),
|
||||||
|
],
|
||||||
|
results: [
|
||||||
|
Item.of("techreborn:electrum_ingot", 2).toResultJson(),
|
||||||
|
],
|
||||||
|
heatRequirement: "heated",
|
||||||
|
});
|
||||||
|
|
||||||
ev.shaped("redstonebits:copper_button", [
|
ev.shaped("redstonebits:copper_button", [
|
||||||
"CC",
|
"CC",
|
||||||
"CC"
|
"CC",
|
||||||
], {
|
], {
|
||||||
C: "#c:copper_ingots"
|
C: "#c:copper_ingots",
|
||||||
});
|
});
|
||||||
|
|
||||||
ev.shaped("tempad:tempad", [
|
ev.remove({output: "tempad:tempad"});
|
||||||
"GGG",
|
ev.shaped("tempad:tempad", [
|
||||||
"PCD",
|
"GGG",
|
||||||
"GGG"
|
"PCD",
|
||||||
], {
|
"GGG",
|
||||||
G: "#c:gold_ingots",
|
], {
|
||||||
P: "modern_industrialization:processing_unit",
|
G: "#c:gold_ingots",
|
||||||
C: "powah:ender_core",
|
P: "techreborn:data_storage_chip",
|
||||||
D: "techreborn:digital_display"
|
C: "powah:ender_core",
|
||||||
});
|
D: "techreborn:digital_display",
|
||||||
|
});
|
||||||
ev.shaped("tempad:he_who_remains_tempad", [
|
ev.shaped("tempad:he_who_remains_tempad", [
|
||||||
"UTD",
|
"ITF",
|
||||||
"NSN",
|
"NSN",
|
||||||
"DRU"
|
"FRI",
|
||||||
], {
|
], {
|
||||||
U: "dimdoors:unravelled_block",
|
|
||||||
N: "#c:netherite_ingots",
|
N: "#c:netherite_ingots",
|
||||||
D: "minecraft:deepslate",
|
T: "tempad:tempad",
|
||||||
T: "tempad:tempad",
|
R: "blockus:legacy_nether_reactor_core",
|
||||||
R: "blockus:legacy_nether_reactor_core",
|
S: "minecraft:nether_star",
|
||||||
S: "minecraft:nether_star"
|
I: "dimdoors:infrangible_fiber",
|
||||||
});
|
F: "dimdoors:frayed_filament",
|
||||||
|
});
|
||||||
|
|
||||||
|
// broken on fabric
|
||||||
|
ev.remove({
|
||||||
|
output: "ae2:spatial_anchor",
|
||||||
|
});
|
||||||
|
|
||||||
|
// duplicate
|
||||||
|
ev.remove({
|
||||||
|
id: "techreborn:grinder/nether_lapis_ore",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onEvent("recipes", recipes);
|
onEvent("recipes", recipes);
|
||||||
|
|
37
overrides/kubejs/server_scripts/99-rtp.js
Normal file
37
overrides/kubejs/server_scripts/99-rtp.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
const diameter = 1000000;
|
||||||
|
const y = 200;
|
||||||
|
|
||||||
|
function getRandomCoord() {
|
||||||
|
var n = Math.floor(Math.random() * diameter);
|
||||||
|
if (Math.round(Math.random())) {
|
||||||
|
n *= -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRtpExecute(ctx) {
|
||||||
|
const player = ctx.source.getPlayerOrException().asKJS();
|
||||||
|
const x = getRandomCoord();
|
||||||
|
const z = getRandomCoord();
|
||||||
|
|
||||||
|
// add slow falling so the player doesn't immediately die
|
||||||
|
player.potionEffects.add(
|
||||||
|
"minecraft:slow_falling",
|
||||||
|
15 * 20, // 15 seconds
|
||||||
|
);
|
||||||
|
|
||||||
|
// teleport
|
||||||
|
player.setPositionAndRotation(x, y, z, 0, 0);
|
||||||
|
|
||||||
|
// 1 = success
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function commandRegistry(ev) {
|
||||||
|
const { commands: Commands } = ev;
|
||||||
|
|
||||||
|
ev.register(Commands.literal("rtp").executes(onRtpExecute));
|
||||||
|
}
|
||||||
|
|
||||||
|
onEvent("command.registry", commandRegistry);
|
|
@ -11,16 +11,16 @@ discrete_mouse_scroll:false
|
||||||
invertYMouse:false
|
invertYMouse:false
|
||||||
realmsNotifications:true
|
realmsNotifications:true
|
||||||
reducedDebugInfo:false
|
reducedDebugInfo:false
|
||||||
showSubtitles:false
|
showSubtitles:true
|
||||||
touchscreen:false
|
touchscreen:false
|
||||||
fullscreen:false
|
fullscreen:true
|
||||||
bobView:true
|
bobView:true
|
||||||
toggleCrouch:false
|
toggleCrouch:false
|
||||||
toggleSprint:false
|
toggleSprint:false
|
||||||
darkMojangStudiosBackground:false
|
darkMojangStudiosBackground:false
|
||||||
hideLightningFlashes:false
|
hideLightningFlashes:false
|
||||||
mouseSensitivity:0.5
|
mouseSensitivity:0.5
|
||||||
fov:0.0
|
fov:0.5
|
||||||
screenEffectScale:1.0
|
screenEffectScale:1.0
|
||||||
fovEffectScale:1.0
|
fovEffectScale:1.0
|
||||||
gamma:1.0
|
gamma:1.0
|
||||||
|
@ -29,15 +29,15 @@ simulationDistance:12
|
||||||
entityDistanceScaling:1.0
|
entityDistanceScaling:1.0
|
||||||
guiScale:2
|
guiScale:2
|
||||||
particles:0
|
particles:0
|
||||||
maxFps:120
|
maxFps:260
|
||||||
difficulty:2
|
difficulty:2
|
||||||
graphicsMode:2
|
graphicsMode:2
|
||||||
ao:2
|
ao:2
|
||||||
prioritizeChunkUpdates:0
|
prioritizeChunkUpdates:0
|
||||||
biomeBlendRadius:2
|
biomeBlendRadius:2
|
||||||
renderClouds:true
|
renderClouds:true
|
||||||
resourcePacks:["Fabric Mods","Theinar Language"]
|
resourcePacks:["vanilla","Fabric Mods","Theinar Language","continuity/default","continuity/glass_pane_culling_fix","computercraft/overhaul"]
|
||||||
incompatibleResourcePacks:[]
|
incompatibleResourcePacks:["computercraft/overhaul","file/Unity-Modded","file/Unity-Extras"]
|
||||||
lastServer:
|
lastServer:
|
||||||
lang:en_us
|
lang:en_us
|
||||||
soundDevice:
|
soundDevice:
|
||||||
|
@ -47,7 +47,7 @@ chatLineSpacing:0.0
|
||||||
textBackgroundOpacity:0.5
|
textBackgroundOpacity:0.5
|
||||||
backgroundForChatOnly:true
|
backgroundForChatOnly:true
|
||||||
hideServerAddress:false
|
hideServerAddress:false
|
||||||
advancedItemTooltips:false
|
advancedItemTooltips:true
|
||||||
pauseOnLostFocus:true
|
pauseOnLostFocus:true
|
||||||
overrideWidth:0
|
overrideWidth:0
|
||||||
overrideHeight:0
|
overrideHeight:0
|
||||||
|
@ -62,14 +62,14 @@ useNativeTransport:true
|
||||||
mainHand:right
|
mainHand:right
|
||||||
attackIndicator:1
|
attackIndicator:1
|
||||||
narrator:0
|
narrator:0
|
||||||
tutorialStep:movement
|
tutorialStep:none
|
||||||
mouseWheelSensitivity:1.0
|
mouseWheelSensitivity:1.0
|
||||||
rawMouseInput:true
|
rawMouseInput:true
|
||||||
glDebugVerbosity:1
|
glDebugVerbosity:1
|
||||||
skipMultiplayerWarning:false
|
skipMultiplayerWarning:true
|
||||||
skipRealms32bitWarning:false
|
skipRealms32bitWarning:false
|
||||||
hideMatchedNames:true
|
hideMatchedNames:true
|
||||||
joinedFirstServer:false
|
joinedFirstServer:true
|
||||||
hideBundleTutorial:false
|
hideBundleTutorial:false
|
||||||
syncChunkWrites:false
|
syncChunkWrites:false
|
||||||
showAutosaveIndicator:true
|
showAutosaveIndicator:true
|
||||||
|
@ -108,6 +108,10 @@ key_key.hotbar.6:key.keyboard.6
|
||||||
key_key.hotbar.7:key.keyboard.7
|
key_key.hotbar.7:key.keyboard.7
|
||||||
key_key.hotbar.8:key.keyboard.8
|
key_key.hotbar.8:key.keyboard.8
|
||||||
key_key.hotbar.9:key.keyboard.9
|
key_key.hotbar.9:key.keyboard.9
|
||||||
|
key_key.ellemes_container_lib.config:key.keyboard.g
|
||||||
|
key_key.ftbchunks.map:key.keyboard.m
|
||||||
|
key_key.ftbchunks.minimap.zoomIn:key.keyboard.equal
|
||||||
|
key_key.ftbchunks.minimap.zoomOut:key.keyboard.minus
|
||||||
key_key.iron-jetpacks.engine:key.keyboard.v
|
key_key.iron-jetpacks.engine:key.keyboard.v
|
||||||
key_key.iron-jetpacks.hover:key.keyboard.g
|
key_key.iron-jetpacks.hover:key.keyboard.g
|
||||||
key_key.iron-jetpacks.descend:key.keyboard.unknown
|
key_key.iron-jetpacks.descend:key.keyboard.unknown
|
||||||
|
@ -118,24 +122,55 @@ key_key.ae2.wireless_pattern_encoding_terminal:key.keyboard.unknown
|
||||||
key_key.ae2.wireless_pattern_access_terminal:key.keyboard.unknown
|
key_key.ae2.wireless_pattern_access_terminal:key.keyboard.unknown
|
||||||
key_key.ae2.ae2wtlib_restock:key.keyboard.unknown
|
key_key.ae2.ae2wtlib_restock:key.keyboard.unknown
|
||||||
key_key.ae2.ae2wtlib_magnet:key.keyboard.unknown
|
key_key.ae2.ae2wtlib_magnet:key.keyboard.unknown
|
||||||
|
key_key.agape_space.vehicle_menu:key.keyboard.b
|
||||||
|
key_key.ftbultimine:key.keyboard.r
|
||||||
|
key_key.bewitchment.transformation_ability:key.keyboard.unknown
|
||||||
key_key.botania_corporea_request:key.keyboard.c
|
key_key.botania_corporea_request:key.keyboard.c
|
||||||
key_create.keyinfo.toolmenu:key.keyboard.left.alt
|
key_create.keyinfo.toolmenu:key.keyboard.left.alt
|
||||||
key_create.keyinfo.toolbelt:key.keyboard.left.alt
|
key_create.keyinfo.toolbelt:key.keyboard.left.alt
|
||||||
|
key_key.dankstorage.construction:key.keyboard.i
|
||||||
|
key_key.dankstorage.lock_slot:key.keyboard.unknown
|
||||||
|
key_key.dankstorage.pickup_mode:key.keyboard.o
|
||||||
key_key.dml-refabricated.teleport:key.keyboard.v
|
key_key.dml-refabricated.teleport:key.keyboard.v
|
||||||
key_key.dml-refabricated.soul_vision:key.keyboard.b
|
key_key.dml-refabricated.soul_vision:key.keyboard.b
|
||||||
key_key.indrev.modular:key.keyboard.k
|
key_key.indrev.modular:key.keyboard.k
|
||||||
key_key.indrev.gamer_axe_toggle:key.keyboard.g
|
key_key.indrev.gamer_axe_toggle:key.keyboard.g
|
||||||
key_mininggadgets.text.open_gui:key.keyboard.unknown
|
key_mininggadgets.text.open_gui:key.keyboard.unknown
|
||||||
key_key.modern_industrialization.activate:key.keyboard.v
|
key_key.modern_industrialization.activate:key.keyboard.v
|
||||||
|
key_key.mousewheelie.open_config_screen:key.keyboard.unknown
|
||||||
|
key_key.mousewheelie.sort_inventory:key.mouse.middle
|
||||||
|
key_key.mousewheelie.scroll_up:key.amecsapi.mouse.scroll.up
|
||||||
|
key_key.mousewheelie.scroll_down:key.amecsapi.mouse.scroll.down
|
||||||
|
key_key.mousewheelie.pick_tool:key.keyboard.unknown
|
||||||
key_key.mtmechs.primary:key.keyboard.v
|
key_key.mtmechs.primary:key.keyboard.v
|
||||||
key_key.mtr.lift_menu:key.keyboard.z
|
key_key.small_artifacts.ender_sack:key.keyboard.x
|
||||||
|
key_key.travelersbackpack.inventory:key.keyboard.b
|
||||||
|
key_key.travelersbackpack.toggle_tank:key.keyboard.n
|
||||||
|
key_key.travelersbackpack.cycle_tool:key.keyboard.z
|
||||||
|
key_key.wands.wand_mode:key.keyboard.v
|
||||||
|
key_key.wands.wand_action:key.keyboard.h
|
||||||
|
key_key.wands.wand_menu:key.keyboard.y
|
||||||
|
key_key.wands.wand_orientation:key.keyboard.x
|
||||||
|
key_key.wands.wand_invert:key.keyboard.i
|
||||||
|
key_key.wands.wand_fill_circle:key.keyboard.k
|
||||||
|
key_key.wands.wand_undo:key.keyboard.u
|
||||||
|
key_key.wands.palette_menu:key.keyboard.j
|
||||||
|
key_key.wands.wand_palette_mode:key.keyboard.r
|
||||||
|
key_key.wands.wand_conf:key.keyboard.unknown
|
||||||
|
key_key.wands.m_inc:key.keyboard.right
|
||||||
|
key_key.wands.m_dec:key.keyboard.left
|
||||||
|
key_key.wands.n_inc:key.keyboard.up
|
||||||
|
key_key.wands.n_dec:key.keyboard.down
|
||||||
|
key_key.wands.toggle_stair_slab:key.keyboard.period
|
||||||
|
key_key.wands.area_diagonal_spread:key.keyboard.comma
|
||||||
|
key_key.wands.inc_sel_block:key.keyboard.z
|
||||||
key_key.waila.config:key.keyboard.keypad.0
|
key_key.waila.config:key.keyboard.keypad.0
|
||||||
key_key.waila.show_overlay:key.keyboard.keypad.1
|
key_key.waila.show_overlay:key.keyboard.keypad.1
|
||||||
key_key.waila.toggle_liquid:key.keyboard.keypad.2
|
key_key.waila.toggle_liquid:key.keyboard.keypad.2
|
||||||
key_key.waila.show_recipe_input:key.keyboard.keypad.3
|
key_key.waila.show_recipe_input:key.keyboard.keypad.3
|
||||||
key_key.waila.show_recipe_output:key.keyboard.keypad.4
|
key_key.waila.show_recipe_output:key.keyboard.keypad.4
|
||||||
key_key.wthit-plugins.show_author:key.keyboard.left.shift
|
key_key.wthit-plugins.show_author:key.keyboard.unknown
|
||||||
soundCategory_master:1.0
|
soundCategory_master:0.38245034
|
||||||
soundCategory_music:0.0
|
soundCategory_music:0.0
|
||||||
soundCategory_record:1.0
|
soundCategory_record:1.0
|
||||||
soundCategory_weather:1.0
|
soundCategory_weather:1.0
|
||||||
|
|
11
settings.zig
11
settings.zig
|
@ -1,8 +1,11 @@
|
||||||
// Version number used for the archive name
|
/// Version number used for the archive name
|
||||||
pub const version = "1.2.0";
|
pub const version = "1.4.1";
|
||||||
pub const build_dir = "build";
|
pub const build_dir = "build";
|
||||||
pub const minecraft_version = "1.18.2";
|
pub const minecraft_version = "1.18.2";
|
||||||
pub const fabric_loader_version = "0.14.8";
|
pub const fabric_loader_version = "0.14.8";
|
||||||
// zip compression level. 9 is max. ask libarchive why this is a string.
|
/// the data for the `instance.cfg` file
|
||||||
|
pub const instance_cfg_data =
|
||||||
|
\\InstanceType=OneSix
|
||||||
|
;
|
||||||
|
/// zip compression level. 9 is max. ask libarchive why this is a string.
|
||||||
pub const compression_level = "9";
|
pub const compression_level = "9";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue