mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-23 14:11:16 -09:00
leftclick LCI
This commit is contained in:
parent
f197ae6fd9
commit
7bb172385d
@ -23,6 +23,15 @@ ModAPI.addEventListener("lib:libcustomitems:loaded", () => {
|
||||
user.inventory.mainInventory[user.inventory.currentItem] = null;
|
||||
}
|
||||
user.setHealth(2);
|
||||
return true; //PreventDefault
|
||||
`,
|
||||
onLeftClickGround: `/*/user, world, itemstack, blockpos/*/
|
||||
itemstack.stackSize -= 1;
|
||||
if (itemstack.stackSize < 1) {
|
||||
user.inventory.mainInventory[user.inventory.currentItem] = null;
|
||||
}
|
||||
user.setHealth(20);
|
||||
return true; //PreventDefault
|
||||
`
|
||||
});
|
||||
});
|
@ -43,11 +43,17 @@ ModAPI.dedicatedServer.appendCode(function () {
|
||||
event.preventDefault = true;
|
||||
}
|
||||
});
|
||||
var t = 0;
|
||||
ModAPI.addEventListener("tick", () => {
|
||||
t++;
|
||||
if (t > 2) {
|
||||
t = 0;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (!active) {
|
||||
return;
|
||||
}
|
||||
active = false; //Don't run every tick, for debugging purposes.
|
||||
var playerEntities = getPlayerEntitiesAndTheirWorld();
|
||||
playerEntities.forEach(pair => {
|
||||
var start = pair.player.getPositionEyes(1).getRef();
|
||||
@ -58,12 +64,14 @@ ModAPI.dedicatedServer.appendCode(function () {
|
||||
lookVector.addVector(start.$xCoord, start.$yCoord, start.$zCoord);
|
||||
var hitResult = rayTraceMethod(pair.world.getRef(), start, lookVector.getRef(), 0);
|
||||
if (hitResult) {
|
||||
var blockPos = blockPosConstructor(Math.round(hitResult.$hitVec.$xCoord), Math.round(hitResult.$hitVec.$yCoord), Math.round(hitResult.$hitVec.$zCoord));
|
||||
var blockPos = blockPosConstructor(parseInt(hitResult.$hitVec.$xCoord), parseInt(hitResult.$hitVec.$yCoord), parseInt(hitResult.$hitVec.$zCoord));
|
||||
var blockType = blockTypesList[Math.floor(Math.random() * blockTypesList.length)];
|
||||
blockType = ModAPI.blocks[blockType];
|
||||
console.log(blockType);
|
||||
if (!blockType.fullBlock) {
|
||||
return;
|
||||
}
|
||||
console.log(ModAPI.util.unstr(blockType.unlocalizedName.getRef()));
|
||||
var block = blockType.getDefaultState().getRef();
|
||||
console.log(block, blockPos);
|
||||
pair.world.setBlockState(blockPos, block, 3);
|
||||
}
|
||||
});
|
||||
|
@ -7,7 +7,8 @@
|
||||
ModAPI.events.newEvent("lib:libcustomitems:loaded");
|
||||
function libServerside() {
|
||||
globalThis.LCI_REGISTRY ||= [];
|
||||
globalThis.LCI_ACTIONREGISTRY ||= {};
|
||||
globalThis.LCI_RMBEVENTS ||= {};
|
||||
globalThis.LCI_LMBEVENTS ||= {};
|
||||
var useName = ModAPI.util.getMethodFromPackage("net.minecraft.network.NetHandlerPlayServer", "processPlayerBlockPlacement");
|
||||
var oldUse = ModAPI.hooks.methods[useName];
|
||||
ModAPI.hooks.methods[useName] = function ($this, packet) {
|
||||
@ -18,16 +19,22 @@
|
||||
if (displayTag.$hasKey(ModAPI.util.str("Lore"), 9)) {
|
||||
var loreTag = displayTag.$getTag(ModAPI.util.str("Lore"));
|
||||
if (loreTag.$tagCount() > 0 && globalThis.LCI_REGISTRY.includes(ModAPI.util.ustr(loreTag.$getStringTagAt(0)))) {
|
||||
var cid = loreTag.$getStringTagAt(0);
|
||||
var cid = ModAPI.util.ustr(loreTag.$getStringTagAt(0));
|
||||
if (!globalThis.LCI_RMBEVENTS[cid]) {
|
||||
return oldUse.apply(this, [$this, packet]);
|
||||
}
|
||||
var positionTag = Object.keys(packet).filter(x => { return x.startsWith("$position") })[0];
|
||||
if (packet[positionTag].$x === -1 && packet[positionTag].$y === -1 && packet[positionTag].$z === -1) {
|
||||
return 0;
|
||||
}
|
||||
globalThis.LCI_ACTIONREGISTRY[cid].call(globalThis,
|
||||
var r = globalThis.LCI_RMBEVENTS[cid].call(globalThis,
|
||||
new Proxy($this.$playerEntity, ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy($this.$serverController.$worldServerForDimension($this.$playerEntity.$dimension), ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy(item, ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy(packet[positionTag], ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf));
|
||||
if (!r) {
|
||||
return oldUse.apply(this, [$this, packet]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -35,12 +42,54 @@
|
||||
}
|
||||
return oldUse.apply(this, [$this, packet]);
|
||||
}
|
||||
var digName = ModAPI.util.getMethodFromPackage("net.minecraft.network.NetHandlerPlayServer", "processPlayerDigging");
|
||||
var oldDig = ModAPI.hooks.methods[digName];
|
||||
ModAPI.hooks.methods[digName] = function ($this, packet) {
|
||||
console.log(packet);
|
||||
if ($this?.$playerEntity?.$inventory && $this.$playerEntity.$inventory.$getCurrentItem()) {
|
||||
var item = $this.$playerEntity.$inventory.$getCurrentItem();
|
||||
if (item.$stackTagCompound && item.$stackTagCompound.$hasKey(ModAPI.util.str("display"), 10)) {
|
||||
var displayTag = item.$stackTagCompound.$getCompoundTag(ModAPI.util.str("display"));
|
||||
if (displayTag.$hasKey(ModAPI.util.str("Lore"), 9)) {
|
||||
var loreTag = displayTag.$getTag(ModAPI.util.str("Lore"));
|
||||
if (loreTag.$tagCount() > 0 && globalThis.LCI_REGISTRY.includes(ModAPI.util.ustr(loreTag.$getStringTagAt(0)))) {
|
||||
var cid = ModAPI.util.ustr(loreTag.$getStringTagAt(0));
|
||||
if (!globalThis.LCI_LMBEVENTS[cid]) {
|
||||
return oldDig.apply(this, [$this, packet]);
|
||||
}
|
||||
var statusTag = Object.keys(packet.$status).find(x => { return x.startsWith("$name") });
|
||||
var positionTag = Object.keys(packet).filter(x => { return x.startsWith("$position") })[0];
|
||||
if (ModAPI.util.unstr(packet.$status[statusTag]) !== "START_DESTROY_BLOCK") {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var r = globalThis.LCI_LMBEVENTS[cid].call(globalThis,
|
||||
new Proxy($this.$playerEntity, ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy($this.$serverController.$worldServerForDimension($this.$playerEntity.$dimension), ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy(item, ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf),
|
||||
new Proxy(packet[positionTag], ModAPI.util.TeaVM_to_Recursive_BaseData_ProxyConf));
|
||||
if (!r) {
|
||||
return oldDig.apply(this, [$this, packet]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return oldDig.apply(this, [$this, packet]);
|
||||
}
|
||||
}
|
||||
function LCI_registerItem(data) {
|
||||
globalThis.LCI_REGISTRY ||= [];
|
||||
globalThis.LCI_ACTIONREGISTRY ||= {};
|
||||
globalThis.LCI_RMBEVENTS ||= {};
|
||||
globalThis.LCI_LMBEVENTS ||= {};
|
||||
globalThis.LCI_REGISTRY.push(data.tag);
|
||||
globalThis.LCI_ACTIONREGISTRY[data.tag] = new Function("user", "world", "itemstack", "blockpos", data.onRightClickGround);
|
||||
if (data.onRightClickGround) {
|
||||
globalThis.LCI_RMBEVENTS[data.tag] = new Function("user", "world", "itemstack", "blockpos", data.onRightClickGround);
|
||||
}
|
||||
if (data.onLeftClickGround) {
|
||||
globalThis.LCI_LMBEVENTS[data.tag] = new Function("user", "world", "itemstack", "blockpos", data.onLeftClickGround);
|
||||
}
|
||||
var ObjectClass = ModAPI.reflect.getClassById("java.lang.Object").class;
|
||||
function ToChar(char) {
|
||||
return ModAPI.reflect.getClassById("java.lang.Character").staticMethods.valueOf.method(char[0].charCodeAt(0));
|
||||
|
Loading…
x
Reference in New Issue
Block a user