Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. var npcMe,ii = 1,pos_number=0,dir_number =0;
  2. function init(event){
  3. npcMe = event.npc;
  4. }
  5. function sayListBlocks(x,y,z){
  6. npcMe.world.spawnParticle("flame",x,y,z,0,0,0,.1,50);
  7.  
  8. }
  9. function tick(event){
  10. if (pos_number == 4){
  11. pos_number = 0;
  12. }
  13. switch (pos_number) {
  14. case 0:
  15. pos_number++;
  16. event.npc.setPitch(0);
  17. //
  18. break;
  19. case 1:
  20. pos_number++;
  21. event.npc.setPitch(-10);
  22. //
  23. break;
  24. case 2:
  25. pos_number++;
  26. event.npc.setPitch(-20);
  27. //
  28. break;
  29. case 3:
  30. pos_number++;
  31. dir_number++;
  32. event.npc.setPitch(-30);
  33. //
  34. break;
  35. }
  36. /////////////
  37.  
  38. var x0 = npcMe.x;
  39. var y0 = npcMe.y+1;
  40. var z0 = npcMe.z;
  41. var x1 = npcMe.rayTraceBlock(200,false,false).pos.x;
  42. var y1 = npcMe.rayTraceBlock(200,false,false).pos.y;
  43. var z1 = npcMe.rayTraceBlock(200,false,false).pos.z;
  44. visitAll(x0,y0,z0,x1,y1,z1,sayListBlocks);
  45. }
  46. //
  47. function visitAll(gx0, gy0, gz0, gx1, gy1, gz1, visitor) {
  48. //npcMe.say("start");
  49. var gx0idx = Math.floor(gx0);
  50. var gy0idx = Math.floor(gy0);
  51. var gz0idx = Math.floor(gz0);
  52.  
  53. var gx1idx = Math.floor(gx1);
  54. var gy1idx = Math.floor(gy1);
  55. var gz1idx = Math.floor(gz1);
  56.  
  57. var sx = gx1idx > gx0idx ? 1 : gx1idx < gx0idx ? -1 : 0;
  58. var sy = gy1idx > gy0idx ? 1 : gy1idx < gy0idx ? -1 : 0;
  59. var sz = gz1idx > gz0idx ? 1 : gz1idx < gz0idx ? -1 : 0;
  60.  
  61. var gx = gx0idx;
  62. var gy = gy0idx;
  63. var gz = gz0idx;
  64.  
  65. //Planes for each axis that we will next cross
  66. var gxp = gx0idx + (gx1idx > gx0idx ? 1 : 0);
  67. var gyp = gy0idx + (gy1idx > gy0idx ? 1 : 0);
  68. var gzp = gz0idx + (gz1idx > gz0idx ? 1 : 0);
  69.  
  70. //Only used for multiplying up the error margins
  71. var vx = gx1 === gx0 ? 1 : gx1 - gx0;
  72. var vy = gy1 === gy0 ? 1 : gy1 - gy0;
  73. var vz = gz1 === gz0 ? 1 : gz1 - gz0;
  74.  
  75. //Error is normalized to vx * vy * vz so we only have to multiply up
  76. var vxvy = vx * vy;
  77. var vxvz = vx * vz;
  78. var vyvz = vy * vz;
  79.  
  80. //Error from the next plane accumulators, scaled up by vx*vy*vz
  81. // gx0 + vx * rx === gxp
  82. // vx * rx === gxp - gx0
  83. // rx === (gxp - gx0) / vx
  84. var errx = (gxp - gx0) * vyvz;
  85. var erry = (gyp - gy0) * vxvz;
  86. var errz = (gzp - gz0) * vxvy;
  87.  
  88. var derrx = sx * vyvz;
  89. var derry = sy * vxvz;
  90. var derrz = sz * vxvy;
  91. var errorCatch = 200;
  92. do {
  93. visitor(gx, gy, gz);
  94.  
  95. if (gx === gx1idx && gy === gy1idx && gz === gz1idx)
  96. break;
  97.  
  98. //Which plane do we cross first?
  99. var xr = Math.abs(errx);
  100. var yr = Math.abs(erry);
  101. var zr = Math.abs(errz);
  102.  
  103. if (sx !== 0 && (sy === 0 || xr < yr) && (sz === 0 || xr < zr)) {
  104. gx += sx;
  105. errx += derrx;
  106. } else if (sy !== 0 && (sz === 0 || yr < zr)) {
  107. gy += sy;
  108. erry += derry;
  109. } else if (sz !== 0) {
  110. gz += sz;
  111. errz += derrz;
  112. }
  113.  
  114. } while (errorCatch-- > 0);
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement