Skip to content

Commit edddb46

Browse files
authored
Migrate the action context parameter system to the vanilla context parameter system (#86)
1 parent e036d3f commit edddb46

375 files changed

Lines changed: 3884 additions & 3320 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package net.errorcraft.itematic.gametest.item.component;
2+
3+
import net.errorcraft.itematic.gametest.Assert;
4+
import net.errorcraft.itematic.gametest.TestUtil;
5+
import net.errorcraft.itematic.item.ItemKeys;
6+
import net.minecraft.block.Blocks;
7+
import net.minecraft.command.argument.EntityAnchorArgumentType;
8+
import net.minecraft.entity.EntityType;
9+
import net.minecraft.entity.player.PlayerEntity;
10+
import net.minecraft.fluid.Fluids;
11+
import net.minecraft.item.ItemStack;
12+
import net.minecraft.server.world.ServerWorld;
13+
import net.minecraft.test.GameTest;
14+
import net.minecraft.test.GameTestException;
15+
import net.minecraft.test.TestContext;
16+
import net.minecraft.util.ActionResult;
17+
import net.minecraft.util.Hand;
18+
import net.minecraft.util.math.BlockPos;
19+
import net.minecraft.util.math.Vec3d;
20+
import net.minecraft.world.GameMode;
21+
22+
public class BucketItemComponentTestSuite {
23+
private static final BlockPos SPAWN_POSITION = new BlockPos(1, 2, 0);
24+
private static final BlockPos FACE_POSITION = new BlockPos(1, 1, 1);
25+
private static final BlockPos PLACED_POSITION = FACE_POSITION;
26+
27+
@GameTest(templateName = "itematic:item.component.bucket.platform.water")
28+
public void usingBucketOnWaterTakesWaterAndGivesWaterBucket(TestContext context) {
29+
ServerWorld world = context.getWorld();
30+
ItemStack stack = world.itematic$createStack(ItemKeys.BUCKET);
31+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
32+
TestUtil.setEntityPos(context, player, SPAWN_POSITION);
33+
player.lookAt(EntityAnchorArgumentType.EntityAnchor.EYES, Vec3d.ofBottomCenter(context.getAbsolutePos(FACE_POSITION)));
34+
player.setStackInHand(Hand.MAIN_HAND, stack);
35+
world.spawnEntity(player);
36+
ActionResult result = stack.use(world, player, Hand.MAIN_HAND);
37+
context.addInstantFinalTask(() -> {
38+
Assert.fluidIsOf(context, Fluids.EMPTY, PLACED_POSITION);
39+
if (!(result instanceof ActionResult.Success successResult)) {
40+
throw new GameTestException("Expected bucket usage to be successful");
41+
}
42+
43+
Assert.itemStackIsOf(successResult.getNewHandStack(), ItemKeys.WATER_BUCKET);
44+
});
45+
}
46+
47+
@GameTest(templateName = "itematic:item.component.bucket.platform.powder_snow")
48+
public void usingBucketOnPowderSnowTakesWaterAndGivesPowderSnowBucket(TestContext context) {
49+
ServerWorld world = context.getWorld();
50+
ItemStack stack = world.itematic$createStack(ItemKeys.BUCKET);
51+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
52+
TestUtil.setEntityPos(context, player, SPAWN_POSITION);
53+
player.lookAt(EntityAnchorArgumentType.EntityAnchor.EYES, Vec3d.ofBottomCenter(context.getAbsolutePos(FACE_POSITION)));
54+
player.setStackInHand(Hand.MAIN_HAND, stack);
55+
world.spawnEntity(player);
56+
ActionResult result = stack.use(world, player, Hand.MAIN_HAND);
57+
context.addInstantFinalTask(() -> {
58+
Assert.fluidIsOf(context, Fluids.EMPTY, PLACED_POSITION);
59+
if (!(result instanceof ActionResult.Success successResult)) {
60+
throw new GameTestException("Expected bucket usage to be successful");
61+
}
62+
63+
Assert.itemStackIsOf(successResult.getNewHandStack(), ItemKeys.POWDER_SNOW_BUCKET);
64+
});
65+
}
66+
67+
@GameTest(templateName = "itematic:item.component.bucket.platform")
68+
public void usingWaterBucketOnGroundPlacesWater(TestContext context) {
69+
ServerWorld world = context.getWorld();
70+
ItemStack stack = world.itematic$createStack(ItemKeys.WATER_BUCKET);
71+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
72+
TestUtil.setEntityPos(context, player, SPAWN_POSITION);
73+
player.lookAt(EntityAnchorArgumentType.EntityAnchor.EYES, Vec3d.ofBottomCenter(context.getAbsolutePos(FACE_POSITION)));
74+
player.setStackInHand(Hand.MAIN_HAND, stack);
75+
world.spawnEntity(player);
76+
stack.use(world, player, Hand.MAIN_HAND);
77+
context.addInstantFinalTask(() -> Assert.fluidIsOf(context, Fluids.WATER, PLACED_POSITION));
78+
}
79+
80+
@GameTest(templateName = "itematic:item.component.bucket.platform")
81+
public void usingPowderSnowBucketOnGroundPlacesPowderSnow(TestContext context) {
82+
ServerWorld world = context.getWorld();
83+
ItemStack stack = world.itematic$createStack(ItemKeys.POWDER_SNOW_BUCKET);
84+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
85+
TestUtil.setEntityPos(context, player, SPAWN_POSITION);
86+
player.lookAt(EntityAnchorArgumentType.EntityAnchor.EYES, Vec3d.ofBottomCenter(context.getAbsolutePos(FACE_POSITION)));
87+
player.setStackInHand(Hand.MAIN_HAND, stack);
88+
world.spawnEntity(player);
89+
stack.use(world, player, Hand.MAIN_HAND);
90+
context.addInstantFinalTask(() -> context.expectBlock(Blocks.POWDER_SNOW, PLACED_POSITION));
91+
}
92+
93+
@GameTest(templateName = "itematic:item.component.bucket.platform")
94+
public void usingPufferfishBucketOnGroundPlacesWaterAndPufferfish(TestContext context) {
95+
ServerWorld world = context.getWorld();
96+
ItemStack stack = world.itematic$createStack(ItemKeys.PUFFERFISH_BUCKET);
97+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
98+
TestUtil.setEntityPos(context, player, SPAWN_POSITION);
99+
player.lookAt(EntityAnchorArgumentType.EntityAnchor.EYES, Vec3d.ofBottomCenter(context.getAbsolutePos(FACE_POSITION)));
100+
player.setStackInHand(Hand.MAIN_HAND, stack);
101+
world.spawnEntity(player);
102+
stack.use(world, player, Hand.MAIN_HAND);
103+
context.addInstantFinalTask(() -> {
104+
Assert.fluidIsOf(context, Fluids.WATER, PLACED_POSITION);
105+
context.expectEntityAt(EntityType.PUFFERFISH, PLACED_POSITION);
106+
});
107+
}
108+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.errorcraft.itematic.gametest.item.component;
2+
3+
import net.errorcraft.itematic.gametest.TestUtil;
4+
import net.errorcraft.itematic.item.ItemKeys;
5+
import net.minecraft.entity.EntityType;
6+
import net.minecraft.entity.player.PlayerEntity;
7+
import net.minecraft.item.ItemStack;
8+
import net.minecraft.server.world.ServerWorld;
9+
import net.minecraft.test.GameTest;
10+
import net.minecraft.test.TestContext;
11+
import net.minecraft.util.Hand;
12+
import net.minecraft.util.math.BlockPos;
13+
import net.minecraft.util.math.Direction;
14+
import net.minecraft.world.GameMode;
15+
16+
public class EntityItemComponentTestSuite {
17+
private static final BlockPos GROUND_POSITION = new BlockPos(1, 0, 0);
18+
private static final BlockPos PLACED_ENTITY_POSITION = GROUND_POSITION.add(0, 1, 0);
19+
20+
@GameTest(templateName = "itematic:item.component.entity.platform")
21+
public void usingOakBoatOnGroundPlacesOakBoat(TestContext context) {
22+
ServerWorld world = context.getWorld();
23+
ItemStack stack = world.itematic$createStack(ItemKeys.OAK_BOAT);
24+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
25+
player.setStackInHand(Hand.MAIN_HAND, stack);
26+
world.spawnEntity(player);
27+
TestUtil.useStackOnBlockInside(context, player, stack, GROUND_POSITION, Direction.UP);
28+
context.addInstantFinalTask(() -> context.expectEntityAt(EntityType.OAK_BOAT, PLACED_ENTITY_POSITION));
29+
}
30+
31+
@GameTest(templateName = "itematic:item.component.entity.platform")
32+
public void usingPigSpawnEggOnGroundPlacesPig(TestContext context) {
33+
ServerWorld world = context.getWorld();
34+
ItemStack stack = world.itematic$createStack(ItemKeys.PIG_SPAWN_EGG);
35+
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
36+
player.setStackInHand(Hand.MAIN_HAND, stack);
37+
world.spawnEntity(player);
38+
TestUtil.useStackOnBlockInside(context, player, stack, GROUND_POSITION, Direction.UP);
39+
context.addInstantFinalTask(() -> context.expectEntityAt(EntityType.PIG, PLACED_ENTITY_POSITION));
40+
}
41+
}

src/gametest/java/net/errorcraft/itematic/gametest/item/component/ItemHolderItemComponentTestSuite.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import net.errorcraft.itematic.gametest.Assert;
44
import net.errorcraft.itematic.gametest.TestUtil;
5-
import net.errorcraft.itematic.inventory.StackReferenceUtil;
5+
import net.errorcraft.itematic.inventory.SimpleStackReference;
66
import net.errorcraft.itematic.item.ItemKeys;
77
import net.errorcraft.itematic.item.component.ItemComponentTypes;
88
import net.fabricmc.fabric.api.gametest.v1.FabricGameTest;
@@ -29,15 +29,15 @@ public void rightClickingOnStackWithItemHolderAddsStackToItemHolder(TestContext
2929
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
3030
ServerWorld world = context.getWorld();
3131
PlayerInventory inventory = player.getInventory();
32-
ItemStack stack = world.itematic$createStack(ItemKeys.BUNDLE);
32+
ItemStack bundle = world.itematic$createStack(ItemKeys.BUNDLE);
3333
inventory.insertStack(SLOT, world.itematic$createStack(ItemKeys.STICK));
3434
Slot slot = new Slot(inventory, SLOT, 0, 0);
3535
world.spawnEntity(player);
36-
boolean success = stack.onStackClicked(slot, ClickType.RIGHT, player);
36+
boolean success = bundle.onStackClicked(slot, ClickType.RIGHT, player);
3737
context.addInstantFinalTask(() -> {
3838
context.assertTrue(success, "Expected right clicking with item holder to be successful");
3939
Assert.itemStackIsEmpty(inventory.getStack(SLOT));
40-
Assert.itemStackHasDataComponent(stack, DataComponentTypes.BUNDLE_CONTENTS,
40+
Assert.itemStackHasDataComponent(bundle, DataComponentTypes.BUNDLE_CONTENTS,
4141
component -> Assert.itemStackIsOf(component.get(0), ItemKeys.STICK)
4242
);
4343
});
@@ -48,16 +48,16 @@ public void rightClickingOnEmptySlotPlacesLastStackFromItemHolderInSlot(TestCont
4848
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
4949
ServerWorld world = context.getWorld();
5050
PlayerInventory inventory = player.getInventory();
51-
ItemStack stack = world.itematic$createStack(ItemKeys.BUNDLE);
51+
ItemStack bundle = world.itematic$createStack(ItemKeys.BUNDLE);
5252
ItemStack stackToRemove = world.itematic$createStack(ItemKeys.STICK);
53-
addToBundleContentsComponent(stack, stackToRemove);
53+
addToBundleContentsComponent(bundle, stackToRemove);
5454
Slot slot = new Slot(inventory, SLOT, 0, 0);
5555
world.spawnEntity(player);
56-
boolean success = stack.onStackClicked(slot, ClickType.RIGHT, player);
56+
boolean success = bundle.onStackClicked(slot, ClickType.RIGHT, player);
5757
context.addInstantFinalTask(() -> {
5858
context.assertTrue(success, "Expected right clicking with item holder to be successful");
5959
Assert.itemStackIsOf(inventory.getStack(SLOT), ItemKeys.STICK);
60-
Assert.itemStackHasDataComponent(stack, DataComponentTypes.BUNDLE_CONTENTS,
60+
Assert.itemStackHasDataComponent(bundle, DataComponentTypes.BUNDLE_CONTENTS,
6161
component -> context.assertTrue(component.isEmpty(), "Expected item holder to be empty")
6262
);
6363
});
@@ -69,12 +69,12 @@ public void rightClickingOnItemHolderWithStackAddsStackToItemHolder(TestContext
6969
ServerWorld world = context.getWorld();
7070
PlayerInventory inventory = player.getInventory();
7171
inventory.insertStack(SLOT, world.itematic$createStack(ItemKeys.BUNDLE));
72-
ItemStack stack = inventory.getStack(SLOT);
72+
ItemStack bundle = inventory.getStack(SLOT);
7373
ItemStack stackToAdd = world.itematic$createStack(ItemKeys.STICK);
74-
StackReference cursorStack = StackReferenceUtil.of(stackToAdd);
74+
StackReference cursorStack = SimpleStackReference.of(stackToAdd);
7575
Slot slot = new Slot(inventory, SLOT, 0, 0);
7676
world.spawnEntity(player);
77-
boolean success = stack.onClicked(stackToAdd, slot, ClickType.RIGHT, player, cursorStack);
77+
boolean success = bundle.onClicked(stackToAdd, slot, ClickType.RIGHT, player, cursorStack);
7878
context.addInstantFinalTask(() -> {
7979
context.assertTrue(success, "Expected right clicking on item holder to be successful");
8080
Assert.itemStackIsEmpty(cursorStack.get());
@@ -89,15 +89,14 @@ public void rightClickingOnItemHolderRemovesStackFromItemHolder(TestContext cont
8989
PlayerEntity player = context.createMockPlayer(GameMode.SURVIVAL);
9090
ServerWorld world = context.getWorld();
9191
PlayerInventory inventory = player.getInventory();
92-
ItemStack stack = world.itematic$createStack(ItemKeys.BUNDLE);
92+
inventory.insertStack(SLOT, world.itematic$createStack(ItemKeys.BUNDLE));
93+
ItemStack bundle = inventory.getStack(SLOT);
9394
ItemStack stackToRemove = world.itematic$createStack(ItemKeys.STICK);
94-
addToBundleContentsComponent(stack, stackToRemove);
95-
inventory.insertStack(SLOT, stack);
96-
stack = inventory.getStack(SLOT);
97-
StackReference cursorStack = StackReferenceUtil.of(ItemStack.EMPTY);
95+
addToBundleContentsComponent(bundle, stackToRemove);
96+
StackReference cursorStack = SimpleStackReference.of(ItemStack.EMPTY);
9897
Slot slot = new Slot(inventory, SLOT, 0, 0);
9998
world.spawnEntity(player);
100-
boolean success = stack.onClicked(ItemStack.EMPTY, slot, ClickType.RIGHT, player, cursorStack);
99+
boolean success = bundle.onClicked(ItemStack.EMPTY, slot, ClickType.RIGHT, player, cursorStack);
101100
context.addInstantFinalTask(() -> {
102101
context.assertTrue(success, "Expected right clicking on item holder to be successful");
103102
Assert.itemStackIsOf(cursorStack.get(), ItemKeys.STICK);
@@ -107,11 +106,11 @@ public void rightClickingOnItemHolderRemovesStackFromItemHolder(TestContext cont
107106
});
108107
}
109108

110-
private static void addToBundleContentsComponent(ItemStack origin, ItemStack stackToAdd) {
109+
private static void addToBundleContentsComponent(ItemStack bundle, ItemStack stackToAdd) {
111110
BundleContentsComponent.Builder builder = Objects.requireNonNull(
112-
TestUtil.getItemBehavior(origin, ItemComponentTypes.ITEM_HOLDER).createBuilder(origin)
111+
TestUtil.getItemBehavior(bundle, ItemComponentTypes.ITEM_HOLDER).createBuilder(bundle)
113112
);
114113
builder.add(stackToAdd);
115-
origin.set(DataComponentTypes.BUNDLE_CONTENTS, builder.build());
114+
bundle.set(DataComponentTypes.BUNDLE_CONTENTS, builder.build());
116115
}
117116
}

src/gametest/resources/data/itematic/gametest/structure/item.component.bucket.platform.powder_snow.snbt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
DataVersion: 3826,
3-
size: [3, 3, 3],
2+
DataVersion: 4189,
3+
size: [3, 4, 3],
44
data: [
55
{pos: [0, 0, 0], state: "minecraft:bedrock"},
66
{pos: [0, 0, 1], state: "minecraft:bedrock"},
@@ -28,7 +28,16 @@
2828
{pos: [1, 2, 2], state: "minecraft:air"},
2929
{pos: [2, 2, 0], state: "minecraft:air"},
3030
{pos: [2, 2, 1], state: "minecraft:air"},
31-
{pos: [2, 2, 2], state: "minecraft:air"}
31+
{pos: [2, 2, 2], state: "minecraft:air"},
32+
{pos: [0, 3, 0], state: "minecraft:air"},
33+
{pos: [0, 3, 1], state: "minecraft:air"},
34+
{pos: [0, 3, 2], state: "minecraft:air"},
35+
{pos: [1, 3, 0], state: "minecraft:air"},
36+
{pos: [1, 3, 1], state: "minecraft:air"},
37+
{pos: [1, 3, 2], state: "minecraft:air"},
38+
{pos: [2, 3, 0], state: "minecraft:air"},
39+
{pos: [2, 3, 1], state: "minecraft:air"},
40+
{pos: [2, 3, 2], state: "minecraft:air"}
3241
],
3342
entities: [],
3443
palette: [

src/gametest/resources/data/itematic/gametest/structure/item.component.bucket.platform.snbt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
DataVersion: 3826,
3-
size: [3, 3, 3],
2+
DataVersion: 4189,
3+
size: [3, 4, 3],
44
data: [
55
{pos: [0, 0, 0], state: "minecraft:bedrock"},
66
{pos: [0, 0, 1], state: "minecraft:bedrock"},
@@ -11,15 +11,15 @@
1111
{pos: [2, 0, 0], state: "minecraft:bedrock"},
1212
{pos: [2, 0, 1], state: "minecraft:bedrock"},
1313
{pos: [2, 0, 2], state: "minecraft:bedrock"},
14-
{pos: [0, 1, 0], state: "minecraft:air"},
15-
{pos: [0, 1, 1], state: "minecraft:air"},
16-
{pos: [0, 1, 2], state: "minecraft:air"},
17-
{pos: [1, 1, 0], state: "minecraft:air"},
14+
{pos: [0, 1, 0], state: "minecraft:bedrock"},
15+
{pos: [0, 1, 1], state: "minecraft:bedrock"},
16+
{pos: [0, 1, 2], state: "minecraft:bedrock"},
17+
{pos: [1, 1, 0], state: "minecraft:bedrock"},
1818
{pos: [1, 1, 1], state: "minecraft:air"},
19-
{pos: [1, 1, 2], state: "minecraft:air"},
20-
{pos: [2, 1, 0], state: "minecraft:air"},
21-
{pos: [2, 1, 1], state: "minecraft:air"},
22-
{pos: [2, 1, 2], state: "minecraft:air"},
19+
{pos: [1, 1, 2], state: "minecraft:bedrock"},
20+
{pos: [2, 1, 0], state: "minecraft:bedrock"},
21+
{pos: [2, 1, 1], state: "minecraft:bedrock"},
22+
{pos: [2, 1, 2], state: "minecraft:bedrock"},
2323
{pos: [0, 2, 0], state: "minecraft:air"},
2424
{pos: [0, 2, 1], state: "minecraft:air"},
2525
{pos: [0, 2, 2], state: "minecraft:air"},
@@ -28,7 +28,16 @@
2828
{pos: [1, 2, 2], state: "minecraft:air"},
2929
{pos: [2, 2, 0], state: "minecraft:air"},
3030
{pos: [2, 2, 1], state: "minecraft:air"},
31-
{pos: [2, 2, 2], state: "minecraft:air"}
31+
{pos: [2, 2, 2], state: "minecraft:air"},
32+
{pos: [0, 3, 0], state: "minecraft:air"},
33+
{pos: [0, 3, 1], state: "minecraft:air"},
34+
{pos: [0, 3, 2], state: "minecraft:air"},
35+
{pos: [1, 3, 0], state: "minecraft:air"},
36+
{pos: [1, 3, 1], state: "minecraft:air"},
37+
{pos: [1, 3, 2], state: "minecraft:air"},
38+
{pos: [2, 3, 0], state: "minecraft:air"},
39+
{pos: [2, 3, 1], state: "minecraft:air"},
40+
{pos: [2, 3, 2], state: "minecraft:air"}
3241
],
3342
entities: [],
3443
palette: [

src/gametest/resources/data/itematic/gametest/structure/item.component.bucket.platform.water.snbt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
DataVersion: 3826,
3-
size: [3, 3, 3],
2+
DataVersion: 4189,
3+
size: [3, 4, 3],
44
data: [
55
{pos: [0, 0, 0], state: "minecraft:bedrock"},
66
{pos: [0, 0, 1], state: "minecraft:bedrock"},
@@ -28,7 +28,16 @@
2828
{pos: [1, 2, 2], state: "minecraft:air"},
2929
{pos: [2, 2, 0], state: "minecraft:air"},
3030
{pos: [2, 2, 1], state: "minecraft:air"},
31-
{pos: [2, 2, 2], state: "minecraft:air"}
31+
{pos: [2, 2, 2], state: "minecraft:air"},
32+
{pos: [0, 3, 0], state: "minecraft:air"},
33+
{pos: [0, 3, 1], state: "minecraft:air"},
34+
{pos: [0, 3, 2], state: "minecraft:air"},
35+
{pos: [1, 3, 0], state: "minecraft:air"},
36+
{pos: [1, 3, 1], state: "minecraft:air"},
37+
{pos: [1, 3, 2], state: "minecraft:air"},
38+
{pos: [2, 3, 0], state: "minecraft:air"},
39+
{pos: [2, 3, 1], state: "minecraft:air"},
40+
{pos: [2, 3, 2], state: "minecraft:air"}
3241
],
3342
entities: [],
3443
palette: [
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
DataVersion: 4189,
3+
size: [3, 3, 3],
4+
data: [
5+
{pos: [0, 0, 0], state: "minecraft:bedrock"},
6+
{pos: [0, 0, 1], state: "minecraft:bedrock"},
7+
{pos: [0, 0, 2], state: "minecraft:bedrock"},
8+
{pos: [1, 0, 0], state: "minecraft:bedrock"},
9+
{pos: [1, 0, 1], state: "minecraft:bedrock"},
10+
{pos: [1, 0, 2], state: "minecraft:bedrock"},
11+
{pos: [2, 0, 0], state: "minecraft:bedrock"},
12+
{pos: [2, 0, 1], state: "minecraft:bedrock"},
13+
{pos: [2, 0, 2], state: "minecraft:bedrock"},
14+
{pos: [0, 1, 0], state: "minecraft:air"},
15+
{pos: [0, 1, 1], state: "minecraft:air"},
16+
{pos: [0, 1, 2], state: "minecraft:air"},
17+
{pos: [1, 1, 0], state: "minecraft:air"},
18+
{pos: [1, 1, 1], state: "minecraft:air"},
19+
{pos: [1, 1, 2], state: "minecraft:air"},
20+
{pos: [2, 1, 0], state: "minecraft:air"},
21+
{pos: [2, 1, 1], state: "minecraft:air"},
22+
{pos: [2, 1, 2], state: "minecraft:air"},
23+
{pos: [0, 2, 0], state: "minecraft:air"},
24+
{pos: [0, 2, 1], state: "minecraft:air"},
25+
{pos: [0, 2, 2], state: "minecraft:air"},
26+
{pos: [1, 2, 0], state: "minecraft:air"},
27+
{pos: [1, 2, 1], state: "minecraft:air"},
28+
{pos: [1, 2, 2], state: "minecraft:air"},
29+
{pos: [2, 2, 0], state: "minecraft:air"},
30+
{pos: [2, 2, 1], state: "minecraft:air"},
31+
{pos: [2, 2, 2], state: "minecraft:air"}
32+
],
33+
entities: [],
34+
palette: [
35+
"minecraft:bedrock",
36+
"minecraft:air"
37+
]
38+
}

0 commit comments

Comments
 (0)