mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-23 06:01:38 -09:00
Big commit
This commit is contained in:
parent
37d5a4192d
commit
c0e9c0141b
@ -1,3 +1,4 @@
|
||||
//NOT FUNCTIONAL
|
||||
ModAPI.meta.title("Advanced VClip Exploit");
|
||||
ModAPI.meta.description("Use .vclip <offset> to vertically phase through blocks with custom packet handling.");
|
||||
ModAPI.meta.credits("By radmanplays");
|
||||
@ -38,7 +39,7 @@ ModAPI.addEventListener("sendchatmessage", (ev) => {
|
||||
for (var packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
|
||||
// Simulate entity movement
|
||||
ridingEntity.posY += offset / packetsRequired; // Move a fraction of the total offset
|
||||
player.sendQueue.addToSendQueue({
|
||||
ModAPI.network.addToSendQueue({
|
||||
"action": "RIDING_JUMP", // Simulate a riding jump action
|
||||
"entityId": ridingEntity.getEntityId(),
|
||||
});
|
||||
@ -46,7 +47,7 @@ ModAPI.addEventListener("sendchatmessage", (ev) => {
|
||||
|
||||
// Final move
|
||||
ridingEntity.posY += offset / packetsRequired;
|
||||
player.sendQueue.addToSendQueue({
|
||||
ModAPI.network.addToSendQueue({
|
||||
"action": "RIDING_JUMP",
|
||||
"entityId": ridingEntity.getEntityId(),
|
||||
});
|
||||
@ -54,7 +55,7 @@ ModAPI.addEventListener("sendchatmessage", (ev) => {
|
||||
} else {
|
||||
// Player is not riding any entity
|
||||
for (var packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
|
||||
player.getNetHandler().addToSendQueue({
|
||||
ModAPI.network.addToSendQueue({
|
||||
"x": player.posX,
|
||||
"y": player.posY,
|
||||
"z": player.posZ,
|
||||
@ -63,7 +64,7 @@ ModAPI.addEventListener("sendchatmessage", (ev) => {
|
||||
}
|
||||
|
||||
// Final move
|
||||
player.getNetHandler().addToSendQueue({
|
||||
ModAPI.network.addToSendQueue({
|
||||
"x": player.posX,
|
||||
"y": player.posY + offset,
|
||||
"z": player.posZ,
|
@ -3,9 +3,52 @@ ModAPI.meta.credits("By ZXMushroom63");
|
||||
ModAPI.meta.icon("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAQdJREFUOE9jZGBg+M9AAWAEGbBl2QmyjPCJsmAgaABbdybc8F+l01EswmsATONXLi4GYSkpBgZ+foY1O3cyuHWuhhuC1QBkjf///QMrFtHWZmD4+BHDEBQDUGzU1ITb8ubqVZyGoBjwsCONQYqXl0FYU5MBpAlsKxRgM+STUwoDhgG66upgZ4IAuiEooRcXx/DpCRuqAU97shg0jYzgfsVpSFwcg5mZGcOedRewGDBhAgPDokUohsBthmoE8U+dOoXdBfHHjoElUQxB03i9oABspnTJNFQXgARB3oAbwsAAdirMRmSNMFdhTQcwQ/BpxGsAzCUwRSCn4gJE5QV8uQxuAFlZEaoJAKrYrAHl38o6AAAAAElFTkSuQmCC");
|
||||
ModAPI.meta.description("Library to make retexturing LCI items easier. Requires AsyncSink.");
|
||||
(async function LibRender() {
|
||||
var BreakingFour = ModAPI.reflect.getClassByName("BreakingFour").constructors[0];
|
||||
var BakedQuad = ModAPI.reflect.getClassByName("BakedQuad").constructors[0];
|
||||
var EnumFacing = ModAPI.reflect.getClassByName("EnumFacing");
|
||||
function createBreakingFour(sprite$) {
|
||||
var sprite = ModAPI.util.wrap(sprite$);
|
||||
var vertexData = ModAPI.array.int(28); // 7 integers per vertex, 4 vertices
|
||||
var vertexDataInternal = vertexData.data;
|
||||
|
||||
var vertexDataWithNormals = ModAPI.array.int(32); // 8 integers per vertex, 4 vertices
|
||||
var normalDataInternal = vertexDataWithNormals.data;
|
||||
|
||||
var vertices = [
|
||||
[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0]
|
||||
];
|
||||
|
||||
var uvs = [
|
||||
[0, 0], [1, 0], [1, 1], [0, 1]
|
||||
];
|
||||
|
||||
for (let i = 0; i < 4; i++) {
|
||||
let j = i * 7;
|
||||
vertexDataInternal[j] = ModAPI.hooks.methods.jl_Float_floatToIntBits(vertices[i][0]);
|
||||
vertexDataInternal[j + 1] = ModAPI.hooks.methods.jl_Float_floatToIntBits(vertices[i][1]);
|
||||
vertexDataInternal[j + 2] = ModAPI.hooks.methods.jl_Float_floatToIntBits(vertices[i][2]);
|
||||
vertexDataInternal[j + 3] = rgbToInt(255, 0, 0); // Color (red)
|
||||
vertexDataInternal[j + 4] = ModAPI.hooks.methods.jl_Float_floatToIntBits(sprite.getInterpolatedU(uvs[i][0] * 16));
|
||||
vertexDataInternal[j + 5] = ModAPI.hooks.methods.jl_Float_floatToIntBits(sprite.getInterpolatedV(uvs[i][1] * 16));
|
||||
vertexDataInternal[j + 6] = 0; // Normal
|
||||
|
||||
let k = i * 8;
|
||||
normalDataInternal[k] = vertexDataInternal[j];
|
||||
normalDataInternal[k + 1] = vertexDataInternal[j + 1];
|
||||
normalDataInternal[k + 2] = vertexDataInternal[j + 2];
|
||||
normalDataInternal[k + 3] = vertexDataInternal[j + 3];
|
||||
normalDataInternal[k + 4] = vertexDataInternal[j + 4];
|
||||
normalDataInternal[k + 5] = vertexDataInternal[j + 5];
|
||||
normalDataInternal[k + 6] = vertexDataInternal[j + 6];
|
||||
normalDataInternal[k + 7] = 0;
|
||||
}
|
||||
|
||||
var baseQuad = BakedQuad(vertexData, vertexDataWithNormals, -1, EnumFacing.staticVariables.NORTH);
|
||||
return BreakingFour(baseQuad, sprite$);
|
||||
}
|
||||
function waitUntilPropertyExists(obj, prop) {
|
||||
return new Promise((res, rej)=>{
|
||||
var timer = setInterval(()=>{
|
||||
return new Promise((res, rej) => {
|
||||
var timer = setInterval(() => {
|
||||
if (obj[prop]) {
|
||||
clearInterval(timer);
|
||||
res();
|
||||
@ -13,6 +56,9 @@ ModAPI.meta.description("Library to make retexturing LCI items easier. Requires
|
||||
}, 50);
|
||||
});
|
||||
}
|
||||
function rgbToInt(red, green, blue) {
|
||||
return (red << 16) | (green << 8) | blue;
|
||||
}
|
||||
function rgbaToInt(red, green, blue, alpha) {
|
||||
return (alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||
}
|
||||
@ -38,13 +84,15 @@ ModAPI.meta.description("Library to make retexturing LCI items easier. Requires
|
||||
});
|
||||
}
|
||||
function cloneBaseModel(baseModel, newTexture, texName) {
|
||||
var sprite = eaglerTextureAtlasSprite(imageDataToLaxImgData(newTexture), ModAPI.util.str(texName));
|
||||
var newBaseModelBuilder = ModAPI.reflect.getClassByName("SimpleBakedModel$Builder").constructors[0](0, 0, ModAPI.reflect.getClassByName("ItemCameraTransforms").constructors.find(x => x.length === 0)());
|
||||
newBaseModelBuilder.$builderTexture = eaglerTextureAtlasSprite(imageDataToLaxImgData(newTexture), ModAPI.util.str(texName));
|
||||
newBaseModelBuilder.$builderTexture = sprite;
|
||||
ModAPI.hooks.methods.nmcrm_SimpleBakedModel$Builder_addGeneralQuad(newBaseModelBuilder, createBreakingFour(sprite));
|
||||
var newBaseModel = ModAPI.hooks.methods.nmcrm_SimpleBakedModel$Builder_makeBakedModel(newBaseModelBuilder);
|
||||
newBaseModel.$generalQuads = baseModel.$generalQuads.$clone();
|
||||
newBaseModel.$faceQuads = baseModel.$faceQuads.$clone();
|
||||
var cameraTransformsId = ModAPI.util.getNearestProperty(newBaseModel, "$cameraTransforms");
|
||||
recursiveAssign(newBaseModel[cameraTransformsId], baseModel[cameraTransformsId]);
|
||||
//newBaseModel.$generalQuads = baseModel.$generalQuads.$clone();
|
||||
//newBaseModel.$faceQuads = baseModel.$faceQuads.$clone();
|
||||
//var cameraTransformsId = ModAPI.util.getNearestProperty(newBaseModel, "$cameraTransforms");
|
||||
//recursiveAssign(newBaseModel[cameraTransformsId], baseModel[cameraTransformsId]);
|
||||
return newBaseModel;
|
||||
}
|
||||
|
||||
@ -58,6 +106,7 @@ ModAPI.meta.description("Library to make retexturing LCI items easier. Requires
|
||||
var atlas = ModAPI.reflect.getClassByName("EaglerTextureAtlasSprite").constructors[0](ModAPI.util.str(name));
|
||||
var alias = ModAPI.util.wrap(atlas);
|
||||
alias.loadSprite(ModAPI.util.makeArray(laxImgDataClass, [imageData]), null);
|
||||
alias.initSprite(1, 1, 0, 0, 0);
|
||||
return atlas;
|
||||
};
|
||||
|
||||
@ -127,4 +176,13 @@ ModAPI.meta.description("Library to make retexturing LCI items easier. Requires
|
||||
ModAPI.events.callEvent("lib:libcustomrender:loaded", {});
|
||||
globalThis.LibCustomRender = LibCustomRender;
|
||||
})();
|
||||
//LibCustomRender.addRetextureRule("mymod:test_item_1", new ImageData(1, 1));
|
||||
//LibCustomRender.addRetextureRule("mymod:test_item_1", new ImageData(1, 1));
|
||||
|
||||
// const imageData = new ImageData(16, 16);
|
||||
// for (let i = 0; i < imageData.data.length; i += 4) {
|
||||
// imageData.data[i] = Math.floor(Math.random() * 256);
|
||||
// imageData.data[i + 1] = Math.floor(Math.random() * 256);
|
||||
// imageData.data[i + 2] = Math.floor(Math.random() * 256);
|
||||
// imageData.data[i + 3] = 255;
|
||||
// }
|
||||
// LibCustomRender.addRetextureRule("mymod:test_item_1", imageData);
|
@ -41,9 +41,6 @@
|
||||
// Get the EntityPlayerMP class to spawn the fake player
|
||||
killFS = true;
|
||||
const EntityPlayerMPClass = ModAPI.reflect.getClassById("net.minecraft.entity.player.EntityPlayerMP");
|
||||
var worldNameProp = ModAPI.util.getNearestProperty(ModAPI.server.getRef(), "$worldName");
|
||||
var worldName = ModAPI.server.getRef()[worldNameProp];
|
||||
console.log(ModAPI.util.ustr(worldName));
|
||||
const fakePlayer = ModAPI.util.wrap(EntityPlayerMPClass.constructors[0](
|
||||
ModAPI.server.getRef(), world.getRef(), fakeProfile, playerInteractionManager
|
||||
));
|
||||
|
@ -92,7 +92,7 @@
|
||||
<br />
|
||||
<span><label>Minify: </label><input type="checkbox" oninput="globalThis.doShronk = this.checked">
|
||||
<label>EaglerForge: </label><input checked type="checkbox" oninput="globalThis.doEaglerforge = this.checked">
|
||||
<label>Optimize PI: </label><input checked type="checkbox" oninput="globalThis.optimizePi= this.checked">
|
||||
<label>Optimize π: </label><input checked type="checkbox" oninput="globalThis.optimizePi= this.checked">
|
||||
<code id="status">Awaiting input...</code></span>
|
||||
<br /><br />
|
||||
<button class="btn btn-primary" id="giveme">Make modded client</button>
|
||||
|
Loading…
x
Reference in New Issue
Block a user