Skip to content

Commit 24389cd

Browse files
add block state endec
1 parent d974055 commit 24389cd

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/main/java/io/wispforest/owo/serialization/endec/MinecraftEndecs.java

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.fabricmc.fabric.api.event.registry.RegistryAttributeHolder;
1111
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
1212
import net.minecraft.block.Block;
13+
import net.minecraft.block.BlockState;
1314
import net.minecraft.item.Item;
1415
import net.minecraft.item.ItemStack;
1516
import net.minecraft.network.PacketByteBuf;
@@ -92,6 +93,11 @@ private MinecraftEndecs() {}
9293
: BlockHitResult.createMissed(pos, side, blockPos)
9394
);
9495

96+
public static final Endec<BlockState> BLOCK_STATE = Endec.ifAttr(
97+
MinecraftSerializationAttributes.NETWORK, Endec.VAR_INT.xmap(Block.STATE_IDS::get, Block.STATE_IDS::getRawId)
98+
)
99+
.orElse(CodecUtils.toEndec(BlockState.CODEC));
100+
95101
// --- Constructors for MC types ---
96102

97103
public static ReflectiveEndecBuilder addDefaults(ReflectiveEndecBuilder builder) {
@@ -113,6 +119,8 @@ public static ReflectiveEndecBuilder addDefaults(ReflectiveEndecBuilder builder)
113119
builder.register(ofRegistry(Registries.ITEM), Item.class)
114120
.register(ofRegistry(Registries.BLOCK), Block.class);
115121

122+
builder.register(BLOCK_STATE, BlockState.class);
123+
116124
return builder;
117125
}
118126

src/testmod/java/io/wispforest/uwu/network/DispatchedSubclassThree.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package io.wispforest.uwu.network;
22

33
import net.minecraft.block.Block;
4+
import net.minecraft.block.BlockState;
45
import net.minecraft.item.Item;
56

6-
public record DispatchedSubclassThree(Item item, Block block) implements DispatchedInterface {
7+
public record DispatchedSubclassThree(Item item, Block block, BlockState state) implements DispatchedInterface {
78
@Override
89
public String getName() {
910
return "three";

src/testmod/java/io/wispforest/uwu/network/UwuNetworkExample.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
1010
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
1111
import net.minecraft.block.Blocks;
12+
import net.minecraft.block.HorizontalFacingBlock;
1213
import net.minecraft.client.option.KeyBinding;
1314
import net.minecraft.item.Items;
1415
import net.minecraft.text.Text;
1516
import net.minecraft.util.Identifier;
17+
import net.minecraft.util.math.Direction;
1618
import org.lwjgl.glfw.GLFW;
1719

1820
import java.util.HashMap;
@@ -69,7 +71,11 @@ public static void init() {
6971

7072
CHANNEL.clientHandle().send(new MaldingPacket(new DispatchedSubclassOne("base")));
7173
CHANNEL.clientHandle().send(new MaldingPacket(new DispatchedSubclassTwo(20)));
72-
CHANNEL.clientHandle().send(new MaldingPacket(new DispatchedSubclassThree(Items.ACACIA_BOAT, Blocks.DRAGON_EGG)));
74+
CHANNEL.clientHandle().send(new MaldingPacket(new DispatchedSubclassThree(
75+
Items.ACACIA_BOAT,
76+
Blocks.DRAGON_EGG,
77+
Blocks.OAK_STAIRS.getDefaultState().with(HorizontalFacingBlock.FACING, Direction.EAST)
78+
)));
7379

7480
CHANNEL.clientHandle().send(new NullablePacket(null, null));
7581
CHANNEL.clientHandle().send(new NullablePacket("Weeee", null));

0 commit comments

Comments
 (0)