v2.6: automatic texture reloading

This commit is contained in:
ZXMushroom63 2025-01-15 23:08:02 +08:00
parent b92ef4f199
commit 91fef0df25
13 changed files with 35 additions and 25 deletions

View File

@ -183,8 +183,9 @@ When it's loaded, we'll:
var custom_block = BlockRegistrationFunction(); //Get the registered block instance var custom_block = BlockRegistrationFunction(); //Get the registered block instance
ModAPI.addEventListener("lib:asyncsink", async () => { //Add an asyncronous listener to AsyncSink loading. ModAPI.addEventListener("lib:asyncsink", async () => { //Add an asyncronous listener to AsyncSink loading.
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerBlock(custom_block, ModAPI.util.str("custom_block")); //when asyncsink yells at us to register the custom block, register it
renderItem.registerItem(custom_block, ModAPI.util.str("custom_block"));
}); });
AsyncSink.L10N.set("tile.custom_block.name", "My Custom Block"); //Set the name of the block AsyncSink.L10N.set("tile.custom_block.name", "My Custom Block"); //Set the name of the block

View File

@ -92,8 +92,8 @@ Now let's run the `CustomItem` function on the server and the client, and then u
var custom_item = CustomItem(); var custom_item = CustomItem();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerItem(custom_item, ModAPI.util.str("custom_item")); renderItem.registerItem(custom_item, ModAPI.util.str("custom_item"));
}); });
AsyncSink.L10N.set("item.custom_item.name", "Cool Custom Item"); AsyncSink.L10N.set("item.custom_item.name", "Cool Custom Item");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/custom_item.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/custom_item.json", JSON.stringify(

View File

@ -260,4 +260,13 @@ ModAPI.meta.credits("By ZXMushroom63");
}); });
} }
}); });
ModAPI.events.newEvent("lib:asyncsink:registeritems");
const regItemsName = ModAPI.util.getMethodFromPackage("net.minecraft.client.renderer.entity.RenderItem", "registerItems");
const oldRegisterItems = ModAPI.hooks.methods[regItemsName];
ModAPI.hooks.methods[regItemsName] = function (...args) {
debugger;
oldRegisterItems.apply(this, args);
ModAPI.events.callEvent("lib:asyncsink:registeritems", ModAPI.util.wrap(args[0]));
}
})(); })();

View File

@ -91,8 +91,8 @@
var custom_block = BlockRegistrationFunction(); //Get the registered block instance var custom_block = BlockRegistrationFunction(); //Get the registered block instance
ModAPI.addEventListener("lib:asyncsink", async () => { //Add an asyncronous listener to AsyncSink loading. ModAPI.addEventListener("lib:asyncsink", async () => { //Add an asyncronous listener to AsyncSink loading.
ModAPI.addEventListener("custom:asyncsink_reloaded", () => { ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerBlock(custom_block, ModAPI.util.str("custom_block")); renderItem.registerItem(custom_block, ModAPI.util.str("custom_block"));
}); });
AsyncSink.L10N.set("tile.custom_block.name", "My Custom Block"); //Set the name of the block AsyncSink.L10N.set("tile.custom_block.name", "My Custom Block"); //Set the name of the block

View File

@ -63,8 +63,8 @@
var custom_item = CustomItem(); var custom_item = CustomItem();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerItem(custom_item, ModAPI.util.str("custom_item")); renderItem.registerItem(custom_item, ModAPI.util.str("custom_item"));
}); });
AsyncSink.L10N.set("item.custom_item.name", "Cool Custom Item"); AsyncSink.L10N.set("item.custom_item.name", "Cool Custom Item");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/custom_item.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/custom_item.json", JSON.stringify(

View File

@ -42,8 +42,8 @@ function registerSteveClientSide() {
); );
itemClass.staticMethods.registerItemBlock0.method(block_of_steve); itemClass.staticMethods.registerItemBlock0.method(block_of_steve);
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerBlock(block_of_steve, ModAPI.util.str("steve")); renderItem.registerItem(block_of_steve, ModAPI.util.str("steve"));
}); });
AsyncSink.L10N.set("tile.steve.name", "Block Of Steve"); AsyncSink.L10N.set("tile.steve.name", "Block Of Steve");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/steve.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/steve.json", JSON.stringify(

View File

@ -33,8 +33,8 @@ function registerSteveClientSide() {
itemClass.staticMethods.registerItemBlock0.method(block_of_steve); itemClass.staticMethods.registerItemBlock0.method(block_of_steve);
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerBlock(block_of_steve, ModAPI.util.str("steve")); renderItem.registerItem(block_of_steve, ModAPI.util.str("steve"));
}); });
AsyncSink.L10N.set("tile.steve.name", "Block Of Steve"); AsyncSink.L10N.set("tile.steve.name", "Block Of Steve");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/steve.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/steve.json", JSON.stringify(

View File

@ -104,8 +104,8 @@
var pistol_item = PistolItem(); var pistol_item = PistolItem();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerItem(pistol_item, ModAPI.util.str("pistol")); renderItem.registerItem(pistol_item, ModAPI.util.str("pistol"));
}); });
AsyncSink.L10N.set("item.pistol.name", "Pistol"); AsyncSink.L10N.set("item.pistol.name", "Pistol");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/pistol.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/pistol.json", JSON.stringify(

View File

@ -151,8 +151,8 @@
var pistol_item = PistolItem(); var pistol_item = PistolItem();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerItem(pistol_item, ModAPI.util.str("pistol")); renderItem.registerItem(pistol_item, ModAPI.util.str("pistol"));
}); });
AsyncSink.L10N.set("item.pistol.name", "Pistol"); AsyncSink.L10N.set("item.pistol.name", "Pistol");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/pistol.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/pistol.json", JSON.stringify(

View File

@ -86,8 +86,8 @@
ModAPI.dedicatedServer.appendCode(UnluckyBlocks); ModAPI.dedicatedServer.appendCode(UnluckyBlocks);
var block_of_unluckiness = UnluckyBlocks(); var block_of_unluckiness = UnluckyBlocks();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerBlock(block_of_unluckiness, ModAPI.util.str("unluckiness")); renderItem.registerItem(block_of_unluckiness, ModAPI.util.str("unluckiness"));
}); });
AsyncSink.L10N.set("tile.unluckiness.name", "Unlucky Block"); AsyncSink.L10N.set("tile.unluckiness.name", "Unlucky Block");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/unluckiness.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/block/unluckiness.json", JSON.stringify(

View File

@ -41,8 +41,8 @@
var example_item = ExampleItem(); var example_item = ExampleItem();
ModAPI.addEventListener("lib:asyncsink", async () => { ModAPI.addEventListener("lib:asyncsink", async () => {
ModAPI.addEventListener("custom:asyncsink_reloaded", ()=>{ ModAPI.addEventListener("lib:asyncsink:registeritems", (renderItem)=>{
ModAPI.mc.renderItem.registerItem(example_item, ModAPI.util.str("exampleitem")); renderItem.registerItem(example_item, ModAPI.util.str("exampleitem"));
}); });
AsyncSink.L10N.set("item.exampleitem.name", "Example Item"); AsyncSink.L10N.set("item.exampleitem.name", "Example Item");
AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/exampleitem.json", JSON.stringify( AsyncSink.setFile("resourcepacks/AsyncSinkLib/assets/minecraft/models/item/exampleitem.json", JSON.stringify(

View File

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

View File

@ -537,8 +537,8 @@ globalThis.modapi_postinit = "(" + (() => {
ModAPI.events.listeners = { "event": [] }; ModAPI.events.listeners = { "event": [] };
ModAPI.addEventListener = function addEventListener(name, callback) { ModAPI.addEventListener = function addEventListener(name, callback) {
if (name.startsWith("lib:")) { if (name.startsWith("lib:")) {
if (ModAPI.events.lib_map[name]) { if (Object.keys(ModAPI.events.lib_map).includes(name)) {
callback({}); callback(ModAPI.events.lib_map[name]);
} else { } else {
if (!Array.isArray(ModAPI.events.listeners[name])) { if (!Array.isArray(ModAPI.events.listeners[name])) {
ModAPI.events.listeners[name] = []; ModAPI.events.listeners[name] = [];
@ -596,10 +596,10 @@ globalThis.modapi_postinit = "(" + (() => {
if (ModAPI.events.types.includes(name) && name.startsWith("lib:")) { if (ModAPI.events.types.includes(name) && name.startsWith("lib:")) {
if (Array.isArray(ModAPI.events.listeners[name])) { if (Array.isArray(ModAPI.events.listeners[name])) {
ModAPI.events.listeners[name].forEach((func) => { ModAPI.events.listeners[name].forEach((func) => {
func({}); func(data);
}); });
} }
ModAPI.events.lib_map[name] = true; ModAPI.events.lib_map[name] = data;
return; return;
} }
if ( if (