diff --git a/ExampleMods/blink.js b/ExampleMods/blink.js new file mode 100644 index 0000000..bf10f9b --- /dev/null +++ b/ExampleMods/blink.js @@ -0,0 +1,199 @@ +ModAPI.require("network"); +ModAPI.require("player"); +var packetsOnTodoList = []; +var blinking = false; +ModAPI.addEventListener("event", (ev) => { + if ( + blinking && + ev.event.startsWith("sendpacket") && + ev.event !== "sendpacketkeepalive" + ) { + ev.data.preventDefault = true; + packetsOnTodoList.push(ev); + } +}); +function blinkOn() { + if (blinking === true) { + return; + } + blinking = true; + ModAPI.displayToChat({ msg: "Blink activated." }); +} +function blinkOff() { + if (blinking === false) { + return; + } + blinking = false; + ModAPI.displayToChat({ msg: "Blink deactivated." }); + packetsOnTodoList.forEach((ev) => { + var data = ev.data; + switch (ev.event) { + case "sendpacketanimation": + ModAPI.network.sendPacketAnimation(); + break; + case "sendpacketentityaction": + ModAPI.network.sendPacketEntityAction({ + entityId: data.entityID, + action: data.action, + auxData: data.auxData, + }); + break; + case "sendpacketinput": + ModAPI.network.sendPacketInput({ + strafeSpeed: data.strafeSpeed, + forwardSpeed: data.forwardSpeed, + jumping: data.jumping, + sneaking: data.sneaking, + }); + break; + case "sendpacketclosewindow": + ModAPI.network.sendPacketCloseWindow({ windowId: data.windowId }); + break; + case "sendpacketclickwindow": + ModAPI.network.sendPacketClickWindow({ + windowId: data.windowId, + slotId: data.slotId, + usedButton: data.usedButton, + mode: data.mode, + clickedItemRef: data.clickedItem ? data.clickedItem.getRef() : {}, + actionNumber: data.actionNumber, + }); + break; + case "sendpacketconfirmtransaction": + ModAPI.network.sendPacketConfirmTransaction({ + windowId: data.windowId, + uid: data.uid, + accepted: data.accepted, + }); + break; + case "sendpacketchatmessage": + ModAPI.network.sendPacketConfirmTransaction({ + messageIn: data.message, + }); + break; + case "sendpacketuseentity": + ModAPI.network.sendPacketUseEntity({ + entityId: data.entityId, + action: data.action, + }); + break; + case "sendpacketplayerposition": + ModAPI.network.sendPacketPlayerPosition({ + posX: data.x, + posY: data.y, + posZ: data.z, + isOnGround: data.onGround, + }); + case "sendpacketplayerlook": + ModAPI.network.sendPacketPlayerLook({ + playerYaw: data.yaw, + playerPitch: data.pitch, + isOnGround: data.onGround, + }); + break; + case "sendpacketplayerposlook": + ModAPI.network.sendPacketPlayerPosLook({ + playerX: data.x, + playerY: data.y, + playerZ: data.z, + playerYaw: data.yaw, + playerPitch: data.pitch, + isOnGround: data.onGround, + }); + case "sendpacketplayer": + ModAPI.network.sendPacketPlayer({ + isOnGround: data.onGround, + }); + break; + case "sendpacketplayerdigging": + ModAPI.network.sendPacketPlayerDigging({ + pos: data.position, + facing: data.facing, + action: data.status, + }); + break; + case "sendpacketplayerblockplacement": + ModAPI.network.sendPacketPlayerBlockPlacement({ + stackRef: data.stack.getRef(), + posRef: data.position.getRef(), + placedBlockDirectionIn: data.placedBlockDirection, + facingXIn: data.facingX, + facingYIn: data.facingY, + facingZIn: data.facingZ, + }); + break; + case "sendpackethelditemchange": + ModAPI.network.sendPacketHeldItemChange({ + slotId: data.slotId, + }); + break; + case "sendpacketcreativeinventoryaction": + ModAPI.network.sendPacketCreativeInventoryAction({ + slotId: data.slotId, + stackRef: data.stack.getRef(), + }); + break; + case "sendpacketenchantitem": + ModAPI.network.sendPacketEnchantItem({ + windowId: data.windowId, + button: data.button, + }); + break; + case "sendpacketupdatesign": + ModAPI.network.sendPacketUpdateSign({ + pos: data.pos, + lines: data.lines, + }); + break; + case "sendpacketplayerabilities": + ModAPI.network.sendPacketPlayerAbilities({ + capabilitiesRef: ModAPI.player.capabilities.getRef(), + }); + break; + case "sendpackettabcomplete": + ModAPI.network.sendPacketTabComplete({ + msg: data.message, + target: data.targetBlock, + }); + break; + case "sendpacketclientsettings": + ModAPI.network.sendPacketClientSettings({ + lang: data.lang, + view: data.view, + chatVisibility: data.chatVisibility, + enableColors: data.enableColors, + modelPartFlags: data.modelPartFlags, + }); + break; + case "sendpacketclientstatus": + ModAPI.network.sendPacketClientStatus({ + status: data.status, + }); + break; + case "sendpacketspectate": + ModAPI.network.sendPacketSpectate({ + uuid: data.id, + }); + break; + case "sendpacketresourcepackstatus": + ModAPI.network.sendPacketResourcePackStatus({ + hash: data.hash, + status: data.status, + }); + break; + default: + break; + } + }); + packetsOnTodoList = []; +} +ModAPI.addEventListener("sendchatmessage", (ev) => { + if (ev.message.toLowerCase().trim() === ".blinkon") { + ev.preventDefault = true; + blinkOn(); + } + if (ev.message.toLowerCase().trim() === ".blinkoff") { + ev.preventDefault = true; + blinkOff(); + } +});