Skip to content

Commit 32baa11

Browse files
committed
IT COMPILES!!
1 parent e50d3fc commit 32baa11

23 files changed

+311
-247
lines changed

Diff for: build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ tasks.withType(ProcessResources).configureEach {
125125
loader_version_range: loader_version_range,
126126
mod_id : mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version,
127127
mod_authors : mod_authors, mod_description: mod_description,
128+
patchouli_version : patchouli_version
128129
]
129130
inputs.properties replaceProperties
130131

Diff for: src/main/java/de/ellpeck/naturesaura/Helper.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.ellpeck.naturesaura;
22

33
import com.mojang.blaze3d.vertex.VertexConsumer;
4+
import com.mojang.serialization.Codec;
5+
import com.mojang.serialization.codecs.RecordCodecBuilder;
46
import de.ellpeck.naturesaura.api.aura.container.IAuraContainer;
57
import de.ellpeck.naturesaura.api.aura.item.IAuraRecharge;
68
import de.ellpeck.naturesaura.api.misc.ILevelData;
@@ -13,6 +15,7 @@
1315
import net.minecraft.client.gui.GuiGraphics;
1416
import net.minecraft.core.BlockPos;
1517
import net.minecraft.core.Registry;
18+
import net.minecraft.core.component.DataComponentType;
1619
import net.minecraft.core.registries.BuiltInRegistries;
1720
import net.minecraft.nbt.IntArrayTag;
1821
import net.minecraft.nbt.Tag;
@@ -356,14 +359,13 @@ public static void mineRecursively(Level level, BlockPos pos, BlockPos start, It
356359
}
357360

358361
public static boolean isToolEnabled(ItemStack stack) {
359-
return stack.hasTag() && !stack.getTag().getBoolean(NaturesAura.MOD_ID + ":disabled");
362+
return stack.has(DisableableToolData.TYPE) && !stack.get(DisableableToolData.TYPE).disabled;
360363
}
361364

362365
public static boolean toggleToolEnabled(Player player, ItemStack stack) {
363366
if (!player.isShiftKeyDown())
364367
return false;
365-
var disabled = !Helper.isToolEnabled(stack);
366-
stack.getOrCreateTag().putBoolean(NaturesAura.MOD_ID + ":disabled", !disabled);
368+
stack.set(DisableableToolData.TYPE, new DisableableToolData(Helper.isToolEnabled(stack)));
367369
player.level().playSound(null, player.getX() + 0.5, player.getY() + 0.5, player.getZ() + 0.5, SoundEvents.ARROW_HIT_PLAYER, SoundSource.PLAYERS, 0.65F, 1F);
368370
return true;
369371
}
@@ -377,4 +379,13 @@ public static BlockPos readBlockPos(Tag tag) {
377379
return null;
378380
}
379381

382+
public record DisableableToolData(boolean disabled) {
383+
384+
public static final Codec<DisableableToolData> CODEC = RecordCodecBuilder.create(i -> i.group(
385+
Codec.BOOL.fieldOf("disabled").forGetter(d -> d.disabled)
386+
).apply(i, DisableableToolData::new));
387+
public static final DataComponentType<DisableableToolData> TYPE = DataComponentType.<DisableableToolData>builder().persistent(DisableableToolData.CODEC).cacheEncoding().build();
388+
389+
}
390+
380391
}

Diff for: src/main/java/de/ellpeck/naturesaura/api/aura/container/ItemAuraContainer.java

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package de.ellpeck.naturesaura.api.aura.container;
22

3+
import com.mojang.serialization.Codec;
4+
import com.mojang.serialization.codecs.RecordCodecBuilder;
35
import de.ellpeck.naturesaura.api.aura.type.IAuraType;
4-
import net.minecraft.nbt.CompoundTag;
6+
import net.minecraft.core.component.DataComponentType;
57
import net.minecraft.world.item.ItemStack;
68

79
public class ItemAuraContainer implements IAuraContainer {
@@ -37,16 +39,13 @@ public int drainAura(int amountToDrain, boolean simulate) {
3739
}
3840

3941
private void setAura(int amount) {
40-
if (!this.stack.hasTag()) {
41-
this.stack.setTag(new CompoundTag());
42-
}
43-
this.stack.getTag().putInt("aura", amount);
42+
this.stack.set(Data.TYPE, new Data(amount));
4443
}
4544

4645
@Override
4746
public int getStoredAura() {
48-
if (this.stack.hasTag()) {
49-
return this.stack.getTag().getInt("aura");
47+
if (this.stack.has(Data.TYPE)) {
48+
return this.stack.get(Data.TYPE).auraAmount;
5049
} else {
5150
return 0;
5251
}
@@ -66,4 +65,14 @@ public int getAuraColor() {
6665
public boolean isAcceptableType(IAuraType type) {
6766
return this.type == null || this.type == type;
6867
}
68+
69+
public record Data(int auraAmount) {
70+
71+
public static final Codec<Data> CODEC = RecordCodecBuilder.create(i -> i.group(
72+
Codec.INT.fieldOf("aura_amount").forGetter(d -> d.auraAmount)
73+
).apply(i, Data::new));
74+
public static final DataComponentType<Data> TYPE = DataComponentType.<Data>builder().persistent(Data.CODEC).cacheEncoding().build();
75+
76+
}
77+
6978
}

Diff for: src/main/java/de/ellpeck/naturesaura/blocks/BlockEnderCrate.java

+16-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package de.ellpeck.naturesaura.blocks;
22

3+
import com.mojang.serialization.Codec;
4+
import com.mojang.serialization.codecs.RecordCodecBuilder;
35
import de.ellpeck.naturesaura.NaturesAura;
46
import de.ellpeck.naturesaura.api.misc.ILevelData;
57
import de.ellpeck.naturesaura.blocks.tiles.BlockEntityEnderCrate;
@@ -13,29 +15,26 @@
1315
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
1416
import net.minecraft.client.resources.language.I18n;
1517
import net.minecraft.core.BlockPos;
18+
import net.minecraft.core.component.DataComponentType;
1619
import net.minecraft.core.particles.ParticleTypes;
1720
import net.minecraft.network.chat.Component;
18-
import net.minecraft.server.level.ServerPlayer;
1921
import net.minecraft.util.RandomSource;
20-
import net.minecraft.world.InteractionHand;
2122
import net.minecraft.world.InteractionResult;
2223
import net.minecraft.world.entity.player.Player;
2324
import net.minecraft.world.item.Item;
2425
import net.minecraft.world.item.ItemStack;
2526
import net.minecraft.world.item.Items;
2627
import net.minecraft.world.item.TooltipFlag;
27-
import net.minecraft.world.level.BlockGetter;
2828
import net.minecraft.world.level.Level;
2929
import net.minecraft.world.level.block.SoundType;
3030
import net.minecraft.world.level.block.state.BlockState;
3131
import net.minecraft.world.phys.BlockHitResult;
3232
import net.neoforged.api.distmarker.Dist;
3333
import net.neoforged.api.distmarker.OnlyIn;
34+
import net.neoforged.bus.api.SubscribeEvent;
3435
import net.neoforged.neoforge.common.NeoForge;
3536
import net.neoforged.neoforge.event.AnvilUpdateEvent;
36-
import net.neoforged.bus.api.SubscribeEvent;
3737

38-
import javax.annotation.Nullable;
3938
import java.util.List;
4039

4140
public class BlockEnderCrate extends BlockContainerImpl implements ITESRProvider<BlockEntityEnderCrate>, ICustomBlockState {
@@ -47,9 +46,9 @@ public BlockEnderCrate() {
4746
}
4847

4948
public static String getEnderName(ItemStack stack) {
50-
if (!stack.hasTag())
49+
if (!stack.has(Data.TYPE))
5150
return "";
52-
return stack.getTag().getString(NaturesAura.MOD_ID + ":ender_name");
51+
return stack.get(Data.TYPE).enderName;
5352
}
5453

5554
@OnlyIn(Dist.CLIENT)
@@ -79,7 +78,7 @@ public void onAnvilUpdate(AnvilUpdateEvent event) {
7978
if (ILevelData.getOverworldData(player.level()).isEnderStorageLocked(name))
8079
return;
8180
var output = stack.copy();
82-
output.getOrCreateTag().putString(NaturesAura.MOD_ID + ":ender_name", name);
81+
output.set(Data.TYPE, new Data(name));
8382
event.setOutput(output);
8483
event.setMaterialCost(stack.getCount());
8584
event.setCost(1);
@@ -131,4 +130,13 @@ public void registerTESR() {
131130
BlockEntityRenderers.register(ModBlockEntities.ENDER_CRATE, RenderEnderCrate::new);
132131
}
133132

133+
public record Data(String enderName) {
134+
135+
public static final Codec<Data> CODEC = RecordCodecBuilder.create(i -> i.group(
136+
Codec.STRING.fieldOf("name").forGetter(d -> d.enderName)
137+
).apply(i, Data::new));
138+
public static final DataComponentType<Data> TYPE = DataComponentType.<Data>builder().persistent(Data.CODEC).cacheEncoding().build();
139+
140+
}
141+
134142
}

Diff for: src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityEnderCrate.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,8 @@ public void dropInventory() {
9393

9494
@Override
9595
public void modifyDrop(ItemStack regularItem) {
96-
if (this.name != null) {
97-
if (!regularItem.hasTag())
98-
regularItem.setTag(new CompoundTag());
99-
regularItem.getTag().putString(NaturesAura.MOD_ID + ":ender_name", this.name);
100-
}
96+
if (this.name != null)
97+
regularItem.set(BlockEnderCrate.Data.TYPE, new BlockEnderCrate.Data(this.name));
10198
}
10299

103100
@Override

Diff for: src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityFireworkGenerator.java

+15-16
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import de.ellpeck.naturesaura.packet.PacketHandler;
55
import de.ellpeck.naturesaura.packet.PacketParticles;
66
import net.minecraft.core.BlockPos;
7-
import net.minecraft.nbt.CompoundTag;
7+
import net.minecraft.core.component.DataComponents;
88
import net.minecraft.util.Mth;
99
import net.minecraft.world.entity.Entity;
1010
import net.minecraft.world.entity.item.ItemEntity;
@@ -57,35 +57,33 @@ public void tick() {
5757
}
5858

5959
if (this.trackedEntity != null && !this.trackedEntity.isAlive()) {
60-
if (this.trackedItem.hasTag()) {
60+
if (this.trackedItem.has(DataComponents.FIREWORKS)) {
6161
float generateFactor = 0;
6262
Set<Integer> usedColors = new HashSet<>();
6363

64-
var compound = this.trackedItem.getTag();
65-
var fireworks = compound.getCompound("Fireworks");
64+
var fireworks = this.trackedItem.get(DataComponents.FIREWORKS);
6665

67-
var flightTime = fireworks.getInt("Flight");
68-
var explosions = fireworks.getList("Explosions", 10);
66+
var flightTime = fireworks.flightDuration();
67+
var explosions = fireworks.explosions();
6968
if (!explosions.isEmpty()) {
7069
generateFactor += flightTime;
7170

72-
for (var base : explosions) {
73-
var explosion = (CompoundTag) base;
71+
for (var explosion : explosions) {
7472
generateFactor += 1.5F;
7573

76-
var flicker = explosion.getBoolean("Flicker");
74+
var flicker = explosion.hasTwinkle();
7775
if (flicker)
7876
generateFactor += 1;
7977

80-
var trail = explosion.getBoolean("Trail");
78+
var trail = explosion.hasTrail();
8179
if (trail)
8280
generateFactor += 8;
8381

84-
var type = explosion.getByte("Type");
85-
generateFactor += new float[]{0, 1, 0.5F, 20, 0.5F}[type];
82+
var type = explosion.shape();
83+
generateFactor += new float[]{0, 1, 0.5F, 20, 0.5F}[type.getId()];
8684

8785
Set<Integer> colors = new HashSet<>();
88-
for (var color : explosion.getIntArray("Colors")) {
86+
for (var color : explosion.colors()) {
8987
usedColors.add(color);
9088
colors.add(color);
9189
}
@@ -106,8 +104,8 @@ public void tick() {
106104
data.add(this.worldPosition.getZ());
107105
data.addAll(usedColors);
108106
PacketHandler.sendToAllLoaded(this.level, this.worldPosition, new PacketParticles(
109-
(float) this.trackedEntity.getX(), (float) this.trackedEntity.getY(), (float) this.trackedEntity.getZ(),
110-
PacketParticles.Type.FIREWORK_GEN, Ints.toArray(data)));
107+
(float) this.trackedEntity.getX(), (float) this.trackedEntity.getY(), (float) this.trackedEntity.getZ(),
108+
PacketParticles.Type.FIREWORK_GEN, Ints.toArray(data)));
111109
}
112110
}
113111

@@ -122,7 +120,7 @@ public void tick() {
122120
this.toRelease = 0;
123121

124122
PacketHandler.sendToAllLoaded(this.level, this.worldPosition,
125-
new PacketParticles(this.worldPosition.getX(), this.worldPosition.getY(), this.worldPosition.getZ(), PacketParticles.Type.FLOWER_GEN_AURA_CREATION));
123+
new PacketParticles(this.worldPosition.getX(), this.worldPosition.getY(), this.worldPosition.getZ(), PacketParticles.Type.FLOWER_GEN_AURA_CREATION));
126124
}
127125
}
128126
}
@@ -132,4 +130,5 @@ public void tick() {
132130
public boolean wantsLimitRemover() {
133131
return true;
134132
}
133+
135134
}

Diff for: src/main/java/de/ellpeck/naturesaura/blocks/tiles/BlockEntityImpl.java

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package de.ellpeck.naturesaura.blocks.tiles;
22

3+
import com.mojang.serialization.Codec;
4+
import com.mojang.serialization.codecs.RecordCodecBuilder;
35
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
46
import de.ellpeck.naturesaura.blocks.ModBlocks;
57
import net.minecraft.core.BlockPos;
68
import net.minecraft.core.Direction;
79
import net.minecraft.core.HolderLookup;
10+
import net.minecraft.core.component.DataComponentType;
811
import net.minecraft.nbt.CompoundTag;
912
import net.minecraft.network.Connection;
1013
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
@@ -103,16 +106,13 @@ public void dropInventory() {
103106
public void modifyDrop(ItemStack regularItem) {
104107
var compound = new CompoundTag();
105108
this.writeNBT(compound, SaveType.BLOCK, this.getLevel().registryAccess());
106-
if (!compound.isEmpty()) {
107-
if (!regularItem.hasTag())
108-
regularItem.setTag(new CompoundTag());
109-
regularItem.getTag().put("data", compound);
110-
}
109+
if (!compound.isEmpty())
110+
regularItem.set(DroppedItemData.TYPE, new DroppedItemData(compound));
111111
}
112112

113113
public void loadDataOnPlace(ItemStack stack) {
114-
if (stack.hasTag()) {
115-
var compound = stack.getTag().getCompound("data");
114+
if (stack.has(DroppedItemData.TYPE)) {
115+
var compound = stack.get(DroppedItemData.TYPE).data;
116116
if (compound != null)
117117
this.readNBT(compound, SaveType.BLOCK, this.level.registryAccess());
118118
}
@@ -161,4 +161,13 @@ public enum SaveType {
161161
TILE, SYNC, BLOCK
162162
}
163163

164+
public record DroppedItemData(CompoundTag data) {
165+
166+
public static final Codec<DroppedItemData> CODEC = RecordCodecBuilder.create(i -> i.group(
167+
CompoundTag.CODEC.fieldOf("data").forGetter(d -> d.data)
168+
).apply(i, DroppedItemData::new));
169+
public static final DataComponentType<DroppedItemData> TYPE = DataComponentType.<DroppedItemData>builder().persistent(DroppedItemData.CODEC).cacheEncoding().build();
170+
171+
}
172+
164173
}

Diff for: src/main/java/de/ellpeck/naturesaura/chunk/AuraChunk.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import de.ellpeck.naturesaura.packet.PacketAuraChunk;
1414
import de.ellpeck.naturesaura.packet.PacketHandler;
1515
import net.minecraft.core.BlockPos;
16+
import net.minecraft.core.HolderLookup;
1617
import net.minecraft.nbt.CompoundTag;
1718
import net.minecraft.nbt.ListTag;
1819
import net.minecraft.resources.ResourceLocation;
@@ -168,15 +169,15 @@ public void update() {
168169
if (this.needsSync) {
169170
var pos = this.chunk.getPos();
170171
PacketHandler.sendToAllLoaded(level,
171-
new BlockPos(pos.x * 16, 0, pos.z * 16),
172-
this.makePacket());
172+
new BlockPos(pos.x * 16, 0, pos.z * 16),
173+
this.makePacket());
173174
this.needsSync = false;
174175
}
175176
}
176177

177178
public PacketAuraChunk makePacket() {
178179
var pos = this.chunk.getPos();
179-
return new PacketAuraChunk(pos.x, pos.z, this.drainSpots.values());
180+
return new PacketAuraChunk(pos.x, pos.z, this.drainSpots.values().stream().map(DrainSpot::serializeNBT).toList());
180181
}
181182

182183
public void getSpots(BlockPos pos, int radius, BiConsumer<BlockPos, Integer> consumer) {
@@ -222,8 +223,8 @@ public Pair<BlockPos, Integer>[] getLowestAndHighestSpots(BlockPos pos, int radi
222223
}
223224
});
224225
ret = new Pair[]{
225-
Pair.of(lowestSpot.getValue(), lowestAmount.intValue()),
226-
Pair.of(highestSpot.getValue(), highestAmount.intValue())};
226+
Pair.of(lowestSpot.getValue(), lowestAmount.intValue()),
227+
Pair.of(highestSpot.getValue(), highestAmount.intValue())};
227228
this.limitSpotCache.put(pos, radius, ret);
228229
}
229230
return ret;
@@ -249,7 +250,7 @@ public void getActiveEffectIcons(Player player, Map<ResourceLocation, Tuple<Item
249250
}
250251

251252
@Override
252-
public CompoundTag serializeNBT() {
253+
public CompoundTag serializeNBT(HolderLookup.Provider registries) {
253254
var list = new ListTag();
254255
for (var spot : this.drainSpots.values())
255256
list.add(spot.serializeNBT());
@@ -259,7 +260,7 @@ public CompoundTag serializeNBT() {
259260
}
260261

261262
@Override
262-
public void deserializeNBT(CompoundTag compound) {
263+
public void deserializeNBT(HolderLookup.Provider registries, CompoundTag compound) {
263264
this.drainSpots.clear();
264265
var list = compound.getList("drain_spots", 10);
265266
for (var base : list)

0 commit comments

Comments
 (0)