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");