story.txt 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. event.load("block_click");
  2. event.load("inv_click");
  3. event.load("player_move");
  4. event.load("player_pre_respawn");
  5. event.load("player_post_respawn");
  6. story_world = world.getStory();
  7. move_id_to_spawn = event.addMoveData(loc.new(story_world, -1501.5, 59, -35.5), loc.new(story_world, -1499, 62.5, -33), 5, -1);
  8. story_respawn = set.new();
  9. age_prop_3 = block.getProperty("age_0_3");
  10. bread_loc = loc.new(story_world, -1568, 67, -66);
  11. transit_loc = loc.new(story_world, -1522, 64, -18);
  12. schiff_spawn = loc.new(story_world, -1636, 63, -999, 50, 0.0001);
  13. bread = read.item("minecraft:bread");
  14. times = map.new();
  15. bread_wait_time = 3; //seconds
  16. transit_inv = inv.new("333333333");
  17. inv.setItem(transit_inv, 0, read.item("minecraft:cake", 1, "§fAdmont"));
  18. inv.setItem(transit_inv, 1, read.item("minecraft:sand", 1, "§fSchiffbruch"));
  19. msg("dev", "§bStory §rloaded.");
  20. @wait
  21. wait();
  22. ignoreGoto(event);
  23. goto("wait");
  24. @block_click
  25. if(block_type == "minecraft:sweet_berry_bush") {
  26. scheduler.setBlock(5, block_loc, concat("minecraft:sweet_berry_bush[age=3]"), false);
  27. goto("wait");
  28. }
  29. if(hand == "OFF_HAND") {
  30. goto("wait");
  31. }
  32. if(action == "left") {
  33. goto("wait");
  34. }
  35. if(block_loc == transit_loc) {
  36. inv.open(transit_inv, player, "Überfahrt");
  37. goto("wait");
  38. }
  39. if(block_loc == bread_loc) {
  40. player_uuid = player.getUuid(player);
  41. now_time = time.getMillis();
  42. time = map.getOrDefault(times, player_uuid, 0);
  43. diff_time = (now_time - time) / 1000;
  44. if(diff_time > bread_wait_time) {
  45. map.add(times, player_uuid, now_time);
  46. player.giveItem(player, bread);
  47. } else {
  48. msg.prefix(player, "§6FoodGiver", concat("Please wait for ", text.number(math.round(bread_wait_time - diff_time)), " seconds."));
  49. }
  50. }
  51. goto("wait");
  52. @inv_click
  53. if(inv_name == "Überfahrt") {
  54. if(item.getType(item) == "minecraft:air") {
  55. goto("wait");
  56. }
  57. if(inv_slot == 0) {
  58. entity.teleport(player, world.getStorySpawn());
  59. } elseif(inv_slot == 1) {
  60. entity.teleport(player, schiff_spawn);
  61. }
  62. inv.close(player);
  63. }
  64. goto("wait");
  65. @player_move
  66. if(id == move_id_to_spawn) {
  67. player.setBackPosLoc(player, world.getStorySpawn());
  68. player.teleport(player, world.getServerSpawn(), false);
  69. }
  70. goto("wait");
  71. @player_pre_respawn
  72. if(loc.isInStoryWorld(entity.getLocation(player))) {
  73. set.add(story_respawn, player.getUuid(player));
  74. }
  75. goto("wait");
  76. @player_post_respawn
  77. player_uuid = player.getUuid(player);
  78. if(set.contains(story_respawn, player_uuid)) {
  79. set.remove(story_respawn, player_uuid);
  80. entity.teleport(player, world.getStorySpawn());
  81. }
  82. goto("wait");