portals.txt 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. event.load("block_place");
  2. event.load("block_break");
  3. event.load("player_move");
  4. portalids = list.new();
  5. port_out_locs = map.new();
  6. open_portals_in = list.new();
  7. open_portals_out = list.new();
  8. @wait
  9. wait();
  10. if(player.getName(player) == "SirTerence7"){
  11. //one way portals:
  12. if(event == "block_place"){
  13. if(block_type == "minecraft:redstone_torch"){
  14. new_id = event.addMoveData(block_loc, loc.mod(block_loc,0.5,1,0.5), -1, -1, player);
  15. list.add(portalids, new_id);
  16. if(list.getSize(open_portals_out) > 0){
  17. map.add(port_out_locs, new_id, list.getIndex(open_portals_out, 0));
  18. list.removeIndex(open_portals_out, 0);
  19. }else{
  20. list.add(open_portals_in, new_id);
  21. }
  22. goto("wait");
  23. }
  24. if(block_type == "minecraft:torch"){
  25. if(list.getSize(open_portals_in) > 0){
  26. map.add(port_out_locs, list.getIndex(open_portals_in, 0), block_loc);
  27. list.removeIndex(open_portals_in, 0);
  28. }else{
  29. list.add(open_portals_out, block_loc);
  30. }
  31. goto("wait");
  32. }
  33. goto("wait");
  34. }
  35. if(event == "block_break"){
  36. goto("wait");
  37. }
  38. if(event == "player_move"){
  39. if(list.contains(portalids,id)){
  40. motion_array = entity.getMotion(player);
  41. temp_coords = map.get(port_out_locs, id);
  42. if(temp_coords != null){
  43. entity.teleport(player, temp_coords);
  44. entity.throw(player, motion_array[0], motion_array[1], motion_array[2]);
  45. }
  46. }
  47. goto("wait");
  48. }
  49. }
  50. goto("wait");
  51. /*
  52. portalkey = 1;
  53. //
  54. if(event == "block_place"){
  55. if(block_type == "minecraft:redstone_torch"){
  56. new_id = event.addMoveData(block_loc, loc.mod(block_loc,0.5,1,0.5), -1, -1, player);
  57. list.add(portalids, new_id);
  58. map.add(port_idmap, block_loc, new_id);
  59. map.add(port_locs, portalkey, block_loc);
  60. msg("dev", new_id);
  61. portalkey++;
  62. }
  63. goto("wait");
  64. }
  65. /*if(event == "block_break"){
  66. temp_id = map.get(port_idmap, block_loc);
  67. event.removeMoveData(temp_id);
  68. goto("wait");
  69. }*//*
  70. if(event == "player_move" && portalkey > 2){
  71. motion_array = entity.getMotion(player);
  72. msg("dev", id);
  73. temp_key = list.getIndexOf(portalids, id);
  74. if(temp_key > 0){
  75. msg("dev", temp_key);
  76. if(math.round(temp_key/2) == temp_key/2){
  77. temp_coords = map.get(port_locs, temp_key-1);
  78. }else{
  79. temp_coords = map.get(port_locs, temp_key+1);
  80. }
  81. msg("dev", temp_coords);
  82. entity.teleport(player, temp_coords);
  83. entity.throw(player, motion_array[0], motion_array[1], motion_array[2]);
  84. }
  85. goto("wait");
  86. }
  87. }*/