Advertisement
Mp0wersDev

Minecraft Utilities 1.1 (lib/minecraftUtils.js)

Nov 20th, 2018
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Minecraft Utilities By Mp0wers
  2. // License: MIT
  3. // Version: 1.1
  4. //
  5. // Special thanks to developers of LiquidBounce and WurstClient.
  6.  
  7. var globalScope = this;
  8.  
  9. var KeyBinding = Java.type("net.minecraft.client.settings.KeyBinding");
  10. var EnumFacing = Java.type("net.minecraft.util.EnumFacing");
  11. var Vec3 = Java.type("net.minecraft.util.Vec3");
  12.  
  13. var minecraftUtils = (function() {
  14.     var keyBindHooks = {};
  15.     var hookKeyBind = function(keyBindIn, hookNameString) {
  16.         var keyCode;
  17.         if (!(keyBindIn instanceof KeyBinding) || typeof hookNameString != "string") {
  18.             return false;
  19.         };
  20.         if (!globalScope.hasOwnProperty(hookNameString) || !(globalScope[hookNameString] instanceof KeyBinding)) {
  21.             globalScope[hookNameString] = new KeyBinding("key.hook_" + hookNameString, 0, "key.categories.misc");
  22.         };
  23.         if (keyBindHooks.hasOwnProperty(hookNameString)) {
  24.             unhookKeyBind(hookNameString);
  25.         };
  26.         var hooksArr = Object.keys(keyBindHooks);
  27.         for (var i = 0; i < hooksArr.length; i++) {
  28.             if (keyBindHooks[hooksArr[i]][0] == keyBindIn) {
  29.                 unhookKeyBind(hooksArr[i]);
  30.                 break;
  31.             };
  32.         };
  33.         keyCode = keyBindIn.getKeyCode();
  34.         if (keyCode == 0) {
  35.             keyCode = keyBindIn.getKeyCodeDefault();
  36.         };
  37.         keyBindIn.setKeyCode(0);
  38.         globalScope[hookNameString].setKeyCode(keyCode);
  39.         keyBindHooks[hookNameString] = [keyBindIn, keyCode];
  40.         KeyBinding.resetKeyBindingArrayAndHash();
  41.         return true;
  42.     };
  43.     var unhookKeyBind = function(hookNameString) {
  44.         var keyCode;
  45.         if (typeof hookNameString != "string" || !keyBindHooks.hasOwnProperty(hookNameString)) {
  46.             return false;
  47.         };
  48.         keyCode = keyBindHooks[hookNameString][1];
  49.         if (globalScope.hasOwnProperty(hookNameString) && globalScope[hookNameString] instanceof KeyBinding) {
  50.             globalScope[hookNameString].setKeyCode(0);
  51.         };
  52.         keyBindHooks[hookNameString][0].setKeyCode(keyCode);
  53.         delete keyBindHooks[hookNameString];
  54.         KeyBinding.resetKeyBindingArrayAndHash();
  55.         return true;
  56.     };
  57.     var unhookAllKeyBinds = function() {
  58.         var hooksArr = Object.keys(keyBindHooks);
  59.         for (var i = 0; i < hooksArr.length; i++) {
  60.             unhookKeyBind(hooksArr[i]);
  61.         };
  62.         return true;
  63.     };
  64.     return {
  65.         hookKeyBind: hookKeyBind,
  66.         unhookKeyBind: unhookKeyBind,
  67.         unhookAllKeyBinds: unhookAllKeyBinds
  68.     };
  69. })();
  70.  
  71. // Start of Minecraft Utilities API
  72.  
  73. function hookKeyBind(keyBindIn, hookNameString) {
  74.     return minecraftUtils.hookKeyBind(keyBindIn, hookNameString);
  75. };
  76.  
  77. function unhookKeyBind(hookNameString) {
  78.     return minecraftUtils.unhookKeyBind(hookNameString);
  79. };
  80.  
  81. function unhookAllKeyBinds() {
  82.     return minecraftUtils.unhookAllKeyBinds();
  83. };
  84.  
  85. function getCenterOfBlockSide(blockPosIn, sideIn) {
  86.     var posVec = new Vec3(blockPosIn).addVector(0.5, 0.5, 0.5);
  87.     var dirVec = new Vec3(sideIn.getDirectionVec());
  88.     var resultVec = posVec.addVector(dirVec.xCoord * 0.5, dirVec.yCoord * 0.5, dirVec.zCoord * 0.5);
  89.     return resultVec;
  90. };
  91.  
  92. function isBlockInReach(entityIn, blockPosIn) {
  93.     var reachDistance = mc.playerController.getBlockReachDistance() + 0.25;
  94.     var eyesPos = entityIn.getPositionEyes(1.0);
  95.     var closestSide = getClosestBlockSide(eyesPos, blockPosIn);
  96.     var closestSideCenter = getCenterOfBlockSide(blockPosIn, closestSide);
  97.     if (eyesPos.distanceTo(closestSideCenter) <= reachDistance) {
  98.         return true;
  99.     };
  100.     return false;
  101. };
  102.  
  103. function getClosestBlockSide(vectorIn, blockPosIn) {
  104.     var blockSide, blockSideCenter, distanceToBlockSide, closestSide;
  105.     var lowestDistance = null;
  106.     var i;
  107.     for (i in EnumFacing.values()) {
  108.         blockSide = EnumFacing.values()[i];
  109.         blockSideCenter = getCenterOfBlockSide(blockPosIn, blockSide);
  110.         distanceToBlockSide = vectorIn.distanceTo(blockSideCenter);
  111.         if (lowestDistance == null || distanceToBlockSide < lowestDistance) {
  112.             lowestDistance = distanceToBlockSide;
  113.             closestSide = blockSide;
  114.         };
  115.     };
  116.     return closestSide;
  117. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement