diff --git a/core/minify.js b/core/minify.js
index de72e8d..89912ae 100644
--- a/core/minify.js
+++ b/core/minify.js
@@ -24,9 +24,8 @@ const MINIFY = function () {
};
};
async function minify(input, parser, EFIConfig) {
- if (globalThis.process) {
- var _status = console.log;
- }
+ var _status = globalThis._status || console.log;
+
let isHtml = true;
let inputHtml = input;
diff --git a/examplemods/faster_minecarts.js b/examplemods/faster_minecarts.js
new file mode 100644
index 0000000..1e2412c
--- /dev/null
+++ b/examplemods/faster_minecarts.js
@@ -0,0 +1,18 @@
+(function MinecartSpeedMod() {
+ ModAPI.meta.title("Faster Minecarts");
+ ModAPI.meta.description("Faster minecarts! Use /minecart_speed {factor} to edit the minecart's speed. Carts are very prone to being flung off rails.");
+ ModAPI.meta.credits("By ZXMushroom63");
+ ModAPI.meta.version("v1.0");
+
+ ModAPI.dedicatedServer.appendCode(function () {
+ ModAPI.addEventListener("processcommand", (event) => {
+ if (event.command.toLowerCase().startsWith("/minecart_speed")) {
+ var speed = parseFloat(event.command.substring("/minecart_speed ".length)) || 1;
+ var trueSpeed = speed * 0.4;
+ ModAPI.hooks.methods.nmei_EntityMinecart_getMaximumSpeed = () => trueSpeed;
+ event.sender.addChatMessage(ModAPI.reflect.getClassById("net.minecraft.util.ChatComponentText").constructors[0](ModAPI.util.str("Set minecart speed to "+speed)));
+ event.preventDefault = true;
+ }
+ });
+ });
+})();
\ No newline at end of file
diff --git a/examplemods/veinminer.js b/examplemods/veinminer.js
new file mode 100644
index 0000000..408f953
--- /dev/null
+++ b/examplemods/veinminer.js
@@ -0,0 +1,132 @@
+(function TreeChopperMod() {
+ ModAPI.meta.title("Vein Miner");
+ ModAPI.meta.description("Vein-mines trees & ores while crouching. Press the 'config' button for settings.");
+ ModAPI.meta.credits("By ZXMushroom63");
+ ModAPI.meta.version("v1.0");
+ globalThis.VEINMINERCONF = {
+ doLogs: true,
+ doOres: true,
+ doGravel: false,
+ doClay: false,
+ };
+ try {
+ Object.assign(conf, JSON.parse(localStorage.getItem("trc_mod::conf") || "{}"));
+ } catch (error) {
+ //swallow
+ }
+ ModAPI.meta.config(()=>{
+ var conf = document.createElement("div");
+ conf.innerHTML = `
+
Vein Miner Settings [X]
+ Refresh page to apply settings
+
+
+
+
+ `;
+ conf.style = "position: fixed; background-color: white; color: black; width: 100vw; height: 100vh; z-index: 256;top:0;left:0;";
+ conf.__save = ()=>localStorage.setItem("trc_mod::conf", JSON.stringify(VEINMINERCONF));
+ document.body.appendChild(conf);
+ });
+
+ ModAPI.dedicatedServer.appendCode(`globalThis.VEINMINERCONF = ${JSON.stringify(VEINMINERCONF)};`);
+
+ ModAPI.dedicatedServer.appendCode(function () {
+ ModAPI.addEventListener("bootstrap", () => {
+ const targettedBlockIds = [];
+ if (VEINMINERCONF.doLogs) {
+ targettedBlockIds.push("log", "log2");
+ }
+ if (VEINMINERCONF.doOres) {
+ targettedBlockIds.push("coal_ore", "gold_ore", "iron_ore", "lapis_ore", "quartz_ore", "diamond_ore", "emerald_ore", "redstone_ore", "lit_redstone_ore");
+ }
+ if (VEINMINERCONF.doGravel) {
+ targettedBlockIds.push("gravel");
+ }
+ if (VEINMINERCONF.doClay) {
+ targettedBlockIds.push("clay");
+ }
+ console.log(targettedBlockIds);
+ const valid_log_blocks = targettedBlockIds.map(x => ModAPI.blocks[x].getRef());
+
+ function stringifyBlockPos(blockPos) {
+ return blockPos.x + "," + blockPos.y + "," + blockPos.z;
+ }
+ function getNeighbors(blockPos) {
+ return [
+ //direct neighbors
+ blockPos.down(1),
+ blockPos.up(1),
+ blockPos.north(1),
+ blockPos.south(1),
+ blockPos.east(1),
+ blockPos.west(1),
+
+ //edges
+ blockPos.down(1).north(1),
+ blockPos.down(1).south(1),
+ blockPos.down(1).east(1),
+ blockPos.down(1).west(1),
+ blockPos.up(1).north(1),
+ blockPos.up(1).south(1),
+ blockPos.up(1).east(1),
+ blockPos.up(1).west(1),
+ blockPos.north(1).east(1),
+ blockPos.north(1).west(1),
+ blockPos.south(1).east(1),
+ blockPos.south(1).west(1),
+
+ //corners
+ blockPos.down(1).north(1).east(1),
+ blockPos.down(1).north(1).west(1),
+ blockPos.down(1).south(1).east(1),
+ blockPos.down(1).south(1).west(1),
+ blockPos.up(1).north(1).east(1),
+ blockPos.up(1).north(1).west(1),
+ blockPos.up(1).south(1).east(1),
+ blockPos.up(1).south(1).west(1),
+ ];
+ }
+ async function getBlockGraph(blockPos, getBlockState, targetType) {
+ const closed = [stringifyBlockPos(blockPos)];
+ const logs = [];
+ const open = [...getNeighbors(blockPos)];
+ const maxIters = 120;
+ var i = 0;
+ while (open.length > 0 && i < maxIters) {
+ const target = open.pop();
+
+ closed.push(stringifyBlockPos(target));
+
+ i++;
+ const iBlockState = await getBlockState(target.getRef());
+ if (iBlockState.block.getRef() === targetType) {
+ logs.push(target);
+ open.push(...getNeighbors(target).filter(x => !closed.includes(stringifyBlockPos(x))));
+ }
+ }
+ return logs;
+ }
+
+ valid_log_blocks.forEach(b => {
+ const originalHarvest = b.$harvestBlock;
+ b.$harvestBlock = function ($theWorld, $player, $blockpos, $blockstate, $tileentity) {
+ if ($player.$isSneaking() && !ModAPI.util.isCritical()) {
+ ModAPI.promisify(async () => {
+ var player = ModAPI.util.wrap($player);
+ var world = ModAPI.util.wrap($theWorld);
+ var harvestCall = ModAPI.promisify(player.theItemInWorldManager.tryHarvestBlock);
+
+ const blocks = await getBlockGraph(ModAPI.util.wrap($blockpos), ModAPI.promisify(world.getBlockState), b);
+
+ for (let i = 0; i < blocks.length; i++) {
+ await harvestCall(blocks[i].getRef());
+ }
+ })();
+ }
+ originalHarvest.apply(this, [$theWorld, $player, $blockpos, $blockstate, $tileentity]);
+ }
+ });
+ });
+ });
+})();
\ No newline at end of file
diff --git a/index.html b/index.html
index 06664bd..92fcd2f 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
Where can I download an unobfuscated unsigned Eaglercraft build?
- 1.8: https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds/releases/latest
- 1.12: https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds-1.12/releases/latest
+
+ 1.8:
+
+ https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds/releases/latest
+
+
+
+ 1.12:
+
+ https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds-1.12/releases/latest
+
+
diff --git a/res/EaglerForgeInjector.png b/res/EaglerForgeInjector.png
new file mode 100644
index 0000000..9dd06a5
Binary files /dev/null and b/res/EaglerForgeInjector.png differ