123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- event.load("block_click");
- doors = list.new();
- trapdoors = list.new();
- fencegates = list.new();
- orig_state = map.new();
- doors_tag = block.getTag("minecraft:wooden_doors");
- trapdoors_tag = block.getTag("minecraft:wooden_trapdoors");
- fencegates_tag = block.getTag("minecraft:fence_gates");
- open_prop = block.getProperty("open");
- msg("dev", "§bDoors §rloaded.");
- @wait
- wait();
- loc = entity.getLocation(player);
- world_name = world.getName(loc.getWorld(loc));
- if(isSurvWorldName(world_name) || isStoryWorldName(world_name)) {
- ignoreGoto(event);
- }
- goto("wait");
- @block_click
- if(block.hasTag(doors_tag, block) && action == "right") {
- player_spec = player.getAutoCloseDoor(player);
- door_state_1 = block.getDoorStatus(block_loc);
- if(!door_state_1) {
- if(player_spec) {
- list.add(doors, block_loc);
- sgoto(60, "closedoor");
- }
- }
- //Nach Doppeltür suchen
- door_loc_2 = block.getSecondDoor(block_loc);
- if(door_loc_2 != null) {
- door_state_2 = block.getDoorStatus(door_loc_2);
- if(door_state_1 && door_state_2) {
- block.setDoorStatus(door_loc_2, false);
- } elseif(!door_state_1 && !door_state_2) {
- block.setDoorStatus(door_loc_2, true);
- if(player_spec) {
- list.add(doors, door_loc_2);
- sgoto(60, "closedoor");
- }
- }
- }
- goto("wait");
- }
- if(block.hasTag(trapdoors_tag, block) && action == "right") {
- player_spec = player.getAutoCloseDoor(player);
- if(player_spec) {
- if(!map.contains(orig_state, block_loc)) {
- state = block.getTrapdoorStatus(block_loc);
- map.add(orig_state, block_loc, state);
- }
- list.add(trapdoors, block_loc);
- sgoto(60, "toggletrapdoor");
- }
- goto("wait");
- }
- if(block.hasTag(fencegates_tag, block) && action == "right") {
- player_spec = player.getAutoCloseDoor(player);
- if(player_spec) {
- if(!map.contains(orig_state, block_loc)) {
- state = block.getState(block_loc, open_prop);
- map.add(orig_state, block_loc, state);
- }
- list.add(fencegates, block_loc);
- sgoto(60, "togglefencegate");
- }
- goto("wait");
- }
- goto("wait");
- @closedoor
- doorloc = list.getIndex(doors, 0);
- list.removeIndex(doors, 0);
- if(block.hasTag(doors_tag, block.get(doorloc))) {
- if(block.getDoorStatus(doorloc)) {
- block.setDoorStatus(doorloc, false);
- }
- }
- goto("wait");
- @toggletrapdoor
- doorloc = list.getIndex(trapdoors, 0);
- list.removeIndex(trapdoors, 0);
- if(block.hasTag(trapdoors_tag, block.get(doorloc))) {
- state = map.get(orig_state, doorloc);
- if(state == null) {
- goto("wait");
- }
- map.remove(orig_state, doorloc);
- if(block.getTrapdoorStatus(doorloc) != state) {
- block.setTrapdoorStatus(doorloc, state);
- }
- }
- goto("wait");
- @togglefencegate
- doorloc = list.getIndex(fencegates, 0);
- list.removeIndex(fencegates, 0);
- if(block.hasTag(fencegates_tag, block.get(doorloc))) {
- state = map.get(orig_state, doorloc);
- if(state == null) {
- goto("wait");
- }
- map.remove(orig_state, doorloc);
- if(block.getState(doorloc, open_prop) != state) {
- //TODO
- }
- }
- goto("wait");
|