From dca02be29dd3c750038dfda7d700f87474ec81a7 Mon Sep 17 00:00:00 2001 From: Srendi Date: Tue, 21 May 2024 17:35:01 +0200 Subject: [PATCH] Revert "Revert "Implement game tests for more peripherals"" --- .../computercraft/gametest/core/TestAPI.java | 13 + .../gametest/core/TestEvents.java | 21 + .../computercraft/gametest/core/TestMod.java | 5 +- .../advancedperipherals/test/ModIntegrTest.kt | 79 ++ .../test/PeripheralTest.kt | 15 + .../tests/modintegrtest.botaniaflower.lua | 41 + .../tests/modintegrtest.botaniamanapool.lua | 40 + .../tests/modintegrtest.botaniaspreader.lua | 66 ++ .../tests/modintegrtest.minecraftbeacon.lua | 34 + .../modintegrtest.minecraftnoteblock.lua | 24 + .../tests/peripheraltest.geoscanner.lua | 83 ++ .../tests/peripheraltest.nbtstorage.lua | 38 + .../tests/peripheraltest.rsintegrator.lua | 37 + .../modintegrtest.botaniaflower.snbt | 142 ++++ .../modintegrtest.botaniamanapool.snbt | 140 ++++ .../modintegrtest.botaniaspreader.snbt | 142 ++++ .../modintegrtest.minecraftbeacon.snbt | 707 ++++++++++++++++++ .../modintegrtest.minecraftnoteblock.snbt | 139 ++++ ...t.minecraftnoteblock_triggering_allay.snbt | 140 ++++ .../structures/peripheraltest.geoscanner.snbt | 243 ++++++ .../structures/peripheraltest.nbtstorage.snbt | 138 ++++ .../peripheraltest.rsintegrator.snbt | 142 ++++ 22 files changed, 2428 insertions(+), 1 deletion(-) create mode 100644 src/testMod/java/dan200/computercraft/gametest/core/TestEvents.java create mode 100644 src/testMod/kotlin/de/srendi/advancedperipherals/test/ModIntegrTest.kt create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaflower.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniamanapool.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaspreader.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftbeacon.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftnoteblock.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.geoscanner.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.nbtstorage.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.rsintegrator.lua create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaflower.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniamanapool.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaspreader.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftbeacon.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock_triggering_allay.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.geoscanner.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.nbtstorage.snbt create mode 100644 src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.rsintegrator.snbt diff --git a/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java b/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java index 5539d9ac1..5ea5e8cfc 100644 --- a/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java +++ b/src/testMod/java/dan200/computercraft/gametest/core/TestAPI.java @@ -12,7 +12,10 @@ import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.gametest.api.ComputerState; import dan200.computercraft.gametest.api.TestExtensionsKt; +import dan200.computercraft.shared.computer.core.ServerContext; +import de.srendi.advancedperipherals.common.util.LuaConverter; import net.minecraft.gametest.framework.GameTestSequence; +import net.minecraftforge.server.ServerLifecycleHooks; import java.util.Optional; @@ -80,4 +83,14 @@ public final void ok(Optional marker) throws LuaException { public final void log(String message) { ComputerCraft.log.info("[Computer '{}'] {}", label, message); } + + @LuaFunction + public final Object getComputerPosition() { + return ServerContext.get(ServerLifecycleHooks.getCurrentServer()).registry().getComputers().stream() + .filter(computer -> computer.getLabel() != null && computer.getLabel().equals(label)) + .findFirst() + .map(computer -> LuaConverter.posToObject(computer.getPosition())) + .orElse(null); + } + } diff --git a/src/testMod/java/dan200/computercraft/gametest/core/TestEvents.java b/src/testMod/java/dan200/computercraft/gametest/core/TestEvents.java new file mode 100644 index 000000000..af5bfe9a1 --- /dev/null +++ b/src/testMod/java/dan200/computercraft/gametest/core/TestEvents.java @@ -0,0 +1,21 @@ +package dan200.computercraft.gametest.core; + +import net.minecraft.core.BlockPos; +import net.minecraftforge.event.level.NoteBlockEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.HashMap; +import java.util.Map; + +@Mod.EventBusSubscriber(modid = TestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) +public class TestEvents { + public static final Map triggeredNoteBlocks = new HashMap<>(); + + @SubscribeEvent + public static void onNoteBlockTrigger(NoteBlockEvent.Play event) { + if (event.getLevel().isClientSide()) return; + triggeredNoteBlocks.put(event.getPos(), triggeredNoteBlocks.getOrDefault(event.getPos(), 0) + 1); + } + +} diff --git a/src/testMod/java/dan200/computercraft/gametest/core/TestMod.java b/src/testMod/java/dan200/computercraft/gametest/core/TestMod.java index 8cd8c760d..116ecd458 100644 --- a/src/testMod/java/dan200/computercraft/gametest/core/TestMod.java +++ b/src/testMod/java/dan200/computercraft/gametest/core/TestMod.java @@ -32,8 +32,11 @@ import java.util.Locale; import java.util.function.Consumer; -@Mod("advancedperipheralstest") +@Mod(TestMod.MOD_ID) public class TestMod { + + public static final String MOD_ID = "advancedperipheralstest"; + public TestMod() { TestHooks.init(); diff --git a/src/testMod/kotlin/de/srendi/advancedperipherals/test/ModIntegrTest.kt b/src/testMod/kotlin/de/srendi/advancedperipherals/test/ModIntegrTest.kt new file mode 100644 index 000000000..8ea1206f6 --- /dev/null +++ b/src/testMod/kotlin/de/srendi/advancedperipherals/test/ModIntegrTest.kt @@ -0,0 +1,79 @@ +package de.srendi.advancedperipherals.test + +import dan200.computercraft.gametest.api.* +import dan200.computercraft.gametest.core.TestEvents +import net.minecraft.core.BlockPos +import net.minecraft.gametest.framework.* +import net.minecraft.world.InteractionHand +import net.minecraft.world.entity.EntityType +import net.minecraft.world.entity.animal.allay.Allay +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Items + +@GameTestHolder +class ModIntegrTest { + + @GameTest + fun botaniaFlower(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest + fun botaniaManaPool(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest + fun botaniaSpreader(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest(timeoutTicks = 300) + fun minecraftBeacon(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest + fun minecraftNoteBlock(context: GameTestHelper) = context.sequence { + thenExecute { TestEvents.triggeredNoteBlocks.clear() } + thenComputerOk() + thenExecute { + val successBlock = BlockPos(2, 2, 1) + val failBlock = BlockPos(2, 2, 3) + + if (TestEvents.triggeredNoteBlocks.getOrDefault(context.absolutePos(successBlock), 0) != 1) + context.fail("Note Block should have played one time", successBlock) + + if (TestEvents.triggeredNoteBlocks.getOrDefault(context.absolutePos(failBlock), 0) != 0) + context.fail("Note Block should not have played", failBlock) + } + } + + @GameTest(timeoutTicks = 300) + fun minecraftNoteBlock_Triggering_Allay(context: GameTestHelper) = context.sequence { + // test if playNote triggers an allay + // related issue: https://github.com/IntelligenceModding/AdvancedPeripherals/issues/603 + + val item = Items.DIAMOND + var allay: Allay? = null + thenExecute { + allay = context.spawn(EntityType.ALLAY, 2, 3, 2) + allay?.setItemInHand(InteractionHand.MAIN_HAND, ItemStack(item)) + + context.spawnItem(item, 2f, 3f, 2f) + } + + thenWaitUntil { context.assertEntityNotPresent(EntityType.ITEM) } + thenWaitUntil { + if (allay?.inventory?.getItem(0)?.count != 1) + context.fail("Expected Allay to pick up item") + } + thenOnComputer { callPeripheral("left", "playNote") } + thenWaitUntil { context.assertEntityPresent(EntityType.ITEM) } + thenWaitUntil { + if (allay?.inventory?.getItem(0)?.count != 0) + context.fail("Expected Allay to drop item") + } + } + +} \ No newline at end of file diff --git a/src/testMod/kotlin/de/srendi/advancedperipherals/test/PeripheralTest.kt b/src/testMod/kotlin/de/srendi/advancedperipherals/test/PeripheralTest.kt index edc1b0b38..928892033 100644 --- a/src/testMod/kotlin/de/srendi/advancedperipherals/test/PeripheralTest.kt +++ b/src/testMod/kotlin/de/srendi/advancedperipherals/test/PeripheralTest.kt @@ -37,4 +37,19 @@ class PeripheralTest { thenComputerOk(); } + @GameTest + fun nbtStorage(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest(timeoutTicks = 300) + fun rsIntegrator(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + + @GameTest(timeoutTicks = 300) + fun geoScanner(context: GameTestHelper) = context.sequence { + thenComputerOk(); + } + } \ No newline at end of file diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaflower.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaflower.lua new file mode 100644 index 000000000..911e8144a --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaflower.lua @@ -0,0 +1,41 @@ +--- +--- Advanced Peripherals tests for the Botania integration on Flowers +--- Covers `getMana`, `getMaxMana`, `isFloating`, +--- `isOnEnchantedSoil`, `isEmpty`, `isFull` +--- + +-- Test for Entropinnyum (Flower has full mana store and is on enchanted soil) +test.eq("manaFlower", peripheral.getType("left"), "Peripheral should be manaFlower") +entropinnyum = peripheral.wrap("left") +test.assert(entropinnyum, "Peripheral not found") + +test.eq(entropinnyum.getMaxMana(), entropinnyum.getMana(), "Entropinnyum should have full mana") +test.eq(6500, entropinnyum.getMaxMana(), "Entropinnyum should have a max mana of 6500") +test.assert(entropinnyum.isOnEnchantedSoil(), "Entropinnyum should be on enchanted soil") +test.assert(not entropinnyum.isFloating(), "Entropinnyum should not be floating") +-- test.assert(entropinnyum.isFull(), "Entropinnyum should be full") TODO: uncomment for 1.20.1 AP versions +-- test.assert(not entropinnyum.isEmpty(), "Entropinnyum should not be empty") TODO: uncomment for 1.20.1 AP versions + +-- Test for Endoflame (Flower has no mana stored and is on normal soil) +test.eq("manaFlower", peripheral.getType("right"), "Peripheral should be manaFlower") +endoflame = peripheral.wrap("right") +test.assert(endoflame, "Peripheral not found") + +test.eq(0, endoflame.getMana(), "Endoflame should have no mana") +test.eq(300, endoflame.getMaxMana(), "Endoflame should have a max mana of 300") +test.assert(not endoflame.isOnEnchantedSoil(), "Endoflame should not be on enchanted soil") +test.assert(not endoflame.isFloating(), "Endoflame should not be floating") +-- test.assert(not endoflame.isFull(), "Endoflame should not be full") TODO: uncomment for 1.20.1 AP versions +-- test.assert(endoflame.isEmpty(), "Endoflame should be empty") TODO: uncomment for 1.20.1 AP versions + +-- Test for Kekimurus (Flower has 1800 mana stored and is floating) +test.eq("manaFlower", peripheral.getType("back"), "Peripheral should be manaFlower") +kekimurus = peripheral.wrap("back") +test.assert(kekimurus, "Peripheral not found") + +test.eq(1800, kekimurus.getMana(), "Kekimurus should have 1800 mana") +test.eq(9001, kekimurus.getMaxMana(), "Kekimurus should have a max mana of 9001") +test.assert(not kekimurus.isOnEnchantedSoil(), "Kekimurus should not be on enchanted soil") +test.assert(kekimurus.isFloating(), "Kekimurus should be floating") +-- test.assert(not kekimurus.isFull(), "Kekimurus should not be full") TODO: uncomment for 1.20.1 AP versions +-- test.assert(not kekimurus.isEmpty(), "Kekimurus should not be empty") TODO: uncomment for 1.20.1 AP versions diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniamanapool.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniamanapool.lua new file mode 100644 index 000000000..a7487ac3a --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniamanapool.lua @@ -0,0 +1,40 @@ +--- +--- Advanced Peripherals tests for the Botania integration on Mana Pools +--- Covers `getMana`, `getMaxMana`, `getManaNeeded`, +--- `isEmpty`, `isFull` +--- + +-- TODO Add tests for canChargeItem, hasItems and getItems in 1.20.1 AP versions + +-- Test Fabulous Mana Pool (should be empty) +test.eq("manaPool", peripheral.getType("left"), "Peripheral should be manaPool") +fabulous = peripheral.wrap("left") +test.assert(fabulous, "Peripheral not found") + +test.eq(0, fabulous.getMana(), "Mana should be 0") +test.eq(1000000, fabulous.getMaxMana(), "Max mana should be 1000000") +test.eq(1000000, fabulous.getManaNeeded(), "Mana needed should be 1000000") +-- test.assert(fabulous.isEmpty(), "Mana pool should be empty") TODO method currently not implemented +test.assert(not fabulous.isFull(), "Mana pool should not be full") + +-- Test Mana Pool (should have 36000 mana) +test.eq("manaPool", peripheral.getType("right"), "Peripheral should be manaPool") +manaPool = peripheral.wrap("right") +test.assert(manaPool, "Peripheral not found") + +test.eq(36000, manaPool.getMana(), "Mana should be 36000") +test.eq(1000000, manaPool.getMaxMana(), "Max mana should be 1000000") +test.eq(964000, manaPool.getManaNeeded(), "Mana needed should be 964000") +-- test.assert(not manaPool.isEmpty(), "Mana pool should not be empty") TODO method currently not implemented +test.assert(not manaPool.isFull(), "Mana pool should not be full") + +-- Test Creative Mana Pool (should have 1000000 mana) +test.eq("manaPool", peripheral.getType("back"), "Peripheral should be manaPool") +creative = peripheral.wrap("back") +test.assert(creative, "Peripheral not found") + +test.eq(1000000, creative.getMana(), "Mana should be 1000000") +test.eq(1000000, creative.getMaxMana(), "Max mana should be 1000000") +test.eq(0, creative.getManaNeeded(), "Mana needed should be 0") +-- test.assert(not creative.isEmpty(), "Mana pool should not be empty") TODO method currently not implemented +test.assert(creative.isFull(), "Mana pool should be full") diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaspreader.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaspreader.lua new file mode 100644 index 000000000..e72424f24 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.botaniaspreader.lua @@ -0,0 +1,66 @@ +--- +--- Advanced Peripherals tests for the Botania integration on Mana Spreaders +--- Covers `getMana`, `getMaxMana`, `getVariant`, +--- `isEmpty`, `isFull`, `getBounding` +--- + +-- TODO Add tests for hasLens and getLens in 1.20.1 AP versions + +-- Test basic Mana Spreader that is empty and directed towards a Mana Pool +test.eq("manaSpreader", peripheral.getType("left"), "Peripheral should be manaSpreader") +spreader = peripheral.wrap("left") +test.assert(spreader, "Peripheral not found") + +test.eq(0, spreader.getMana(), "Mana should be 0") +test.eq(1000, spreader.getMaxMana(), "Max mana should be 1000") +test.eq("MANA", spreader.getVariant(), "Variant should be MANA") +-- test.assert(spreader.isEmpty(), "Mana Spreader should be empty") TODO: method returns the wrong value currently +test.assert(not spreader.isFull(), "Mana Spreader should not be full") + +bounding = spreader.getBounding() +computerPos = test.getComputerPosition() +test.assert(bounding, "Spreader binding should be returned") +test.assert(computerPos, "Computer position should be returned") + +test.eq(computerPos.x + 1, bounding.x, "Bounding x should be set to Mana pool (+1 relative to computer)") +test.eq(computerPos.y, bounding.y, "Bounding y should be set to Mana pool (same as computer)") +test.eq(computerPos.z - 1, bounding.z, "Bounding z should be set to Mana pool (-1 relative to computer") + +-- Test Gaia Mana Spreader that is full +test.eq("manaSpreader", peripheral.getType("right"), "Peripheral should be manaSpreader") +gaiaSpreader = peripheral.wrap("right") +test.assert(gaiaSpreader, "Peripheral not found") + +test.eq(6400, gaiaSpreader.getMana(), "Mana should be 6400") +test.eq(6400, gaiaSpreader.getMaxMana(), "Max mana should be 6400") +test.eq("GAIA", gaiaSpreader.getVariant(), "Variant should be GAIA") +-- test.assert(not gaiaSpreader.isEmpty(), "Mana Spreader should not be empty") TODO: method returns the wrong value currently +test.assert(gaiaSpreader.isFull(), "Mana Spreader should be full") + +test.assert(not gaiaSpreader.getBounding(), "Mana Spreader should not be bound to anything") + +-- Test Elven Mana Spreader that has 177 mana +test.eq("manaSpreader", peripheral.getType("back"), "Peripheral should be manaSpreader") +elvenSpreader = peripheral.wrap("back") +test.assert(elvenSpreader, "Peripheral not found") + +test.eq(177, elvenSpreader.getMana(), "Mana should be 177") +test.eq(1000, elvenSpreader.getMaxMana(), "Max mana should be 1000") +test.eq("ELVEN", elvenSpreader.getVariant(), "Variant should be ELVEN") +-- test.assert(not elvenSpreader.isEmpty(), "Mana Spreader should not be empty") TODO: method returns the wrong value currently +test.assert(not elvenSpreader.isFull(), "Mana Spreader should not be full") + +test.assert(not elvenSpreader.getBounding(), "Mana Spreader should not be bound to anything") + +-- Test Pulse Mana Spreader that is empty +test.eq("manaSpreader", peripheral.getType("top"), "Peripheral should be manaSpreader") +pulseSpreader = peripheral.wrap("top") +test.assert(pulseSpreader, "Peripheral not found") + +test.eq(0, pulseSpreader.getMana(), "Mana should be 0") +test.eq(1000, pulseSpreader.getMaxMana(), "Max mana should be 1000") +test.eq("REDSTONE", pulseSpreader.getVariant(), "Variant should be REDSTONE") +-- test.assert(pulseSpreader.isEmpty(), "Mana Spreader should be empty") TODO: method returns the wrong value currently +test.assert(not pulseSpreader.isFull(), "Mana Spreader should not be full") + +test.assert(not pulseSpreader.getBounding(), "Mana Spreader should not be bound to anything") diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftbeacon.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftbeacon.lua new file mode 100644 index 000000000..ee97dc0a4 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftbeacon.lua @@ -0,0 +1,34 @@ +--- +--- Advanced Peripherals tests for the Minecraft integration on Beacons +--- Covers `getLevel`, `getPrimaryEffect`, `getSecondaryEffect` +--- + +-- Wait until the beacon structure is formed +sleep(4) + +-- Test left beacon, level 4, primary and secondary effect set to haste +test.eq("beacon", peripheral.getType("left"), "Peripheral should be beacon") +beacon = peripheral.wrap("left") +test.assert(beacon, "Peripheral not found") + +test.eq(4, beacon.getLevel(), "Level should be 4") +test.eq("effect.minecraft.haste", beacon.getPrimaryEffect(), "Primary effect should be haste") +test.eq("effect.minecraft.haste", beacon.getSecondaryEffect(), "Secondary effect should be haste") + +-- Test right beacon, level 4, primary effect set to speed, secondary effect not set +test.eq("beacon", peripheral.getType("right"), "Peripheral should be beacon") +beacon = peripheral.wrap("right") +test.assert(beacon, "Peripheral not found") + +test.eq(4, beacon.getLevel(), "Level should be 4") +test.eq("effect.minecraft.speed", beacon.getPrimaryEffect(), "Primary effect should be haste") +test.eq("none", beacon.getSecondaryEffect(), "Secondary effect should be none") + +-- Test top beacon, level 0, primary and secondary effect not set +test.eq("beacon", peripheral.getType("top"), "Peripheral should be beacon") +beacon = peripheral.wrap("top") +test.assert(beacon, "Peripheral not found") + +test.eq(0, beacon.getLevel(), "Level should be 0") +test.eq("none", beacon.getPrimaryEffect(), "Primary effect should be none") +test.eq("none", beacon.getSecondaryEffect(), "Secondary effect should be none") diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftnoteblock.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftnoteblock.lua new file mode 100644 index 000000000..088ac2687 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/modintegrtest.minecraftnoteblock.lua @@ -0,0 +1,24 @@ +--- +--- Advanced Peripherals tests for the Minecraft integration on Note Blocks +--- Covers `playNote`, `getNote`, `changeNoteBy`, `changeNote` +--- + +test.eq("noteBlock", peripheral.getType("left"), "Peripheral should be noteBlock") +noteBlock = peripheral.wrap("left") +test.assert(noteBlock, "Peripheral not found") + +test.eq(4, noteBlock.getNote(), "Note should be 4") +test.eq(24, noteBlock.changeNoteBy(24), "Note should be 24 after setting it to 24") +test.eq(24, noteBlock.getNote(), "Note should be 24") +test.eq(0, noteBlock.changeNote(), "Note should be 0 after cycling it") +test.eq(0, noteBlock.getNote(), "Note should be 0") +test.eq(1, noteBlock.changeNote(), "Note should be 1 after cycling it") +test.eq(1, noteBlock.getNote(), "Note should be 1") +noteBlock.playNote() + +-- this note block has a block above it, so it should not play a note +test.eq("noteBlock", peripheral.getType("right"), "Peripheral should be noteBlock") +silentNoteBlock = peripheral.wrap("right") +test.assert(silentNoteBlock, "Peripheral not found") + +silentNoteBlock.playNote() \ No newline at end of file diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.geoscanner.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.geoscanner.lua new file mode 100644 index 000000000..455d37b85 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.geoscanner.lua @@ -0,0 +1,83 @@ +--- +--- Advanced Peripherals Geo Scanner tests +--- Covers `getFuelLevel`, `getMaxFuelLevel`, `cost`, +--- `scan`, `chunkAnalyze`, `getOperationCooldown` +--- + +-- TODO: replace getOperationCooldown with getScanCooldown once the function is implemented + +function testBlockAt(result, x, y, z, expectedName, expectedTag) + local blockEntry = nil + for _, entry in ipairs(result) do + if entry.x == x and entry.y == y and entry.z == z then + blockEntry = entry + break + end + end + + test.assert(blockEntry, ("Block at %d, %d, %d not found"):format(x, y, z)) + test.eq(expectedName, blockEntry["name"], ("Block at %d, %d, %d has the wrong name"):format(x, y, z)) + + local tagFound = false + for _, tag in ipairs(blockEntry["tags"]) do + if tag == expectedTag then + tagFound = true + break + end + end + test.assert(tagFound, ("Block at %d, %d, %d has the wrong tags"):format(x, y, z)) +end + +scanner = peripheral.find("geoScanner") +test.assert(scanner, "Peripheral not found") + +config = scanner.getConfiguration() +fuelEnabled = scanner.getMaxFuelLevel() > 0 + +-- Test scan costs +test.eq(0, scanner.cost(1), "Scans with a range of 1 should be free") +test.eq(0, scanner.cost(config["scanBlocks"]["maxFreeRadius"]), "Scans with the maximum free radius should be free") +test.assert(scanner.cost(config["scanBlocks"]["maxFreeRadius"] + 1) > 0, "Scans with a radius larger than the maximum free radius should cost fuel") + +test.assert(scanner.cost(config["scanBlocks"]["maxCostRadius"]) > 0, "Scans with the maximum cost radius should cost fuel") +test.assert(scanner.cost(config["scanBlocks"]["maxCostRadius"] + 1) == nil, "Scans with a radius larger than the maximum cost radius should not be possible") + +-- Test scan results +scanResult = scanner.scan(1) +test.assert(scanResult, "Scan result should not be nil") + +currentCooldown = scanner.getOperationCooldown("scanBlocks") +test.assert(currentCooldown > 0 and currentCooldown <= config["scanBlocks"]["cooldown"], "Cooldown should be active after a scan") + +testBlockAt(scanResult, 0, 0, 0, "advancedperipherals:geo_scanner", "minecraft:block/minecraft:mineable/pickaxe") +testBlockAt(scanResult, 0, -1, 0, "computercraft:computer_advanced", "minecraft:block/minecraft:mineable/pickaxe") +testBlockAt(scanResult, 0, 1, 0, "minecraft:iron_ore", "minecraft:block/forge:ores/iron") +testBlockAt(scanResult, 0, -1, 1, "minecraft:polished_diorite", "minecraft:block/minecraft:mineable/pickaxe") +testBlockAt(scanResult, 0, -1, -1, "minecraft:polished_andesite", "minecraft:block/minecraft:mineable/pickaxe") +testBlockAt(scanResult, 1, -1, 0, "minecraft:polished_granite", "minecraft:block/minecraft:mineable/pickaxe") + +while scanner.getOperationCooldown("scanBlocks") > 0 do + sleep(0.25) +end + +-- Test chunk analysis with ores +chunkResult = scanner.chunkAnalyze() + +currentCooldown = scanner.getOperationCooldown("scanBlocks") +test.assert(currentCooldown > 0 and currentCooldown <= config["scanBlocks"]["cooldown"], "Cooldown should be active after a chunk analysis") + +test.assert(chunkResult, "Chunk analysis result should not be nil") +test.eq(1, chunkResult["minecraft:iron_ore"], "Iron ore count should be 1") +test.eq(2, chunkResult["minecraft:gold_ore"], "Gold ore count should be 2") +test.eq(3, chunkResult["minecraft:diamond_ore"], "Diamond ore count should be 3") + +while scanner.getOperationCooldown("scanBlocks") > 0 do + sleep(0.25) +end + +-- Test fuel consumption +if fuelEnabled then + scanResult = scanner.scan(config["scanBlocks"]["maxFreeRadius"] + 1) + test.assert(scanResult, "Scan result should not be nil") + test.eq(scanner.getMaxFuelLevel() - scanner.cost(config["scanBlocks"]["maxFreeRadius"] + 1), scanner.getFuelLevel(), "Fuel level should be reduced after a scan") +end diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.nbtstorage.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.nbtstorage.lua new file mode 100644 index 000000000..12017d4b1 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.nbtstorage.lua @@ -0,0 +1,38 @@ +--- +--- Advanced Peripherals NBT Storage tests +--- Covers `read`, `writeJson`, `writeTable` +--- + +TEST_STRING = "Hello, World!" +TEST_NUMBER = 42 +TEST_FLOAT = 3.14 +TEST_VALUE = "AP Game Test" +TEST_JSON_VALUE = "AP Game Test JSON" + +test.eq("nbtStorage", peripheral.getType("left"), "Peripheral should be nbtStorage") +storage = peripheral.wrap("left") +test.assert(storage, "Peripheral not found") + +-- Read data from the test structure and verify it +stored = storage.read() +test.assert(stored, "Storage should not be nil") +test.eq(TEST_STRING, stored["test_string"], ("Stored string should be '%s'"):format(TEST_STRING)) +test.eq(TEST_NUMBER, stored["test_number"], ("Stored number should be %d"):format(TEST_NUMBER)) +test.eq(TEST_FLOAT, stored["test_float"], ("Stored float should be %f"):format(TEST_FLOAT)) + +-- Write a table to the storage and verify it +storage.writeTable({ + test_value = TEST_VALUE, +}) + +stored = storage.read() +test.assert(stored, "Storage should not be nil") +test.eq(TEST_VALUE, stored["test_value"], ("Stored value should be '%s'"):format(TEST_VALUE)) + +-- Write a JSON string to the storage and verify it +success = storage.writeJson(textutils.serializeJSON({test_value = TEST_JSON_VALUE})) +test.assert(success, "Storage writeJson should return true") + +stored = storage.read() +test.assert(stored, "Storage should not be nil") +test.eq(TEST_JSON_VALUE, stored["test_value"], ("Stored value should be '%s'"):format(TEST_JSON_VALUE)) diff --git a/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.rsintegrator.lua b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.rsintegrator.lua new file mode 100644 index 000000000..36c4c0d8b --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/computer/tests/peripheraltest.rsintegrator.lua @@ -0,0 +1,37 @@ +--- +--- Advanced Peripherals Redstone Integrator tests +--- Covers `getInput`, `getOutput`, `getAnalogInput`, +--- `getAnalogOutput`, `setOutput`, `setAnalogOutput` +--- + +test.eq("redstoneIntegrator", peripheral.getType("left"), "Peripheral should be redstoneIntegrator") +test.eq("redstoneIntegrator", peripheral.getType("right"), "Peripheral should be redstoneIntegrator") + +first = peripheral.wrap("left") +test.assert(first, "Peripheral not found") + +second = peripheral.wrap("right") +test.assert(second, "Peripheral not found") + +-- Test input for Redstone Block (full strength) +test.eq(15, second.getAnalogInput("back"), "Analog input should be 15 for Redstone Block") +test.assert(second.getInput("back"), "Digital input should be true for Redstone Block") + +-- Test output on the right integrator +second.setOutput("front", true) +sleep(1) +test.assert(second.getOutput("front"), "Digital output should be true") + +-- Test analog input on the left integrator (wired from the right integrator) +test.eq(13, first.getAnalogInput("front"), "Analog input should be 13") + +-- Test analog output on the right integrator +second.setAnalogOutput("front", 10) +sleep(1) +test.eq(10, second.getAnalogOutput("front"), "Analog output should be 10") + +-- Test analog input on the left integrator (wired from the right integrator) +test.eq(8, first.getAnalogInput("front"), "Analog input should be 8") + +-- Reset redstone output +second.setOutput("front", false) diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaflower.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaflower.snbt new file mode 100644 index 000000000..02829a44b --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaflower.snbt @@ -0,0 +1,142 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "botania:enchanted_soil"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:grass_block{snowy:false}"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "botania:entropinnyum", nbt: {ForgeCaps: {}, id: "botania:entropinnyum", mana: 6500, ticksExisted: 52900}}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "modintegrtest.botaniaflower", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "botania:endoflame", nbt: {ForgeCaps: {}, burnTime: 0, id: "botania:endoflame", mana: 0, ticksExisted: 9109}}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "botania:floating_kekimurus{waterlogged:false}", nbt: {ForgeCaps: {}, floating: {islandType: "GRASS"}, id: "botania:kekimurus", mana: 1800, ticksExisted: 26663}}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "botania:enchanted_soil", + "minecraft:grass_block{snowy:false}", + "minecraft:air", + "botania:entropinnyum", + "computercraft:computer_advanced{facing:west,state:blinking}", + "botania:endoflame", + "botania:floating_kekimurus{waterlogged:false}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniamanapool.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniamanapool.snbt new file mode 100644 index 000000000..0952833af --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniamanapool.snbt @@ -0,0 +1,140 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "botania:fabulous_pool{color:none,waterlogged:false}", nbt: {ForgeCaps: {}, canAccept: 1b, canSpare: 1b, id: "botania:mana_pool", inputKey: "", mana: 0, manaCap: 1000000, outputKey: "", outputting: 0b}}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "modintegrtest.botaniamanapool", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "botania:mana_pool{color:none,waterlogged:false}", nbt: {ForgeCaps: {}, canAccept: 1b, canSpare: 1b, id: "botania:mana_pool", inputKey: "", mana: 36000, manaCap: 1000000, outputKey: "", outputting: 0b}}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "botania:creative_pool{color:none,waterlogged:false}", nbt: {ForgeCaps: {}, canAccept: 1b, canSpare: 1b, id: "botania:mana_pool", inputKey: "", mana: 1000000, manaCap: 1000000, outputKey: "", outputting: 1b}}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:air", + "botania:fabulous_pool{color:none,waterlogged:false}", + "computercraft:computer_advanced{facing:west,state:blinking}", + "botania:mana_pool{color:none,waterlogged:false}", + "botania:creative_pool{color:none,waterlogged:false}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaspreader.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaspreader.snbt new file mode 100644 index 000000000..4e42dbe4a --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.botaniaspreader.snbt @@ -0,0 +1,142 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "botania:mana_spreader{has_scaffolding:false,waterlogged:false}", nbt: {ForgeCaps: {}, Items: [], canShootBurst: 1b, forceClientBindingX: 10, forceClientBindingY: 60, forceClientBindingZ: -9, id: "botania:mana_spreader", inputKey: "", lastPingbackX: 0.0d, lastPingbackY: -2.147483648E9d, lastPingbackZ: 0.0d, mana: 0, mapmakerOverrideEnabled: 0b, mmForcedColor: 2162464, mmForcedGravity: 0.0f, mmForcedManaLossPerTick: 4.0f, mmForcedManaPayload: 160, mmForcedTicksBeforeManaLoss: 60, mmForcedVelocityMultiplier: 1.0f, outputKey: "", paddingColor: -1, pingbackTicks: 0, requestUpdate: 0b, rotationX: 180.0f, rotationY: -14.036243f, uuid: [I; -1335544995, 1721978540, -1824636534, -1356366853]}}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "modintegrtest.botaniaspreader", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "botania:gaia_spreader{has_scaffolding:false,waterlogged:false}", nbt: {ForgeCaps: {}, Items: [], canShootBurst: 1b, forceClientBindingX: 0, forceClientBindingY: -2147483648, forceClientBindingZ: 0, id: "botania:mana_spreader", inputKey: "", lastPingbackX: 0.0d, lastPingbackY: -2.147483648E9d, lastPingbackZ: 0.0d, mana: 6400, mapmakerOverrideEnabled: 0b, mmForcedColor: 2162464, mmForcedGravity: 0.0f, mmForcedManaLossPerTick: 4.0f, mmForcedManaPayload: 160, mmForcedTicksBeforeManaLoss: 60, mmForcedVelocityMultiplier: 1.0f, outputKey: "", paddingColor: -1, pingbackTicks: 0, requestUpdate: 0b, rotationX: 0.0f, rotationY: 90.0f, uuid: [I; 488019582, 1505248039, -1662086631, -1403515204]}}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "botania:mana_pool{color:none,waterlogged:false}", nbt: {ForgeCaps: {}, canAccept: 1b, canSpare: 1b, id: "botania:mana_pool", inputKey: "", mana: 0, manaCap: 1000000, outputKey: "", outputting: 0b}}, + {pos: [3, 1, 2], state: "botania:elven_spreader{has_scaffolding:false,waterlogged:false}", nbt: {ForgeCaps: {}, Items: [], canShootBurst: 1b, forceClientBindingX: 0, forceClientBindingY: -2147483648, forceClientBindingZ: 0, id: "botania:mana_spreader", inputKey: "", lastPingbackX: 0.0d, lastPingbackY: -2.147483648E9d, lastPingbackZ: 0.0d, mana: 177, mapmakerOverrideEnabled: 0b, mmForcedColor: 2162464, mmForcedGravity: 0.0f, mmForcedManaLossPerTick: 4.0f, mmForcedManaPayload: 160, mmForcedTicksBeforeManaLoss: 60, mmForcedVelocityMultiplier: 1.0f, outputKey: "", paddingColor: -1, pingbackTicks: 0, requestUpdate: 0b, rotationX: 0.0f, rotationY: 90.0f, uuid: [I; -360645062, -1521991436, -1469095441, -381296848]}}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "botania:redstone_spreader{has_scaffolding:false,waterlogged:false}", nbt: {ForgeCaps: {}, Items: [], canShootBurst: 1b, forceClientBindingX: 0, forceClientBindingY: -2147483648, forceClientBindingZ: 0, id: "botania:mana_spreader", inputKey: "", lastPingbackX: 0.0d, lastPingbackY: -2.147483648E9d, lastPingbackZ: 0.0d, mana: 0, mapmakerOverrideEnabled: 0b, mmForcedColor: 2162464, mmForcedGravity: 0.0f, mmForcedManaLossPerTick: 4.0f, mmForcedManaPayload: 160, mmForcedTicksBeforeManaLoss: 60, mmForcedVelocityMultiplier: 1.0f, outputKey: "", paddingColor: -1, pingbackTicks: 0, requestUpdate: 0b, rotationX: 0.0f, rotationY: 90.0f, uuid: [I; 758151075, -302429323, -1148181277, 1481371264]}}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:air", + "botania:mana_spreader{has_scaffolding:false,waterlogged:false}", + "computercraft:computer_advanced{facing:west,state:blinking}", + "botania:gaia_spreader{has_scaffolding:false,waterlogged:false}", + "botania:mana_pool{color:none,waterlogged:false}", + "botania:elven_spreader{has_scaffolding:false,waterlogged:false}", + "botania:redstone_spreader{has_scaffolding:false,waterlogged:false}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftbeacon.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftbeacon.snbt new file mode 100644 index 000000000..64f2fd44a --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftbeacon.snbt @@ -0,0 +1,707 @@ +{ + DataVersion: 3120, + size: [11, 7, 9], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [5, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [6, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [7, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [8, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [9, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 5], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 6], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 7], state: "minecraft:polished_andesite"}, + {pos: [10, 0, 8], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:iron_block"}, + {pos: [0, 1, 1], state: "minecraft:iron_block"}, + {pos: [0, 1, 2], state: "minecraft:iron_block"}, + {pos: [0, 1, 3], state: "minecraft:iron_block"}, + {pos: [0, 1, 4], state: "minecraft:iron_block"}, + {pos: [0, 1, 5], state: "minecraft:iron_block"}, + {pos: [0, 1, 6], state: "minecraft:iron_block"}, + {pos: [0, 1, 7], state: "minecraft:iron_block"}, + {pos: [0, 1, 8], state: "minecraft:iron_block"}, + {pos: [1, 1, 0], state: "minecraft:iron_block"}, + {pos: [1, 1, 1], state: "minecraft:iron_block"}, + {pos: [1, 1, 2], state: "minecraft:iron_block"}, + {pos: [1, 1, 3], state: "minecraft:iron_block"}, + {pos: [1, 1, 4], state: "minecraft:iron_block"}, + {pos: [1, 1, 5], state: "minecraft:iron_block"}, + {pos: [1, 1, 6], state: "minecraft:iron_block"}, + {pos: [1, 1, 7], state: "minecraft:iron_block"}, + {pos: [1, 1, 8], state: "minecraft:iron_block"}, + {pos: [2, 1, 0], state: "minecraft:iron_block"}, + {pos: [2, 1, 1], state: "minecraft:iron_block"}, + {pos: [2, 1, 2], state: "minecraft:iron_block"}, + {pos: [2, 1, 3], state: "minecraft:iron_block"}, + {pos: [2, 1, 4], state: "minecraft:iron_block"}, + {pos: [2, 1, 5], state: "minecraft:iron_block"}, + {pos: [2, 1, 6], state: "minecraft:iron_block"}, + {pos: [2, 1, 7], state: "minecraft:iron_block"}, + {pos: [2, 1, 8], state: "minecraft:iron_block"}, + {pos: [3, 1, 0], state: "minecraft:iron_block"}, + {pos: [3, 1, 1], state: "minecraft:iron_block"}, + {pos: [3, 1, 2], state: "minecraft:iron_block"}, + {pos: [3, 1, 3], state: "minecraft:iron_block"}, + {pos: [3, 1, 4], state: "minecraft:iron_block"}, + {pos: [3, 1, 5], state: "minecraft:iron_block"}, + {pos: [3, 1, 6], state: "minecraft:iron_block"}, + {pos: [3, 1, 7], state: "minecraft:iron_block"}, + {pos: [3, 1, 8], state: "minecraft:iron_block"}, + {pos: [4, 1, 0], state: "minecraft:iron_block"}, + {pos: [4, 1, 1], state: "minecraft:iron_block"}, + {pos: [4, 1, 2], state: "minecraft:iron_block"}, + {pos: [4, 1, 3], state: "minecraft:iron_block"}, + {pos: [4, 1, 4], state: "minecraft:iron_block"}, + {pos: [4, 1, 5], state: "minecraft:iron_block"}, + {pos: [4, 1, 6], state: "minecraft:iron_block"}, + {pos: [4, 1, 7], state: "minecraft:iron_block"}, + {pos: [4, 1, 8], state: "minecraft:iron_block"}, + {pos: [5, 1, 0], state: "minecraft:iron_block"}, + {pos: [5, 1, 1], state: "minecraft:iron_block"}, + {pos: [5, 1, 2], state: "minecraft:iron_block"}, + {pos: [5, 1, 3], state: "minecraft:iron_block"}, + {pos: [5, 1, 4], state: "minecraft:iron_block"}, + {pos: [5, 1, 5], state: "minecraft:iron_block"}, + {pos: [5, 1, 6], state: "minecraft:iron_block"}, + {pos: [5, 1, 7], state: "minecraft:iron_block"}, + {pos: [5, 1, 8], state: "minecraft:iron_block"}, + {pos: [6, 1, 0], state: "minecraft:iron_block"}, + {pos: [6, 1, 1], state: "minecraft:iron_block"}, + {pos: [6, 1, 2], state: "minecraft:iron_block"}, + {pos: [6, 1, 3], state: "minecraft:iron_block"}, + {pos: [6, 1, 4], state: "minecraft:iron_block"}, + {pos: [6, 1, 5], state: "minecraft:iron_block"}, + {pos: [6, 1, 6], state: "minecraft:iron_block"}, + {pos: [6, 1, 7], state: "minecraft:iron_block"}, + {pos: [6, 1, 8], state: "minecraft:iron_block"}, + {pos: [7, 1, 0], state: "minecraft:iron_block"}, + {pos: [7, 1, 1], state: "minecraft:iron_block"}, + {pos: [7, 1, 2], state: "minecraft:iron_block"}, + {pos: [7, 1, 3], state: "minecraft:iron_block"}, + {pos: [7, 1, 4], state: "minecraft:iron_block"}, + {pos: [7, 1, 5], state: "minecraft:iron_block"}, + {pos: [7, 1, 6], state: "minecraft:iron_block"}, + {pos: [7, 1, 7], state: "minecraft:iron_block"}, + {pos: [7, 1, 8], state: "minecraft:iron_block"}, + {pos: [8, 1, 0], state: "minecraft:iron_block"}, + {pos: [8, 1, 1], state: "minecraft:iron_block"}, + {pos: [8, 1, 2], state: "minecraft:iron_block"}, + {pos: [8, 1, 3], state: "minecraft:iron_block"}, + {pos: [8, 1, 4], state: "minecraft:iron_block"}, + {pos: [8, 1, 5], state: "minecraft:iron_block"}, + {pos: [8, 1, 6], state: "minecraft:iron_block"}, + {pos: [8, 1, 7], state: "minecraft:iron_block"}, + {pos: [8, 1, 8], state: "minecraft:iron_block"}, + {pos: [9, 1, 0], state: "minecraft:iron_block"}, + {pos: [9, 1, 1], state: "minecraft:iron_block"}, + {pos: [9, 1, 2], state: "minecraft:iron_block"}, + {pos: [9, 1, 3], state: "minecraft:iron_block"}, + {pos: [9, 1, 4], state: "minecraft:iron_block"}, + {pos: [9, 1, 5], state: "minecraft:iron_block"}, + {pos: [9, 1, 6], state: "minecraft:iron_block"}, + {pos: [9, 1, 7], state: "minecraft:iron_block"}, + {pos: [9, 1, 8], state: "minecraft:iron_block"}, + {pos: [10, 1, 0], state: "minecraft:iron_block"}, + {pos: [10, 1, 1], state: "minecraft:iron_block"}, + {pos: [10, 1, 2], state: "minecraft:iron_block"}, + {pos: [10, 1, 3], state: "minecraft:iron_block"}, + {pos: [10, 1, 4], state: "minecraft:iron_block"}, + {pos: [10, 1, 5], state: "minecraft:iron_block"}, + {pos: [10, 1, 6], state: "minecraft:iron_block"}, + {pos: [10, 1, 7], state: "minecraft:iron_block"}, + {pos: [10, 1, 8], state: "minecraft:iron_block"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [0, 2, 5], state: "minecraft:air"}, + {pos: [0, 2, 6], state: "minecraft:air"}, + {pos: [0, 2, 7], state: "minecraft:air"}, + {pos: [0, 2, 8], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:iron_block"}, + {pos: [1, 2, 2], state: "minecraft:iron_block"}, + {pos: [1, 2, 3], state: "minecraft:iron_block"}, + {pos: [1, 2, 4], state: "minecraft:iron_block"}, + {pos: [1, 2, 5], state: "minecraft:iron_block"}, + {pos: [1, 2, 6], state: "minecraft:iron_block"}, + {pos: [1, 2, 7], state: "minecraft:iron_block"}, + {pos: [1, 2, 8], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:iron_block"}, + {pos: [2, 2, 2], state: "minecraft:iron_block"}, + {pos: [2, 2, 3], state: "minecraft:iron_block"}, + {pos: [2, 2, 4], state: "minecraft:iron_block"}, + {pos: [2, 2, 5], state: "minecraft:iron_block"}, + {pos: [2, 2, 6], state: "minecraft:iron_block"}, + {pos: [2, 2, 7], state: "minecraft:iron_block"}, + {pos: [2, 2, 8], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:iron_block"}, + {pos: [3, 2, 2], state: "minecraft:iron_block"}, + {pos: [3, 2, 3], state: "minecraft:iron_block"}, + {pos: [3, 2, 4], state: "minecraft:iron_block"}, + {pos: [3, 2, 5], state: "minecraft:iron_block"}, + {pos: [3, 2, 6], state: "minecraft:iron_block"}, + {pos: [3, 2, 7], state: "minecraft:iron_block"}, + {pos: [3, 2, 8], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:iron_block"}, + {pos: [4, 2, 2], state: "minecraft:iron_block"}, + {pos: [4, 2, 3], state: "minecraft:iron_block"}, + {pos: [4, 2, 4], state: "minecraft:iron_block"}, + {pos: [4, 2, 5], state: "minecraft:iron_block"}, + {pos: [4, 2, 6], state: "minecraft:iron_block"}, + {pos: [4, 2, 7], state: "minecraft:iron_block"}, + {pos: [4, 2, 8], state: "minecraft:air"}, + {pos: [5, 2, 0], state: "minecraft:air"}, + {pos: [5, 2, 1], state: "minecraft:iron_block"}, + {pos: [5, 2, 2], state: "minecraft:iron_block"}, + {pos: [5, 2, 3], state: "minecraft:iron_block"}, + {pos: [5, 2, 4], state: "minecraft:iron_block"}, + {pos: [5, 2, 5], state: "minecraft:iron_block"}, + {pos: [5, 2, 6], state: "minecraft:iron_block"}, + {pos: [5, 2, 7], state: "minecraft:iron_block"}, + {pos: [5, 2, 8], state: "minecraft:air"}, + {pos: [6, 2, 0], state: "minecraft:air"}, + {pos: [6, 2, 1], state: "minecraft:iron_block"}, + {pos: [6, 2, 2], state: "minecraft:iron_block"}, + {pos: [6, 2, 3], state: "minecraft:iron_block"}, + {pos: [6, 2, 4], state: "minecraft:iron_block"}, + {pos: [6, 2, 5], state: "minecraft:iron_block"}, + {pos: [6, 2, 6], state: "minecraft:iron_block"}, + {pos: [6, 2, 7], state: "minecraft:iron_block"}, + {pos: [6, 2, 8], state: "minecraft:air"}, + {pos: [7, 2, 0], state: "minecraft:air"}, + {pos: [7, 2, 1], state: "minecraft:iron_block"}, + {pos: [7, 2, 2], state: "minecraft:iron_block"}, + {pos: [7, 2, 3], state: "minecraft:iron_block"}, + {pos: [7, 2, 4], state: "minecraft:iron_block"}, + {pos: [7, 2, 5], state: "minecraft:iron_block"}, + {pos: [7, 2, 6], state: "minecraft:iron_block"}, + {pos: [7, 2, 7], state: "minecraft:iron_block"}, + {pos: [7, 2, 8], state: "minecraft:air"}, + {pos: [8, 2, 0], state: "minecraft:air"}, + {pos: [8, 2, 1], state: "minecraft:iron_block"}, + {pos: [8, 2, 2], state: "minecraft:iron_block"}, + {pos: [8, 2, 3], state: "minecraft:iron_block"}, + {pos: [8, 2, 4], state: "minecraft:iron_block"}, + {pos: [8, 2, 5], state: "minecraft:iron_block"}, + {pos: [8, 2, 6], state: "minecraft:iron_block"}, + {pos: [8, 2, 7], state: "minecraft:iron_block"}, + {pos: [8, 2, 8], state: "minecraft:air"}, + {pos: [9, 2, 0], state: "minecraft:air"}, + {pos: [9, 2, 1], state: "minecraft:iron_block"}, + {pos: [9, 2, 2], state: "minecraft:iron_block"}, + {pos: [9, 2, 3], state: "minecraft:iron_block"}, + {pos: [9, 2, 4], state: "minecraft:iron_block"}, + {pos: [9, 2, 5], state: "minecraft:iron_block"}, + {pos: [9, 2, 6], state: "minecraft:iron_block"}, + {pos: [9, 2, 7], state: "minecraft:iron_block"}, + {pos: [9, 2, 8], state: "minecraft:air"}, + {pos: [10, 2, 0], state: "minecraft:air"}, + {pos: [10, 2, 1], state: "minecraft:air"}, + {pos: [10, 2, 2], state: "minecraft:air"}, + {pos: [10, 2, 3], state: "minecraft:air"}, + {pos: [10, 2, 4], state: "minecraft:air"}, + {pos: [10, 2, 5], state: "minecraft:air"}, + {pos: [10, 2, 6], state: "minecraft:air"}, + {pos: [10, 2, 7], state: "minecraft:air"}, + {pos: [10, 2, 8], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [0, 3, 5], state: "minecraft:air"}, + {pos: [0, 3, 6], state: "minecraft:air"}, + {pos: [0, 3, 7], state: "minecraft:air"}, + {pos: [0, 3, 8], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 5], state: "minecraft:air"}, + {pos: [1, 3, 6], state: "minecraft:air"}, + {pos: [1, 3, 7], state: "minecraft:air"}, + {pos: [1, 3, 8], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:iron_block"}, + {pos: [2, 3, 3], state: "minecraft:iron_block"}, + {pos: [2, 3, 4], state: "minecraft:iron_block"}, + {pos: [2, 3, 5], state: "minecraft:iron_block"}, + {pos: [2, 3, 6], state: "minecraft:iron_block"}, + {pos: [2, 3, 7], state: "minecraft:air"}, + {pos: [2, 3, 8], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:iron_block"}, + {pos: [3, 3, 3], state: "minecraft:iron_block"}, + {pos: [3, 3, 4], state: "minecraft:iron_block"}, + {pos: [3, 3, 5], state: "minecraft:iron_block"}, + {pos: [3, 3, 6], state: "minecraft:iron_block"}, + {pos: [3, 3, 7], state: "minecraft:air"}, + {pos: [3, 3, 8], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:iron_block"}, + {pos: [4, 3, 3], state: "minecraft:iron_block"}, + {pos: [4, 3, 4], state: "minecraft:iron_block"}, + {pos: [4, 3, 5], state: "minecraft:iron_block"}, + {pos: [4, 3, 6], state: "minecraft:iron_block"}, + {pos: [4, 3, 7], state: "minecraft:air"}, + {pos: [4, 3, 8], state: "minecraft:air"}, + {pos: [5, 3, 0], state: "minecraft:air"}, + {pos: [5, 3, 1], state: "minecraft:air"}, + {pos: [5, 3, 2], state: "minecraft:iron_block"}, + {pos: [5, 3, 3], state: "minecraft:iron_block"}, + {pos: [5, 3, 4], state: "minecraft:iron_block"}, + {pos: [5, 3, 5], state: "minecraft:iron_block"}, + {pos: [5, 3, 6], state: "minecraft:iron_block"}, + {pos: [5, 3, 7], state: "minecraft:air"}, + {pos: [5, 3, 8], state: "minecraft:air"}, + {pos: [6, 3, 0], state: "minecraft:air"}, + {pos: [6, 3, 1], state: "minecraft:air"}, + {pos: [6, 3, 2], state: "minecraft:iron_block"}, + {pos: [6, 3, 3], state: "minecraft:iron_block"}, + {pos: [6, 3, 4], state: "minecraft:iron_block"}, + {pos: [6, 3, 5], state: "minecraft:iron_block"}, + {pos: [6, 3, 6], state: "minecraft:iron_block"}, + {pos: [6, 3, 7], state: "minecraft:air"}, + {pos: [6, 3, 8], state: "minecraft:air"}, + {pos: [7, 3, 0], state: "minecraft:air"}, + {pos: [7, 3, 1], state: "minecraft:air"}, + {pos: [7, 3, 2], state: "minecraft:iron_block"}, + {pos: [7, 3, 3], state: "minecraft:iron_block"}, + {pos: [7, 3, 4], state: "minecraft:iron_block"}, + {pos: [7, 3, 5], state: "minecraft:iron_block"}, + {pos: [7, 3, 6], state: "minecraft:iron_block"}, + {pos: [7, 3, 7], state: "minecraft:air"}, + {pos: [7, 3, 8], state: "minecraft:air"}, + {pos: [8, 3, 0], state: "minecraft:air"}, + {pos: [8, 3, 1], state: "minecraft:air"}, + {pos: [8, 3, 2], state: "minecraft:iron_block"}, + {pos: [8, 3, 3], state: "minecraft:iron_block"}, + {pos: [8, 3, 4], state: "minecraft:iron_block"}, + {pos: [8, 3, 5], state: "minecraft:iron_block"}, + {pos: [8, 3, 6], state: "minecraft:iron_block"}, + {pos: [8, 3, 7], state: "minecraft:air"}, + {pos: [8, 3, 8], state: "minecraft:air"}, + {pos: [9, 3, 0], state: "minecraft:air"}, + {pos: [9, 3, 1], state: "minecraft:air"}, + {pos: [9, 3, 2], state: "minecraft:air"}, + {pos: [9, 3, 3], state: "minecraft:air"}, + {pos: [9, 3, 4], state: "minecraft:air"}, + {pos: [9, 3, 5], state: "minecraft:air"}, + {pos: [9, 3, 6], state: "minecraft:air"}, + {pos: [9, 3, 7], state: "minecraft:air"}, + {pos: [9, 3, 8], state: "minecraft:air"}, + {pos: [10, 3, 0], state: "minecraft:air"}, + {pos: [10, 3, 1], state: "minecraft:air"}, + {pos: [10, 3, 2], state: "minecraft:air"}, + {pos: [10, 3, 3], state: "minecraft:air"}, + {pos: [10, 3, 4], state: "minecraft:air"}, + {pos: [10, 3, 5], state: "minecraft:air"}, + {pos: [10, 3, 6], state: "minecraft:air"}, + {pos: [10, 3, 7], state: "minecraft:air"}, + {pos: [10, 3, 8], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [0, 4, 5], state: "minecraft:air"}, + {pos: [0, 4, 6], state: "minecraft:air"}, + {pos: [0, 4, 7], state: "minecraft:air"}, + {pos: [0, 4, 8], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 5], state: "minecraft:air"}, + {pos: [1, 4, 6], state: "minecraft:air"}, + {pos: [1, 4, 7], state: "minecraft:air"}, + {pos: [1, 4, 8], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 5], state: "minecraft:air"}, + {pos: [2, 4, 6], state: "minecraft:air"}, + {pos: [2, 4, 7], state: "minecraft:air"}, + {pos: [2, 4, 8], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:iron_block"}, + {pos: [3, 4, 4], state: "minecraft:iron_block"}, + {pos: [3, 4, 5], state: "minecraft:iron_block"}, + {pos: [3, 4, 6], state: "minecraft:air"}, + {pos: [3, 4, 7], state: "minecraft:air"}, + {pos: [3, 4, 8], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:iron_block"}, + {pos: [4, 4, 4], state: "minecraft:iron_block"}, + {pos: [4, 4, 5], state: "minecraft:iron_block"}, + {pos: [4, 4, 6], state: "minecraft:air"}, + {pos: [4, 4, 7], state: "minecraft:air"}, + {pos: [4, 4, 8], state: "minecraft:air"}, + {pos: [5, 4, 0], state: "minecraft:air"}, + {pos: [5, 4, 1], state: "minecraft:air"}, + {pos: [5, 4, 2], state: "minecraft:air"}, + {pos: [5, 4, 3], state: "minecraft:iron_block"}, + {pos: [5, 4, 4], state: "minecraft:iron_block"}, + {pos: [5, 4, 5], state: "minecraft:iron_block"}, + {pos: [5, 4, 6], state: "minecraft:air"}, + {pos: [5, 4, 7], state: "minecraft:air"}, + {pos: [5, 4, 8], state: "minecraft:air"}, + {pos: [6, 4, 0], state: "minecraft:air"}, + {pos: [6, 4, 1], state: "minecraft:air"}, + {pos: [6, 4, 2], state: "minecraft:air"}, + {pos: [6, 4, 3], state: "minecraft:iron_block"}, + {pos: [6, 4, 4], state: "minecraft:iron_block"}, + {pos: [6, 4, 5], state: "minecraft:iron_block"}, + {pos: [6, 4, 6], state: "minecraft:air"}, + {pos: [6, 4, 7], state: "minecraft:air"}, + {pos: [6, 4, 8], state: "minecraft:air"}, + {pos: [7, 4, 0], state: "minecraft:air"}, + {pos: [7, 4, 1], state: "minecraft:air"}, + {pos: [7, 4, 2], state: "minecraft:air"}, + {pos: [7, 4, 3], state: "minecraft:iron_block"}, + {pos: [7, 4, 4], state: "minecraft:iron_block"}, + {pos: [7, 4, 5], state: "minecraft:iron_block"}, + {pos: [7, 4, 6], state: "minecraft:air"}, + {pos: [7, 4, 7], state: "minecraft:air"}, + {pos: [7, 4, 8], state: "minecraft:air"}, + {pos: [8, 4, 0], state: "minecraft:air"}, + {pos: [8, 4, 1], state: "minecraft:air"}, + {pos: [8, 4, 2], state: "minecraft:air"}, + {pos: [8, 4, 3], state: "minecraft:air"}, + {pos: [8, 4, 4], state: "minecraft:air"}, + {pos: [8, 4, 5], state: "minecraft:air"}, + {pos: [8, 4, 6], state: "minecraft:air"}, + {pos: [8, 4, 7], state: "minecraft:air"}, + {pos: [8, 4, 8], state: "minecraft:air"}, + {pos: [9, 4, 0], state: "minecraft:air"}, + {pos: [9, 4, 1], state: "minecraft:air"}, + {pos: [9, 4, 2], state: "minecraft:air"}, + {pos: [9, 4, 3], state: "minecraft:air"}, + {pos: [9, 4, 4], state: "minecraft:air"}, + {pos: [9, 4, 5], state: "minecraft:air"}, + {pos: [9, 4, 6], state: "minecraft:air"}, + {pos: [9, 4, 7], state: "minecraft:air"}, + {pos: [9, 4, 8], state: "minecraft:air"}, + {pos: [10, 4, 0], state: "minecraft:air"}, + {pos: [10, 4, 1], state: "minecraft:air"}, + {pos: [10, 4, 2], state: "minecraft:air"}, + {pos: [10, 4, 3], state: "minecraft:air"}, + {pos: [10, 4, 4], state: "minecraft:air"}, + {pos: [10, 4, 5], state: "minecraft:air"}, + {pos: [10, 4, 6], state: "minecraft:air"}, + {pos: [10, 4, 7], state: "minecraft:air"}, + {pos: [10, 4, 8], state: "minecraft:air"}, + {pos: [0, 5, 0], state: "minecraft:air"}, + {pos: [0, 5, 1], state: "minecraft:air"}, + {pos: [0, 5, 2], state: "minecraft:air"}, + {pos: [0, 5, 3], state: "minecraft:air"}, + {pos: [0, 5, 4], state: "minecraft:air"}, + {pos: [0, 5, 5], state: "minecraft:air"}, + {pos: [0, 5, 6], state: "minecraft:air"}, + {pos: [0, 5, 7], state: "minecraft:air"}, + {pos: [0, 5, 8], state: "minecraft:air"}, + {pos: [1, 5, 0], state: "minecraft:air"}, + {pos: [1, 5, 1], state: "minecraft:air"}, + {pos: [1, 5, 2], state: "minecraft:air"}, + {pos: [1, 5, 3], state: "minecraft:air"}, + {pos: [1, 5, 4], state: "minecraft:air"}, + {pos: [1, 5, 5], state: "minecraft:air"}, + {pos: [1, 5, 6], state: "minecraft:air"}, + {pos: [1, 5, 7], state: "minecraft:air"}, + {pos: [1, 5, 8], state: "minecraft:air"}, + {pos: [2, 5, 0], state: "minecraft:air"}, + {pos: [2, 5, 1], state: "minecraft:air"}, + {pos: [2, 5, 2], state: "minecraft:air"}, + {pos: [2, 5, 3], state: "minecraft:air"}, + {pos: [2, 5, 4], state: "minecraft:air"}, + {pos: [2, 5, 5], state: "minecraft:air"}, + {pos: [2, 5, 6], state: "minecraft:air"}, + {pos: [2, 5, 7], state: "minecraft:air"}, + {pos: [2, 5, 8], state: "minecraft:air"}, + {pos: [3, 5, 0], state: "minecraft:air"}, + {pos: [3, 5, 1], state: "minecraft:air"}, + {pos: [3, 5, 2], state: "minecraft:air"}, + {pos: [3, 5, 3], state: "minecraft:air"}, + {pos: [3, 5, 4], state: "minecraft:air"}, + {pos: [3, 5, 5], state: "minecraft:air"}, + {pos: [3, 5, 6], state: "minecraft:air"}, + {pos: [3, 5, 7], state: "minecraft:air"}, + {pos: [3, 5, 8], state: "minecraft:air"}, + {pos: [4, 5, 0], state: "minecraft:air"}, + {pos: [4, 5, 1], state: "minecraft:air"}, + {pos: [4, 5, 2], state: "minecraft:air"}, + {pos: [4, 5, 3], state: "minecraft:air"}, + {pos: [4, 5, 4], state: "minecraft:beacon", nbt: {ForgeCaps: {}, Levels: 4, Primary: 1, Secondary: -1, id: "minecraft:beacon"}}, + {pos: [4, 5, 5], state: "minecraft:air"}, + {pos: [4, 5, 6], state: "minecraft:air"}, + {pos: [4, 5, 7], state: "minecraft:air"}, + {pos: [4, 5, 8], state: "minecraft:air"}, + {pos: [5, 5, 0], state: "minecraft:air"}, + {pos: [5, 5, 1], state: "minecraft:air"}, + {pos: [5, 5, 2], state: "minecraft:air"}, + {pos: [5, 5, 3], state: "minecraft:air"}, + {pos: [5, 5, 4], state: "computercraft:computer_advanced{facing:north,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "modintegrtest.minecraftbeacon", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [5, 5, 5], state: "minecraft:air"}, + {pos: [5, 5, 6], state: "minecraft:air"}, + {pos: [5, 5, 7], state: "minecraft:air"}, + {pos: [5, 5, 8], state: "minecraft:air"}, + {pos: [6, 5, 0], state: "minecraft:air"}, + {pos: [6, 5, 1], state: "minecraft:air"}, + {pos: [6, 5, 2], state: "minecraft:air"}, + {pos: [6, 5, 3], state: "minecraft:air"}, + {pos: [6, 5, 4], state: "minecraft:beacon", nbt: {ForgeCaps: {}, Levels: 4, Primary: 3, Secondary: 3, id: "minecraft:beacon"}}, + {pos: [6, 5, 5], state: "minecraft:air"}, + {pos: [6, 5, 6], state: "minecraft:air"}, + {pos: [6, 5, 7], state: "minecraft:air"}, + {pos: [6, 5, 8], state: "minecraft:air"}, + {pos: [7, 5, 0], state: "minecraft:air"}, + {pos: [7, 5, 1], state: "minecraft:air"}, + {pos: [7, 5, 2], state: "minecraft:air"}, + {pos: [7, 5, 3], state: "minecraft:air"}, + {pos: [7, 5, 4], state: "minecraft:air"}, + {pos: [7, 5, 5], state: "minecraft:air"}, + {pos: [7, 5, 6], state: "minecraft:air"}, + {pos: [7, 5, 7], state: "minecraft:air"}, + {pos: [7, 5, 8], state: "minecraft:air"}, + {pos: [8, 5, 0], state: "minecraft:air"}, + {pos: [8, 5, 1], state: "minecraft:air"}, + {pos: [8, 5, 2], state: "minecraft:air"}, + {pos: [8, 5, 3], state: "minecraft:air"}, + {pos: [8, 5, 4], state: "minecraft:air"}, + {pos: [8, 5, 5], state: "minecraft:air"}, + {pos: [8, 5, 6], state: "minecraft:air"}, + {pos: [8, 5, 7], state: "minecraft:air"}, + {pos: [8, 5, 8], state: "minecraft:air"}, + {pos: [9, 5, 0], state: "minecraft:air"}, + {pos: [9, 5, 1], state: "minecraft:air"}, + {pos: [9, 5, 2], state: "minecraft:air"}, + {pos: [9, 5, 3], state: "minecraft:air"}, + {pos: [9, 5, 4], state: "minecraft:air"}, + {pos: [9, 5, 5], state: "minecraft:air"}, + {pos: [9, 5, 6], state: "minecraft:air"}, + {pos: [9, 5, 7], state: "minecraft:air"}, + {pos: [9, 5, 8], state: "minecraft:air"}, + {pos: [10, 5, 0], state: "minecraft:air"}, + {pos: [10, 5, 1], state: "minecraft:air"}, + {pos: [10, 5, 2], state: "minecraft:air"}, + {pos: [10, 5, 3], state: "minecraft:air"}, + {pos: [10, 5, 4], state: "minecraft:air"}, + {pos: [10, 5, 5], state: "minecraft:air"}, + {pos: [10, 5, 6], state: "minecraft:air"}, + {pos: [10, 5, 7], state: "minecraft:air"}, + {pos: [10, 5, 8], state: "minecraft:air"}, + {pos: [0, 6, 0], state: "minecraft:air"}, + {pos: [0, 6, 1], state: "minecraft:air"}, + {pos: [0, 6, 2], state: "minecraft:air"}, + {pos: [0, 6, 3], state: "minecraft:air"}, + {pos: [0, 6, 4], state: "minecraft:air"}, + {pos: [0, 6, 5], state: "minecraft:air"}, + {pos: [0, 6, 6], state: "minecraft:air"}, + {pos: [0, 6, 7], state: "minecraft:air"}, + {pos: [0, 6, 8], state: "minecraft:air"}, + {pos: [1, 6, 0], state: "minecraft:air"}, + {pos: [1, 6, 1], state: "minecraft:air"}, + {pos: [1, 6, 2], state: "minecraft:air"}, + {pos: [1, 6, 3], state: "minecraft:air"}, + {pos: [1, 6, 4], state: "minecraft:air"}, + {pos: [1, 6, 5], state: "minecraft:air"}, + {pos: [1, 6, 6], state: "minecraft:air"}, + {pos: [1, 6, 7], state: "minecraft:air"}, + {pos: [1, 6, 8], state: "minecraft:air"}, + {pos: [2, 6, 0], state: "minecraft:air"}, + {pos: [2, 6, 1], state: "minecraft:air"}, + {pos: [2, 6, 2], state: "minecraft:air"}, + {pos: [2, 6, 3], state: "minecraft:air"}, + {pos: [2, 6, 4], state: "minecraft:air"}, + {pos: [2, 6, 5], state: "minecraft:air"}, + {pos: [2, 6, 6], state: "minecraft:air"}, + {pos: [2, 6, 7], state: "minecraft:air"}, + {pos: [2, 6, 8], state: "minecraft:air"}, + {pos: [3, 6, 0], state: "minecraft:air"}, + {pos: [3, 6, 1], state: "minecraft:air"}, + {pos: [3, 6, 2], state: "minecraft:air"}, + {pos: [3, 6, 3], state: "minecraft:air"}, + {pos: [3, 6, 4], state: "minecraft:air"}, + {pos: [3, 6, 5], state: "minecraft:air"}, + {pos: [3, 6, 6], state: "minecraft:air"}, + {pos: [3, 6, 7], state: "minecraft:air"}, + {pos: [3, 6, 8], state: "minecraft:air"}, + {pos: [4, 6, 0], state: "minecraft:air"}, + {pos: [4, 6, 1], state: "minecraft:air"}, + {pos: [4, 6, 2], state: "minecraft:air"}, + {pos: [4, 6, 3], state: "minecraft:air"}, + {pos: [4, 6, 4], state: "minecraft:air"}, + {pos: [4, 6, 5], state: "minecraft:air"}, + {pos: [4, 6, 6], state: "minecraft:air"}, + {pos: [4, 6, 7], state: "minecraft:air"}, + {pos: [4, 6, 8], state: "minecraft:air"}, + {pos: [5, 6, 0], state: "minecraft:air"}, + {pos: [5, 6, 1], state: "minecraft:air"}, + {pos: [5, 6, 2], state: "minecraft:air"}, + {pos: [5, 6, 3], state: "minecraft:air"}, + {pos: [5, 6, 4], state: "minecraft:beacon", nbt: {ForgeCaps: {}, Levels: 0, Primary: -1, Secondary: -1, id: "minecraft:beacon"}}, + {pos: [5, 6, 5], state: "minecraft:air"}, + {pos: [5, 6, 6], state: "minecraft:air"}, + {pos: [5, 6, 7], state: "minecraft:air"}, + {pos: [5, 6, 8], state: "minecraft:air"}, + {pos: [6, 6, 0], state: "minecraft:air"}, + {pos: [6, 6, 1], state: "minecraft:air"}, + {pos: [6, 6, 2], state: "minecraft:air"}, + {pos: [6, 6, 3], state: "minecraft:air"}, + {pos: [6, 6, 4], state: "minecraft:air"}, + {pos: [6, 6, 5], state: "minecraft:air"}, + {pos: [6, 6, 6], state: "minecraft:air"}, + {pos: [6, 6, 7], state: "minecraft:air"}, + {pos: [6, 6, 8], state: "minecraft:air"}, + {pos: [7, 6, 0], state: "minecraft:air"}, + {pos: [7, 6, 1], state: "minecraft:air"}, + {pos: [7, 6, 2], state: "minecraft:air"}, + {pos: [7, 6, 3], state: "minecraft:air"}, + {pos: [7, 6, 4], state: "minecraft:air"}, + {pos: [7, 6, 5], state: "minecraft:air"}, + {pos: [7, 6, 6], state: "minecraft:air"}, + {pos: [7, 6, 7], state: "minecraft:air"}, + {pos: [7, 6, 8], state: "minecraft:air"}, + {pos: [8, 6, 0], state: "minecraft:air"}, + {pos: [8, 6, 1], state: "minecraft:air"}, + {pos: [8, 6, 2], state: "minecraft:air"}, + {pos: [8, 6, 3], state: "minecraft:air"}, + {pos: [8, 6, 4], state: "minecraft:air"}, + {pos: [8, 6, 5], state: "minecraft:air"}, + {pos: [8, 6, 6], state: "minecraft:air"}, + {pos: [8, 6, 7], state: "minecraft:air"}, + {pos: [8, 6, 8], state: "minecraft:air"}, + {pos: [9, 6, 0], state: "minecraft:air"}, + {pos: [9, 6, 1], state: "minecraft:air"}, + {pos: [9, 6, 2], state: "minecraft:air"}, + {pos: [9, 6, 3], state: "minecraft:air"}, + {pos: [9, 6, 4], state: "minecraft:air"}, + {pos: [9, 6, 5], state: "minecraft:air"}, + {pos: [9, 6, 6], state: "minecraft:air"}, + {pos: [9, 6, 7], state: "minecraft:air"}, + {pos: [9, 6, 8], state: "minecraft:air"}, + {pos: [10, 6, 0], state: "minecraft:air"}, + {pos: [10, 6, 1], state: "minecraft:air"}, + {pos: [10, 6, 2], state: "minecraft:air"}, + {pos: [10, 6, 3], state: "minecraft:air"}, + {pos: [10, 6, 4], state: "minecraft:air"}, + {pos: [10, 6, 5], state: "minecraft:air"}, + {pos: [10, 6, 6], state: "minecraft:air"}, + {pos: [10, 6, 7], state: "minecraft:air"}, + {pos: [10, 6, 8], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:iron_block", + "minecraft:air", + "minecraft:beacon", + "computercraft:computer_advanced{facing:north,state:blinking}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock.snbt new file mode 100644 index 000000000..e32bcfbcf --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock.snbt @@ -0,0 +1,139 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "minecraft:note_block{instrument:basedrum,note:4,powered:false}"}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "modintegrtest.minecraftnoteblock", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "minecraft:note_block{instrument:basedrum,note:0,powered:false}"}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "minecraft:air"}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:note_block{instrument:basedrum,note:4,powered:false}", + "minecraft:note_block{instrument:basedrum,note:0,powered:false}", + "minecraft:air", + "computercraft:computer_advanced{facing:west,state:blinking}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock_triggering_allay.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock_triggering_allay.snbt new file mode 100644 index 000000000..5344fa82e --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/modintegrtest.minecraftnoteblock_triggering_allay.snbt @@ -0,0 +1,140 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:glass"}, + {pos: [0, 1, 1], state: "minecraft:glass"}, + {pos: [0, 1, 2], state: "minecraft:glass"}, + {pos: [0, 1, 3], state: "minecraft:glass"}, + {pos: [0, 1, 4], state: "minecraft:glass"}, + {pos: [1, 1, 0], state: "minecraft:glass"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:glass"}, + {pos: [2, 1, 0], state: "minecraft:glass"}, + {pos: [2, 1, 1], state: "minecraft:note_block{instrument:basedrum,note:4,powered:false}"}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 1, ForgeCaps: {}, Label: "modintegrtest.minecraftnoteblock_triggering_allay", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "minecraft:air"}, + {pos: [2, 1, 4], state: "minecraft:glass"}, + {pos: [3, 1, 0], state: "minecraft:glass"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "minecraft:air"}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:glass"}, + {pos: [4, 1, 0], state: "minecraft:glass"}, + {pos: [4, 1, 1], state: "minecraft:glass"}, + {pos: [4, 1, 2], state: "minecraft:glass"}, + {pos: [4, 1, 3], state: "minecraft:glass"}, + {pos: [4, 1, 4], state: "minecraft:glass"}, + {pos: [0, 2, 0], state: "minecraft:glass"}, + {pos: [0, 2, 1], state: "minecraft:glass"}, + {pos: [0, 2, 2], state: "minecraft:glass"}, + {pos: [0, 2, 3], state: "minecraft:glass"}, + {pos: [0, 2, 4], state: "minecraft:glass"}, + {pos: [1, 2, 0], state: "minecraft:glass"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:glass"}, + {pos: [2, 2, 0], state: "minecraft:glass"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:glass"}, + {pos: [3, 2, 0], state: "minecraft:glass"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:glass"}, + {pos: [4, 2, 0], state: "minecraft:glass"}, + {pos: [4, 2, 1], state: "minecraft:glass"}, + {pos: [4, 2, 2], state: "minecraft:glass"}, + {pos: [4, 2, 3], state: "minecraft:glass"}, + {pos: [4, 2, 4], state: "minecraft:glass"}, + {pos: [0, 3, 0], state: "minecraft:glass"}, + {pos: [0, 3, 1], state: "minecraft:glass"}, + {pos: [0, 3, 2], state: "minecraft:glass"}, + {pos: [0, 3, 3], state: "minecraft:glass"}, + {pos: [0, 3, 4], state: "minecraft:glass"}, + {pos: [1, 3, 0], state: "minecraft:glass"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:glass"}, + {pos: [2, 3, 0], state: "minecraft:glass"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:glass"}, + {pos: [3, 3, 0], state: "minecraft:glass"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:glass"}, + {pos: [4, 3, 0], state: "minecraft:glass"}, + {pos: [4, 3, 1], state: "minecraft:glass"}, + {pos: [4, 3, 2], state: "minecraft:glass"}, + {pos: [4, 3, 3], state: "minecraft:glass"}, + {pos: [4, 3, 4], state: "minecraft:glass"}, + {pos: [0, 4, 0], state: "minecraft:glass"}, + {pos: [0, 4, 1], state: "minecraft:glass"}, + {pos: [0, 4, 2], state: "minecraft:glass"}, + {pos: [0, 4, 3], state: "minecraft:glass"}, + {pos: [0, 4, 4], state: "minecraft:glass"}, + {pos: [1, 4, 0], state: "minecraft:glass"}, + {pos: [1, 4, 1], state: "minecraft:glass"}, + {pos: [1, 4, 2], state: "minecraft:glass"}, + {pos: [1, 4, 3], state: "minecraft:glass"}, + {pos: [1, 4, 4], state: "minecraft:glass"}, + {pos: [2, 4, 0], state: "minecraft:glass"}, + {pos: [2, 4, 1], state: "minecraft:glass"}, + {pos: [2, 4, 2], state: "minecraft:glass"}, + {pos: [2, 4, 3], state: "minecraft:glass"}, + {pos: [2, 4, 4], state: "minecraft:glass"}, + {pos: [3, 4, 0], state: "minecraft:glass"}, + {pos: [3, 4, 1], state: "minecraft:glass"}, + {pos: [3, 4, 2], state: "minecraft:glass"}, + {pos: [3, 4, 3], state: "minecraft:glass"}, + {pos: [3, 4, 4], state: "minecraft:glass"}, + {pos: [4, 4, 0], state: "minecraft:glass"}, + {pos: [4, 4, 1], state: "minecraft:glass"}, + {pos: [4, 4, 2], state: "minecraft:glass"}, + {pos: [4, 4, 3], state: "minecraft:glass"}, + {pos: [4, 4, 4], state: "minecraft:glass"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:glass", + "minecraft:note_block{instrument:basedrum,note:4,powered:false}", + "minecraft:note_block{instrument:basedrum,note:0,powered:false}", + "minecraft:air", + "computercraft:computer_advanced{facing:west,state:blinking}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.geoscanner.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.geoscanner.snbt new file mode 100644 index 000000000..fd6a9bf08 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.geoscanner.snbt @@ -0,0 +1,243 @@ +{ + DataVersion: 3120, + size: [5, 9, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "peripheraltest.geoscanner", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "minecraft:polished_diorite"}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "minecraft:polished_granite"}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "advancedperipherals:geo_scanner{orientation:west_up}", nbt: {ForgeCaps: {}, ForgeData: {CustomName: "[Geo Scanner]"}, Items: [], energy: 100000000, id: "advancedperipherals:geo_scanner", peripheralSettings: {FUEL_CONSUMING_RATE: 1, cooldowns: {scanBlocks: 1715469234280L}}}}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:iron_ore"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:gold_ore"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"}, + {pos: [0, 5, 0], state: "minecraft:air"}, + {pos: [0, 5, 1], state: "minecraft:air"}, + {pos: [0, 5, 2], state: "minecraft:air"}, + {pos: [0, 5, 3], state: "minecraft:air"}, + {pos: [0, 5, 4], state: "minecraft:air"}, + {pos: [1, 5, 0], state: "minecraft:air"}, + {pos: [1, 5, 1], state: "minecraft:air"}, + {pos: [1, 5, 2], state: "minecraft:air"}, + {pos: [1, 5, 3], state: "minecraft:air"}, + {pos: [1, 5, 4], state: "minecraft:air"}, + {pos: [2, 5, 0], state: "minecraft:air"}, + {pos: [2, 5, 1], state: "minecraft:air"}, + {pos: [2, 5, 2], state: "minecraft:gold_ore"}, + {pos: [2, 5, 3], state: "minecraft:air"}, + {pos: [2, 5, 4], state: "minecraft:air"}, + {pos: [3, 5, 0], state: "minecraft:air"}, + {pos: [3, 5, 1], state: "minecraft:air"}, + {pos: [3, 5, 2], state: "minecraft:air"}, + {pos: [3, 5, 3], state: "minecraft:air"}, + {pos: [3, 5, 4], state: "minecraft:air"}, + {pos: [4, 5, 0], state: "minecraft:air"}, + {pos: [4, 5, 1], state: "minecraft:air"}, + {pos: [4, 5, 2], state: "minecraft:air"}, + {pos: [4, 5, 3], state: "minecraft:air"}, + {pos: [4, 5, 4], state: "minecraft:air"}, + {pos: [0, 6, 0], state: "minecraft:air"}, + {pos: [0, 6, 1], state: "minecraft:air"}, + {pos: [0, 6, 2], state: "minecraft:air"}, + {pos: [0, 6, 3], state: "minecraft:air"}, + {pos: [0, 6, 4], state: "minecraft:air"}, + {pos: [1, 6, 0], state: "minecraft:air"}, + {pos: [1, 6, 1], state: "minecraft:air"}, + {pos: [1, 6, 2], state: "minecraft:air"}, + {pos: [1, 6, 3], state: "minecraft:air"}, + {pos: [1, 6, 4], state: "minecraft:air"}, + {pos: [2, 6, 0], state: "minecraft:air"}, + {pos: [2, 6, 1], state: "minecraft:air"}, + {pos: [2, 6, 2], state: "minecraft:diamond_ore"}, + {pos: [2, 6, 3], state: "minecraft:air"}, + {pos: [2, 6, 4], state: "minecraft:air"}, + {pos: [3, 6, 0], state: "minecraft:air"}, + {pos: [3, 6, 1], state: "minecraft:air"}, + {pos: [3, 6, 2], state: "minecraft:air"}, + {pos: [3, 6, 3], state: "minecraft:air"}, + {pos: [3, 6, 4], state: "minecraft:air"}, + {pos: [4, 6, 0], state: "minecraft:air"}, + {pos: [4, 6, 1], state: "minecraft:air"}, + {pos: [4, 6, 2], state: "minecraft:air"}, + {pos: [4, 6, 3], state: "minecraft:air"}, + {pos: [4, 6, 4], state: "minecraft:air"}, + {pos: [0, 7, 0], state: "minecraft:air"}, + {pos: [0, 7, 1], state: "minecraft:air"}, + {pos: [0, 7, 2], state: "minecraft:air"}, + {pos: [0, 7, 3], state: "minecraft:air"}, + {pos: [0, 7, 4], state: "minecraft:air"}, + {pos: [1, 7, 0], state: "minecraft:air"}, + {pos: [1, 7, 1], state: "minecraft:air"}, + {pos: [1, 7, 2], state: "minecraft:air"}, + {pos: [1, 7, 3], state: "minecraft:air"}, + {pos: [1, 7, 4], state: "minecraft:air"}, + {pos: [2, 7, 0], state: "minecraft:air"}, + {pos: [2, 7, 1], state: "minecraft:air"}, + {pos: [2, 7, 2], state: "minecraft:diamond_ore"}, + {pos: [2, 7, 3], state: "minecraft:air"}, + {pos: [2, 7, 4], state: "minecraft:air"}, + {pos: [3, 7, 0], state: "minecraft:air"}, + {pos: [3, 7, 1], state: "minecraft:air"}, + {pos: [3, 7, 2], state: "minecraft:air"}, + {pos: [3, 7, 3], state: "minecraft:air"}, + {pos: [3, 7, 4], state: "minecraft:air"}, + {pos: [4, 7, 0], state: "minecraft:air"}, + {pos: [4, 7, 1], state: "minecraft:air"}, + {pos: [4, 7, 2], state: "minecraft:air"}, + {pos: [4, 7, 3], state: "minecraft:air"}, + {pos: [4, 7, 4], state: "minecraft:air"}, + {pos: [0, 8, 0], state: "minecraft:air"}, + {pos: [0, 8, 1], state: "minecraft:air"}, + {pos: [0, 8, 2], state: "minecraft:air"}, + {pos: [0, 8, 3], state: "minecraft:air"}, + {pos: [0, 8, 4], state: "minecraft:air"}, + {pos: [1, 8, 0], state: "minecraft:air"}, + {pos: [1, 8, 1], state: "minecraft:air"}, + {pos: [1, 8, 2], state: "minecraft:air"}, + {pos: [1, 8, 3], state: "minecraft:air"}, + {pos: [1, 8, 4], state: "minecraft:air"}, + {pos: [2, 8, 0], state: "minecraft:air"}, + {pos: [2, 8, 1], state: "minecraft:air"}, + {pos: [2, 8, 2], state: "minecraft:diamond_ore"}, + {pos: [2, 8, 3], state: "minecraft:air"}, + {pos: [2, 8, 4], state: "minecraft:air"}, + {pos: [3, 8, 0], state: "minecraft:air"}, + {pos: [3, 8, 1], state: "minecraft:air"}, + {pos: [3, 8, 2], state: "minecraft:air"}, + {pos: [3, 8, 3], state: "minecraft:air"}, + {pos: [3, 8, 4], state: "minecraft:air"}, + {pos: [4, 8, 0], state: "minecraft:air"}, + {pos: [4, 8, 1], state: "minecraft:air"}, + {pos: [4, 8, 2], state: "minecraft:air"}, + {pos: [4, 8, 3], state: "minecraft:air"}, + {pos: [4, 8, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:polished_diorite", + "minecraft:polished_granite", + "minecraft:iron_ore", + "minecraft:gold_ore", + "minecraft:diamond_ore", + "minecraft:air", + "computercraft:computer_advanced{facing:west,state:blinking}", + "advancedperipherals:geo_scanner{orientation:west_up}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.nbtstorage.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.nbtstorage.snbt new file mode 100644 index 000000000..0f0515b89 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.nbtstorage.snbt @@ -0,0 +1,138 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:air"}, + {pos: [1, 1, 2], state: "minecraft:air"}, + {pos: [1, 1, 3], state: "minecraft:air"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "advancedperipherals:nbt_storage{orientation:up_east}", nbt: {ForgeCaps: {}, ForgeData: {CustomName: "[NBT Storage]"}, Items: [], id: "advancedperipherals:nbt_storage", storedData: {test_float: 3.14d, test_number: 42.0d, test_string: "Hello, World!"}}}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "peripheraltest.nbtstorage", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "minecraft:air"}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "minecraft:air"}, + {pos: [3, 1, 3], state: "minecraft:air"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:air", + "advancedperipherals:nbt_storage{orientation:up_east}", + "computercraft:computer_advanced{facing:west,state:blinking}" + ] +} diff --git a/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.rsintegrator.snbt b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.rsintegrator.snbt new file mode 100644 index 000000000..0c084d522 --- /dev/null +++ b/src/testMod/resources/data/advancedperipheralstest/structures/peripheraltest.rsintegrator.snbt @@ -0,0 +1,142 @@ +{ + DataVersion: 3120, + size: [5, 5, 5], + data: [ + {pos: [0, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [0, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [1, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [2, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [3, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 0], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 1], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 2], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 3], state: "minecraft:polished_andesite"}, + {pos: [4, 0, 4], state: "minecraft:polished_andesite"}, + {pos: [0, 1, 0], state: "minecraft:air"}, + {pos: [0, 1, 1], state: "minecraft:air"}, + {pos: [0, 1, 2], state: "minecraft:air"}, + {pos: [0, 1, 3], state: "minecraft:air"}, + {pos: [0, 1, 4], state: "minecraft:air"}, + {pos: [1, 1, 0], state: "minecraft:air"}, + {pos: [1, 1, 1], state: "minecraft:redstone_wire{east:side,north:none,power:0,south:side,west:none}"}, + {pos: [1, 1, 2], state: "minecraft:redstone_wire{east:side,north:side,power:0,south:side,west:none}"}, + {pos: [1, 1, 3], state: "minecraft:redstone_wire{east:side,north:side,power:0,south:none,west:none}"}, + {pos: [1, 1, 4], state: "minecraft:air"}, + {pos: [2, 1, 0], state: "minecraft:air"}, + {pos: [2, 1, 1], state: "advancedperipherals:redstone_integrator{orientation:west_up}", nbt: {DOWNPower: 0, EASTPower: 0, ForgeCaps: {}, ForgeData: {CustomName: "[Redstone Integrator]"}, Items: [], NORTHPower: 0, SOUTHPower: 0, UPPower: 0, WESTPower: 0, id: "advancedperipherals:redstone_integrator"}}, + {pos: [2, 1, 2], state: "computercraft:computer_advanced{facing:west,state:blinking}", nbt: {ComputerId: 0, ForgeCaps: {}, Label: "peripheraltest.rsintegrator", On: 1b, id: "computercraft:computer_advanced"}}, + {pos: [2, 1, 3], state: "advancedperipherals:redstone_integrator{orientation:west_up}", nbt: {DOWNPower: 0, EASTPower: 0, ForgeCaps: {}, ForgeData: {CustomName: "[Redstone Integrator]"}, Items: [], NORTHPower: 0, SOUTHPower: 0, UPPower: 0, WESTPower: 0, id: "advancedperipherals:redstone_integrator"}}, + {pos: [2, 1, 4], state: "minecraft:air"}, + {pos: [3, 1, 0], state: "minecraft:air"}, + {pos: [3, 1, 1], state: "minecraft:air"}, + {pos: [3, 1, 2], state: "minecraft:air"}, + {pos: [3, 1, 3], state: "minecraft:redstone_block"}, + {pos: [3, 1, 4], state: "minecraft:air"}, + {pos: [4, 1, 0], state: "minecraft:air"}, + {pos: [4, 1, 1], state: "minecraft:air"}, + {pos: [4, 1, 2], state: "minecraft:air"}, + {pos: [4, 1, 3], state: "minecraft:air"}, + {pos: [4, 1, 4], state: "minecraft:air"}, + {pos: [0, 2, 0], state: "minecraft:air"}, + {pos: [0, 2, 1], state: "minecraft:air"}, + {pos: [0, 2, 2], state: "minecraft:air"}, + {pos: [0, 2, 3], state: "minecraft:air"}, + {pos: [0, 2, 4], state: "minecraft:air"}, + {pos: [1, 2, 0], state: "minecraft:air"}, + {pos: [1, 2, 1], state: "minecraft:air"}, + {pos: [1, 2, 2], state: "minecraft:air"}, + {pos: [1, 2, 3], state: "minecraft:air"}, + {pos: [1, 2, 4], state: "minecraft:air"}, + {pos: [2, 2, 0], state: "minecraft:air"}, + {pos: [2, 2, 1], state: "minecraft:air"}, + {pos: [2, 2, 2], state: "minecraft:air"}, + {pos: [2, 2, 3], state: "minecraft:air"}, + {pos: [2, 2, 4], state: "minecraft:air"}, + {pos: [3, 2, 0], state: "minecraft:air"}, + {pos: [3, 2, 1], state: "minecraft:air"}, + {pos: [3, 2, 2], state: "minecraft:air"}, + {pos: [3, 2, 3], state: "minecraft:air"}, + {pos: [3, 2, 4], state: "minecraft:air"}, + {pos: [4, 2, 0], state: "minecraft:air"}, + {pos: [4, 2, 1], state: "minecraft:air"}, + {pos: [4, 2, 2], state: "minecraft:air"}, + {pos: [4, 2, 3], state: "minecraft:air"}, + {pos: [4, 2, 4], state: "minecraft:air"}, + {pos: [0, 3, 0], state: "minecraft:air"}, + {pos: [0, 3, 1], state: "minecraft:air"}, + {pos: [0, 3, 2], state: "minecraft:air"}, + {pos: [0, 3, 3], state: "minecraft:air"}, + {pos: [0, 3, 4], state: "minecraft:air"}, + {pos: [1, 3, 0], state: "minecraft:air"}, + {pos: [1, 3, 1], state: "minecraft:air"}, + {pos: [1, 3, 2], state: "minecraft:air"}, + {pos: [1, 3, 3], state: "minecraft:air"}, + {pos: [1, 3, 4], state: "minecraft:air"}, + {pos: [2, 3, 0], state: "minecraft:air"}, + {pos: [2, 3, 1], state: "minecraft:air"}, + {pos: [2, 3, 2], state: "minecraft:air"}, + {pos: [2, 3, 3], state: "minecraft:air"}, + {pos: [2, 3, 4], state: "minecraft:air"}, + {pos: [3, 3, 0], state: "minecraft:air"}, + {pos: [3, 3, 1], state: "minecraft:air"}, + {pos: [3, 3, 2], state: "minecraft:air"}, + {pos: [3, 3, 3], state: "minecraft:air"}, + {pos: [3, 3, 4], state: "minecraft:air"}, + {pos: [4, 3, 0], state: "minecraft:air"}, + {pos: [4, 3, 1], state: "minecraft:air"}, + {pos: [4, 3, 2], state: "minecraft:air"}, + {pos: [4, 3, 3], state: "minecraft:air"}, + {pos: [4, 3, 4], state: "minecraft:air"}, + {pos: [0, 4, 0], state: "minecraft:air"}, + {pos: [0, 4, 1], state: "minecraft:air"}, + {pos: [0, 4, 2], state: "minecraft:air"}, + {pos: [0, 4, 3], state: "minecraft:air"}, + {pos: [0, 4, 4], state: "minecraft:air"}, + {pos: [1, 4, 0], state: "minecraft:air"}, + {pos: [1, 4, 1], state: "minecraft:air"}, + {pos: [1, 4, 2], state: "minecraft:air"}, + {pos: [1, 4, 3], state: "minecraft:air"}, + {pos: [1, 4, 4], state: "minecraft:air"}, + {pos: [2, 4, 0], state: "minecraft:air"}, + {pos: [2, 4, 1], state: "minecraft:air"}, + {pos: [2, 4, 2], state: "minecraft:air"}, + {pos: [2, 4, 3], state: "minecraft:air"}, + {pos: [2, 4, 4], state: "minecraft:air"}, + {pos: [3, 4, 0], state: "minecraft:air"}, + {pos: [3, 4, 1], state: "minecraft:air"}, + {pos: [3, 4, 2], state: "minecraft:air"}, + {pos: [3, 4, 3], state: "minecraft:air"}, + {pos: [3, 4, 4], state: "minecraft:air"}, + {pos: [4, 4, 0], state: "minecraft:air"}, + {pos: [4, 4, 1], state: "minecraft:air"}, + {pos: [4, 4, 2], state: "minecraft:air"}, + {pos: [4, 4, 3], state: "minecraft:air"}, + {pos: [4, 4, 4], state: "minecraft:air"} + ], + entities: [], + palette: [ + "minecraft:polished_andesite", + "minecraft:redstone_block", + "minecraft:air", + "minecraft:redstone_wire{east:side,north:none,power:0,south:side,west:none}", + "minecraft:redstone_wire{east:side,north:side,power:0,south:side,west:none}", + "minecraft:redstone_wire{east:side,north:side,power:0,south:none,west:none}", + "advancedperipherals:redstone_integrator{orientation:west_up}", + "computercraft:computer_advanced{facing:west,state:blinking}" + ] +}