Skip to content

Commit 9eea447

Browse files
committed
switch everything to use codecs
1 parent 5148240 commit 9eea447

File tree

24 files changed

+78
-52
lines changed

24 files changed

+78
-52
lines changed

Common/src/main/java/at/petrak/hexcasting/api/addldata/ADIotaHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public interface ADIotaHolder {
1515
default Iota readIota(ServerLevel world) {
1616
var tag = readIotaTag();
1717
if (tag != null) {
18-
return HexUtils.deserializeWithCodec(tag, Iota.getCodec(world));
18+
return HexUtils.deserializeWithCodec(tag, Iota.CODEC.get().codec());
1919
} else {
2020
return null;
2121
}

Common/src/main/java/at/petrak/hexcasting/api/casting/eval/ResolvedPattern.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package at.petrak.hexcasting.api.casting.eval
22

3+
import at.petrak.hexcasting.api.HexAPI
34
import at.petrak.hexcasting.api.casting.math.HexCoord
45
import at.petrak.hexcasting.api.casting.math.HexPattern
56
import at.petrak.hexcasting.api.utils.NBTBuilder
7+
import at.petrak.hexcasting.api.utils.deserializeWithCodec
8+
import at.petrak.hexcasting.api.utils.serializeWithCodec
69
import com.mojang.serialization.Codec
710
import com.mojang.serialization.codecs.RecordCodecBuilder
811
import net.minecraft.nbt.CompoundTag
12+
import net.minecraft.nbt.NbtOps
913
import java.util.*
1014

1115

@@ -23,12 +27,7 @@ data class ResolvedPattern(val pattern: HexPattern, val origin: HexCoord, var ty
2327
get() = origin.r
2428

2529
@Deprecated("Use the CODEC instead.")
26-
fun serializeToNBT() = NBTBuilder {
27-
"Pattern" %= pattern.serializeToNBT()
28-
"OriginQ" %= origin.q
29-
"OriginR" %= origin.r
30-
"Valid" %= type.name.lowercase(Locale.ROOT)
31-
}
30+
fun serializeToNBT() = this.serializeWithCodec(CODEC)
3231

3332
companion object {
3433
@JvmField
@@ -45,11 +44,6 @@ data class ResolvedPattern(val pattern: HexPattern, val origin: HexCoord, var ty
4544

4645
@Deprecated("Use the CODEC instead.")
4746
@JvmStatic
48-
fun fromNBT(tag: CompoundTag): ResolvedPattern {
49-
val pattern = HexPattern.fromNBT(tag.getCompound("Pattern"))
50-
val origin = HexCoord(tag.getInt("OriginQ"), tag.getInt("OriginR"))
51-
val valid = ResolvedPatternType.fromString(tag.getString("Valid"))
52-
return ResolvedPattern(pattern, origin, valid)
53-
}
47+
fun fromNBT(tag: CompoundTag): ResolvedPattern = tag.deserializeWithCodec(CODEC)!!
5448
}
5549
}
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package at.petrak.hexcasting.api.casting.mishaps
22

33
import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
4+
import at.petrak.hexcasting.api.casting.iota.GarbageIota
45
import at.petrak.hexcasting.api.casting.iota.Iota
56
import at.petrak.hexcasting.api.pigment.FrozenPigment
67
import at.petrak.hexcasting.api.utils.aqua
@@ -10,13 +11,32 @@ import net.minecraft.world.entity.Entity
1011
import net.minecraft.world.entity.item.ItemEntity
1112
import net.minecraft.world.item.DyeColor
1213

13-
class MishapEntityNotFound : Mishap() {
14+
class MishapEntityNotFound(
15+
val perpetrator: Iota,
16+
val reverseIdx: Int,
17+
) : Mishap() {
1418
override fun accentColor(ctx: CastingEnvironment, errorCtx: Context): FrozenPigment =
1519
dyeColor(DyeColor.BROWN)
1620

1721
override fun execute(env: CastingEnvironment, errorCtx: Context, stack: MutableList<Iota>) {
22+
stack[stack.size - 1 - reverseIdx] = GarbageIota();
1823
}
1924

2025
override fun errorMessage(ctx: CastingEnvironment, errorCtx: Context) =
21-
error("entity_not_found")
26+
error(
27+
"entity_not_found", reverseIdx,
28+
perpetrator.display()
29+
)
30+
companion object {
31+
@JvmStatic
32+
fun ofType(perpetrator: Iota, reverseIdx: Int): MishapEntityNotFound {
33+
return of(perpetrator, reverseIdx)
34+
}
35+
36+
@JvmStatic
37+
fun of(perpetrator: Iota, reverseIdx: Int): MishapEntityNotFound {
38+
val key = "hexcasting.mishap.entity_not_found"
39+
return MishapEntityNotFound(perpetrator, reverseIdx)
40+
}
41+
}
2242
}

Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapOthersName.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,14 @@ class MishapOthersName(val confidant: Player) : Mishap() {
3434
* If `caster` is non-null, it will ignore that when checking.
3535
*/
3636
@JvmStatic
37-
fun getTrueNameFromDatum(datum: Iota, caster: Player?, world: ServerLevel): Player? {
37+
fun getTrueNameFromDatum(datum: Iota, caster: Player?): Player? {
3838
val poolToSearch = ArrayDeque<Iota>()
3939
poolToSearch.addLast(datum)
4040

4141
while (poolToSearch.isNotEmpty()) {
4242
val datumToCheck = poolToSearch.removeFirst()
43-
if (datumToCheck is EntityIota && datumToCheck.isTrueName) {
44-
val player = datumToCheck.getEntity(world) as Player
45-
if (player != caster)
46-
return player
47-
}
43+
if (datumToCheck is EntityIota && datumToCheck.uuid != caster?.uuid)
44+
return datumToCheck.getEntity(caster?.level() as ServerLevel) as? Player
4845
val datumSubIotas = datumToCheck.subIotas()
4946
if (datumSubIotas != null)
5047
poolToSearch.addAll(datumSubIotas)
@@ -54,8 +51,8 @@ class MishapOthersName(val confidant: Player) : Mishap() {
5451
}
5552

5653
@JvmStatic
57-
fun getTrueNameFromArgs(datums: List<Iota>, caster: Player?, world: ServerLevel): Player? {
58-
return datums.firstNotNullOfOrNull { getTrueNameFromDatum(it, caster, world) }
54+
fun getTrueNameFromArgs(datums: List<Iota>, caster: Player?): Player? {
55+
return datums.firstNotNullOfOrNull { getTrueNameFromDatum(it, caster) }
5956
}
6057
}
6158
}

Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ default Iota readIota(ItemStack stack, ServerLevel world) {
4646

4747
var tag = dh.readIotaTag(stack);
4848
if (tag != null) {
49-
return HexUtils.deserializeWithCodec(tag, Iota.getCodec(world));
49+
return HexUtils.deserializeWithCodec(tag, Iota.CODEC.get().codec());
5050
} else {
5151
return null;
5252
}

Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockEntityAkashicBookshelf.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public CompoundTag getIotaTag() {
4343
public void setNewMapping(HexPattern pattern, Iota iota) {
4444
var previouslyEmpty = this.pattern == null;
4545
this.pattern = pattern;
46-
this.iotaTag = (CompoundTag) HexUtils.serializeWithCodec(iota, Iota.getCodec());
46+
this.iotaTag = (CompoundTag) HexUtils.serializeWithCodec(iota, Iota.CODEC.get().codec());
4747

4848
if (previouslyEmpty) {
4949
var oldBs = this.getBlockState();

Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java

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

33
import at.petrak.hexcasting.api.block.HexBlockEntity;
44
import at.petrak.hexcasting.api.casting.math.HexPattern;
5+
import at.petrak.hexcasting.api.utils.HexUtils;
56
import at.petrak.hexcasting.client.render.HexPatternPoints;
67
import at.petrak.hexcasting.common.lib.HexBlockEntities;
78
import net.minecraft.core.BlockPos;
@@ -10,6 +11,8 @@
1011
import net.minecraft.world.level.block.state.BlockState;
1112
import org.jetbrains.annotations.Nullable;
1213

14+
import java.util.Objects;
15+
1316
public class BlockEntitySlate extends HexBlockEntity {
1417
public static final String TAG_PATTERN = "pattern";
1518

@@ -24,7 +27,7 @@ public BlockEntitySlate(BlockPos pos, BlockState state) {
2427
@Override
2528
protected void saveModData(CompoundTag tag) {
2629
if (this.pattern != null) {
27-
tag.put(TAG_PATTERN, this.pattern.serializeToNBT());
30+
tag.put(TAG_PATTERN, Objects.requireNonNull(HexUtils.serializeWithCodec(this.pattern, HexPattern.CODEC)));
2831
} else {
2932
tag.put(TAG_PATTERN, new CompoundTag());
3033
}
@@ -35,7 +38,7 @@ protected void loadModData(CompoundTag tag) {
3538
if (tag.contains(TAG_PATTERN, Tag.TAG_COMPOUND)) {
3639
CompoundTag patternTag = tag.getCompound(TAG_PATTERN);
3740
if (HexPattern.isPattern(patternTag)) {
38-
this.pattern = HexPattern.fromNBT(patternTag);
41+
this.pattern = HexUtils.deserializeWithCodec(patternTag, HexPattern.CODEC);
3942
} else {
4043
this.pattern = null;
4144
}

Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Pla
5454
if (datumContainer != null) {
5555
var stored = datumContainer.readIota(level);
5656
if (stored instanceof EntityIota eieio) {
57-
var entity = eieio.getEntity();
57+
var entity = eieio.getEntity((ServerLevel) pLevel);
5858
if (entity instanceof Player player) {
5959
// phew, we got something
6060
tile.setPlayer(player.getGameProfile(), entity.getUUID());

Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ private static int giveAll(CommandSourceStack source, Collection<ServerPlayer> t
100100

101101
var tag = new CompoundTag();
102102
tag.putString(ItemScroll.TAG_OP_ID, key.location().toString());
103-
tag.put(ItemScroll.TAG_PATTERN, pat.serializeToNBT());
103+
tag.put(ItemScroll.TAG_PATTERN, HexUtils.serializeWithCodec(pat, HexPattern.CODEC));
104104

105105
var stack = new ItemStack(HexItems.SCROLL_LARGE);
106106
stack.setTag(tag);
@@ -134,7 +134,7 @@ private static int giveOne(CommandSourceStack source, Collection<ServerPlayer> t
134134
if (!targets.isEmpty()) {
135135
var tag = new CompoundTag();
136136
tag.putString(ItemScroll.TAG_OP_ID, patternName.toString());
137-
tag.put(ItemScroll.TAG_PATTERN, pat.serializeToNBT());
137+
tag.put(ItemScroll.TAG_PATTERN, HexUtils.serializeWithCodec(pat, HexPattern.CODEC));
138138

139139
var stack = new ItemStack(HexItems.SCROLL_LARGE);
140140
stack.setTag(tag);

Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public EntityWallScroll(Level world, BlockPos pos, Direction dir, ItemStack scro
7171
public void recalculateDisplay() {
7272
CompoundTag patternTag = NBTHelper.getCompound(scroll, ItemScroll.TAG_PATTERN);
7373
if (patternTag != null) {
74-
this.pattern = HexPattern.fromNBT(patternTag);
74+
this.pattern = HexUtils.deserializeWithCodec(patternTag, HexPattern.CODEC);
7575
if (this.level().isClientSide) {
7676
var pair = RenderLib.getCenteredPattern(pattern, 128f / 3 * blockSize, 128f / 3 * blockSize,
7777
16f / 3 * blockSize);

0 commit comments

Comments
 (0)