EaglerForgeInjector/examplemods/advanced_vclip.js
2024-09-26 18:39:08 +08:00

80 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
// Custom syntax error function
function syntaxError() {
ModAPI.displayToChat("[AdvancedVClip] Syntax error: Usage is .vclip <offset>");
}
ModAPI.require("player");
ModAPI.addEventListener("sendchatmessage", (ev) => {
var msg = ev.message.toLowerCase();
if (msg.startsWith(".vclip")) {
ev.preventDefault == true;
var args = msg.split(" ");
if (args.length != 2) {
syntaxError();
return;
}
var offset = parseFloat(args[1]);
if (isNaN(offset)) {
syntaxError();
return;
}
var packetsRequired = Math.ceil(Math.abs(offset / 10));
if (packetsRequired > 20) {
packetsRequired = 1; // Limit to avoid server kicking for too many packets
}
var player = ModAPI.player;
var ridingEntity = player.ridingEntity;
if (ridingEntity != null) {
// Player is riding an entity
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({
"action": "RIDING_JUMP", // Simulate a riding jump action
"entityId": ridingEntity.getEntityId(),
});
}
// Final move
ridingEntity.posY += offset / packetsRequired;
player.sendQueue.addToSendQueue({
"action": "RIDING_JUMP",
"entityId": ridingEntity.getEntityId(),
});
} else {
// Player is not riding any entity
for (var packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
player.getNetHandler().addToSendQueue({
"x": player.posX,
"y": player.posY,
"z": player.posZ,
"onGround": true
});
}
// Final move
player.getNetHandler().addToSendQueue({
"x": player.posX,
"y": player.posY + offset,
"z": player.posZ,
"onGround": true
});
// Set the players final position
player.setPosition(player.posX, player.posY + offset, player.posZ);
}
ModAPI.displayToChat("[AdvancedVClip] VClipped " + offset + " blocks.");
}
});