addCredits API

This commit is contained in:
ZXMushroom63 2025-03-15 19:03:59 +08:00
parent 711263afec
commit b0c8c09a60
3 changed files with 74 additions and 10 deletions

View File

@ -100,6 +100,8 @@ The ModAPI object has the following methods:
- `promisify(asyncJavaMethod: Method | Constructor) : PromisifiedJavaRunner`
- Allows running java methods that are @Async/@Async dependent.
- More [PromisifyDocumentation](promisify.md)
- `addCredit(category: String, contributor: String, contents: String)`
- Lets you easily add credits to Eaglercraft's credits.txt
## Handling strings, numbers and booleans to and from java.

View File

@ -1,4 +1,4 @@
globalThis.ModAPIVersion = "v2.7.1";
globalThis.ModAPIVersion = "v2.7.2";
globalThis.doEaglerforge = true;
document.querySelector("title").innerText = `EaglerForge Injector ${ModAPIVersion}`;
document.querySelector("h1").innerText = `EaglerForge Injector ${ModAPIVersion}`;

View File

@ -3,6 +3,7 @@ globalThis.modapi_postinit = "(" + (() => {
//This script cannot contain backticks, escape characters, or backslashes in order to inject into the dedicated server code.
var startedModLoader = false;
var BACKSLASH = String.fromCharCode(92);
var LF = String.fromCharCode(10);
var STRIP_COMMENTS = new RegExp(atob("KChcL1wvLiokKXwoXC9cKltcc1xTXSo/XCpcLykp"), "gm");
var ARGUMENT_NAMES = new RegExp(atob("KFteXHMsXSsp"), "g");
@ -24,12 +25,57 @@ globalThis.modapi_postinit = "(" + (() => {
ModAPI.meta._developerMap = {};
ModAPI.meta._iconMap = {};
ModAPI.meta._versionMap = {};
const credits = {};
ModAPI.addCredit = function (category, name, contents) {
if (!credits[category]) {
credits[category] = [];
}
credits[category].push(LF + LF + " " + name + ": " + LF + LF + contents);
}
function getCreditsString() {
return Object.entries(credits).map((entry) => {
return " "+entry[0] + LF + " " + (new Array(entry[0].length)).fill("~").join("") + entry[1].join("") + LF + LF + LF;
}).join("");
}
ModAPI.array = {};
ModAPI.version = "__modapi_version_code__";
ModAPI.flavour = "injector";
ModAPI.GNU = "terry pratchett";
ModAPI.credits = ["ZXMushroom63", "radmanplays", "Murturtle", "OtterCodes101", "TheIdiotPlays", "OeildeLynx31", "Stpv22"];
ModAPI.addCredit("EaglerForge Devs", "ZXMushroom63",
" - Built the original PluginAPI for EaglerReborn" + LF +
" - Built EaglerForgeInjector as a procedural replacement for EaglerForge clients" + LF +
" - Made the mod loader and gui loader" + LF +
" - Added singleplayer support" + LF +
" - Made the AsyncSink corelib");
ModAPI.addCredit("EaglerForge Devs", "radmanplays",
" - Ported and maintained EaglerReborn's PluginAPI to modern version of eaglercrafts (u22+)" + LF +
" - Rebranded PluginAPI to ModAPI" + LF +
" - Added various new features to ModAPI" + LF +
" - Made the worldedit mod + a few other mods");
ModAPI.addCredit("EaglerForge Devs", "LeahOnBrainrot / OtterCodes101 / OtterDev",
" - Created EaglerReborn" + LF +
" - EaglerForge developer" + LF +
" - Helped update the client to newer versions" + LF +
" - Made signed clients work" + LF +
" - Maintainer nowadays" + LF +
" - Various bug fixes for EaglerForgeInjector");
ModAPI.addCredit("EaglerForge Devs", "Murturtle",
" - Added the render event to EaglerForgeInjector" + LF +
" - Added pi optimiser to the injector (now removed)");
ModAPI.addCredit("EaglerForge Devs", "TheIdiotPlays",
" - Made the mod manager GUI");
ModAPI.addCredit("EaglerForge Devs", "OeildeLynx31",
" - Work on the worldedit mod");
ModAPI.addCredit("EaglerForge Devs", "Stpv22",
" - Made the mod gui open before the client starts");
function limitSize(x, n) {
if (x.length > n) {
@ -821,6 +867,22 @@ globalThis.modapi_postinit = "(" + (() => {
return originalUpdate.apply(this, args);
};
const getCreditsName = ModAPI.util.getMethodFromPackage("net.lax1dude.eaglercraft.v1_8.EagRuntime", "getResourceString");
const originalGetCredits = ModAPI.hooks.methods[getCreditsName];
ModAPI.hooks.methods[getCreditsName] = function ($path) {
if (!$path) {
return originalGetCredits.apply(this, [$path]);
}
if (ModAPI.util.ustr($path).toLowerCase().endsWith("credits.txt")) {
var out = originalGetCredits.apply(this, [$path]);
out = ModAPI.util.ustr(out);
out = getCreditsString() + out;
out = ModAPI.util.str(out);
return out;
}
return originalGetCredits.apply(this, [$path]);
};
const initMethodName = ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "startGame");
const originalInit = ModAPI.hooks.methods[initMethodName];
ModAPI.hooks.methods[initMethodName] = function (...args) {