Skip to content

Commit 0e6f502

Browse files
committed
use two separate pieces of tracked data for emancipated block entity NBT instead of custom optional nbt compound type
1 parent 6807276 commit 0e6f502

3 files changed

Lines changed: 12 additions & 14 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
fabric_version=0.110.0+1.21.1
1313

1414
# Mod Properties
15-
mod_version=0.1.9
15+
mod_version=0.1.10
1616
maven_group=io.wispforest
1717
archives_base_name=affinity
1818

src/main/java/io/wispforest/affinity/Affinity.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ public void onInitialize() {
9595
AffinityWorldgen.initialize();
9696

9797
Registry.register(Registries.LOOT_CONDITION_TYPE, Affinity.id("clump_direction"), ClumpDirectionLootCondition.TYPE);
98-
TrackedDataHandlerRegistry.register(EmancipatedBlockEntity.OPTIONAL_NBT);
9998
ResourceConditions.register(UnfinishedFeaturesResourceCondition.TYPE);
10099

101100
AffinityStructures.register();

src/main/java/io/wispforest/affinity/entity/EmancipatedBlockEntity.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,8 @@
1717
import net.minecraft.entity.EntityType;
1818
import net.minecraft.entity.data.DataTracker;
1919
import net.minecraft.entity.data.TrackedData;
20-
import net.minecraft.entity.data.TrackedDataHandler;
2120
import net.minecraft.entity.data.TrackedDataHandlerRegistry;
2221
import net.minecraft.nbt.NbtCompound;
23-
import net.minecraft.nbt.NbtElement;
24-
import net.minecraft.network.PacketByteBuf;
25-
import net.minecraft.network.codec.PacketCodecs;
2622
import net.minecraft.network.listener.ClientPlayPacketListener;
2723
import net.minecraft.network.packet.Packet;
2824
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
@@ -32,12 +28,8 @@
3228
import net.minecraft.world.World;
3329
import org.jetbrains.annotations.Nullable;
3430

35-
import java.util.Optional;
36-
3731
public class EmancipatedBlockEntity extends Entity {
3832

39-
public static final TrackedDataHandler<Optional<NbtCompound>> OPTIONAL_NBT = TrackedDataHandler.create(PacketCodecs.optional(PacketCodecs.codec(NbtCompound.CODEC)));
40-
4133
private static final KeyedEndec<Integer> MAX_AGE_KEY = Endec.INT.keyed("max_age", 15);
4234
private static final KeyedEndec<Float> ANIMATION_SCALE_KEY = Endec.FLOAT.keyed("animation_scale", 1f);
4335
private static final KeyedEndec<NbtCompound> EMANCIPATED_BLOCK_ENTITY_DATA_KEY = NbtEndec.COMPOUND.keyed("emancipated_block_entity", (NbtCompound) null);
@@ -49,7 +41,8 @@ public class EmancipatedBlockEntity extends Entity {
4941

5042
private static final TrackedData<Integer> MAX_AGE = DataTracker.registerData(EmancipatedBlockEntity.class, TrackedDataHandlerRegistry.INTEGER);
5143
private static final TrackedData<Float> ANIMATION_SCALE = DataTracker.registerData(EmancipatedBlockEntity.class, TrackedDataHandlerRegistry.FLOAT);
52-
private static final TrackedData<Optional<NbtCompound>> EMANCIPATED_BLOCK_ENTITY_DATA = DataTracker.registerData(EmancipatedBlockEntity.class, OPTIONAL_NBT);
44+
private static final TrackedData<Boolean> HAS_BLOCK_ENTITY_DATA = DataTracker.registerData(EmancipatedBlockEntity.class, TrackedDataHandlerRegistry.BOOLEAN);
45+
private static final TrackedData<NbtCompound> EMANCIPATED_BLOCK_ENTITY_DATA = DataTracker.registerData(EmancipatedBlockEntity.class, TrackedDataHandlerRegistry.NBT_COMPOUND);
5346
private BlockState emancipatedState = Blocks.AIR.getDefaultState();
5447

5548
public EmancipatedBlockEntity(EntityType<?> type, World world) {
@@ -75,7 +68,8 @@ public static EmancipatedBlockEntity spawn(World world, BlockPos emancipatedPos,
7568
protected void initDataTracker(DataTracker.Builder builder) {
7669
builder.add(MAX_AGE, 15);
7770
builder.add(ANIMATION_SCALE, 1f);
78-
builder.add(EMANCIPATED_BLOCK_ENTITY_DATA, Optional.empty());
71+
builder.add(HAS_BLOCK_ENTITY_DATA, false);
72+
builder.add(EMANCIPATED_BLOCK_ENTITY_DATA, new NbtCompound());
7973
}
8074

8175
@Override
@@ -96,11 +90,16 @@ public void setEmancipatedState(BlockState emancipatedState) {
9690
}
9791

9892
public @Nullable NbtCompound emancipatedBlockEntityData() {
99-
return this.dataTracker.get(EMANCIPATED_BLOCK_ENTITY_DATA).orElse(null);
93+
return this.dataTracker.get(HAS_BLOCK_ENTITY_DATA) ? this.dataTracker.get(EMANCIPATED_BLOCK_ENTITY_DATA) : null;
10094
}
10195

10296
private void setEmancipatedBlockEntityData(@Nullable NbtCompound emancipatedBlockEntity) {
103-
this.dataTracker.set(EMANCIPATED_BLOCK_ENTITY_DATA, Optional.ofNullable(emancipatedBlockEntity));
97+
if (emancipatedBlockEntity != null) {
98+
this.dataTracker.set(HAS_BLOCK_ENTITY_DATA, true);
99+
this.dataTracker.set(EMANCIPATED_BLOCK_ENTITY_DATA, emancipatedBlockEntity);
100+
} else {
101+
this.dataTracker.set(HAS_BLOCK_ENTITY_DATA, false);
102+
}
104103
}
105104

106105
public int maxAge() {

0 commit comments

Comments
 (0)