Skip to content

Commit

Permalink
refactor: move accessors to c2me-base
Browse files Browse the repository at this point in the history
  • Loading branch information
ishland committed May 27, 2023
1 parent edb5e17 commit fcfa1f9
Show file tree
Hide file tree
Showing 19 changed files with 67 additions and 118 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.world.chunk.BelowZeroRetrogen;
import net.minecraft.world.chunk.ChunkStatus;
Expand All @@ -10,7 +10,7 @@


@Mixin(value = BelowZeroRetrogen.class)
public interface BelowZeroRetrogenAccessor {
public interface IBelowZeroRetrogen {
@Accessor
BitSet getMissingBedrock();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.world.HeightLimitView;
import net.minecraft.world.gen.chunk.BlendingData;
Expand All @@ -7,7 +7,7 @@


@Mixin(value = BlendingData.class)
public interface BlendingDataAccessor {
public interface IBlendingData {
@Accessor
HeightLimitView getOldHeightLimit();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.block.BlockState;
import net.minecraft.registry.entry.RegistryEntry;
Expand All @@ -10,7 +10,7 @@
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(ChunkSection.class)
public interface ChunkSectionAccessor {
public interface IChunkSection {
@Accessor
PalettedContainer<BlockState> getBlockStateContainer();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.world.tick.ChunkTickScheduler;
import net.minecraft.world.tick.OrderedTick;
Expand All @@ -12,7 +12,7 @@
import java.util.Queue;

@Mixin(ChunkTickScheduler.class)
public interface ChunkTickSchedulerAccessor<T> extends SerializableTickScheduler<T> {
public interface IChunkTickScheduler<T> extends SerializableTickScheduler<T> {
@Accessor
@Nullable List<Tick<T>> getTicks();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.world.tick.SerializableTickScheduler;
import net.minecraft.world.tick.SimpleTickScheduler;
Expand All @@ -9,7 +9,7 @@
import java.util.List;

@Mixin(SimpleTickScheduler.class)
public interface SimpleTickSchedulerAccessor<T> extends SerializableTickScheduler<T> {
public interface ISimpleTickScheduler<T> extends SerializableTickScheduler<T> {
@Accessor
List<Tick<T>> getScheduledTicks();
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import com.mojang.serialization.MapCodec;
import net.minecraft.state.State;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(State.class)
public interface StateAccessor<S> {
public interface IState<S> {
@Accessor
MapCodec<S> getCodec();
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.structure.StructurePiece;
import net.minecraft.structure.StructurePieceType;
Expand All @@ -10,7 +10,7 @@
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(StructurePiece.class)
public interface StructurePieceAccessor {
public interface IStructurePiece {

@Accessor
StructurePieceType getType();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.structure.StructurePiecesList;
import net.minecraft.structure.StructureStart;
Expand All @@ -7,7 +7,7 @@
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(StructureStart.class)
public interface StructureStartAccessor {
public interface IStructureStart {
@Accessor
Structure getStructure();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ishland.c2me.rewrites.chunk_serializer.mixin;
package com.ishland.c2me.base.mixin.access;

import net.minecraft.util.math.EightWayDirection;
import net.minecraft.world.chunk.UpgradeData;
Expand All @@ -8,7 +8,7 @@
import java.util.EnumSet;

@Mixin(UpgradeData.class)
public interface UpgradeDataAccessor {
public interface IUpgradeData {
@Accessor
int[][] getCenterIndicesToUpgrade();

Expand Down
8 changes: 8 additions & 0 deletions c2me-base/src/main/resources/c2me-base.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@
"mixins": [
"access.IAquiferSamplerFluidLevel",
"access.IAtomicSimpleRandomDeriver",
"access.IBelowZeroRetrogen",
"access.IBlender",
"access.IBlendingData",
"access.IBlockEntity",
"access.IChunkGenerator",
"access.IChunkHolder",
"access.IChunkSection",
"access.IChunkTicket",
"access.IChunkTicketManager",
"access.IChunkTicketManagerNearbyChunkTicketUpdater",
"access.IChunkTickScheduler",
"access.IMultiNoiseBiomeSource",
"access.INbtCompound",
"access.IRegionBasedStorage",
Expand All @@ -21,7 +25,11 @@
"access.IServerChunkManager",
"access.IServerEntityManager",
"access.ISimpleRandom",
"access.ISimpleTickScheduler",
"access.IState",
"access.IStorageIoWorker",
"access.IStructurePiece",
"access.IStructureStart",
"access.IStructureWeightSampler",
"access.IThreadedAnvilChunkStorage",
"access.IVersionedChunkStorage",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

import com.ishland.c2me.rewrites.chunk_serializer.common.utils.LithiumUtil;
import com.ishland.c2me.rewrites.chunk_serializer.common.utils.StarLightUtil;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.BelowZeroRetrogenAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.BlendingDataAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.ChunkSectionAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.ChunkTickSchedulerAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.SimpleTickSchedulerAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.StateAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.StructurePieceAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.StructureStartAccessor;
import com.ishland.c2me.rewrites.chunk_serializer.mixin.UpgradeDataAccessor;
import com.ishland.c2me.base.mixin.access.IBelowZeroRetrogen;
import com.ishland.c2me.base.mixin.access.IBlendingData;
import com.ishland.c2me.base.mixin.access.IChunkSection;
import com.ishland.c2me.base.mixin.access.IChunkTickScheduler;
import com.ishland.c2me.base.mixin.access.ISimpleTickScheduler;
import com.ishland.c2me.base.mixin.access.IState;
import com.ishland.c2me.base.mixin.access.IStructurePiece;
import com.ishland.c2me.base.mixin.access.IStructureStart;
import com.ishland.c2me.base.mixin.access.IUpgradeData;
import com.mojang.serialization.Codec;
import it.unimi.dsi.fastutil.longs.LongSet;
import it.unimi.dsi.fastutil.shorts.ShortList;
Expand Down Expand Up @@ -177,23 +177,23 @@ public static void write(ServerWorld world, Chunk chunk, NbtWriter writer) {
if (blendingData != null) {
// Inline codec
writer.startCompound(STRING_BLENDING_DATA);
writeBlendingData(writer, (BlendingDataAccessor) blendingData);
writeBlendingData(writer, (IBlendingData) blendingData);
writer.finishCompound();
}

BelowZeroRetrogen belowZeroRetrogen = chunk.getBelowZeroRetrogen();
if (belowZeroRetrogen != null) {
// Inline codec
writer.startCompound(STRING_BELOW_ZERO_RETROGEN);
writeBelowZeroRetrogen(writer, (BelowZeroRetrogenAccessor) (Object) belowZeroRetrogen);
writeBelowZeroRetrogen(writer, (IBelowZeroRetrogen) (Object) belowZeroRetrogen);
writer.finishCompound();
}

UpgradeData upgradeData = chunk.getUpgradeData();
if (!upgradeData.isDone()) {
// Inline serialization
writer.startCompound(STRING_UPGRADE_DATA);
writeUpgradeData(writer, (UpgradeDataAccessor) upgradeData);
writeUpgradeData(writer, (IUpgradeData) upgradeData);
writer.finishCompound();
}

Expand All @@ -203,7 +203,7 @@ public static void write(ServerWorld world, Chunk chunk, NbtWriter writer) {

checkLightFlag(chunk, writer, world);

writeSectionData(writer, chunk, chunkPos, (ChunkSectionAccessor[]) chunkSections, lightingProvider, biomeRegistry);
writeSectionData(writer, chunk, chunkPos, (IChunkSection[]) chunkSections, lightingProvider, biomeRegistry);


long blockEntitiesStart = writer.startList(STRING_BLOCK_ENTITIES, NbtElement.COMPOUND_TYPE);
Expand Down Expand Up @@ -300,7 +300,7 @@ private static void writeSectionData(
NbtWriter writer,
Chunk chunk,
ChunkPos chunkPos,
ChunkSectionAccessor[] chunkSections,
IChunkSection[] chunkSections,
LightingProvider lightingProvider,
Registry<Biome> biomeRegistry
) {
Expand All @@ -318,7 +318,7 @@ private static void writeSectionDataVanilla(
NbtWriter writer,
Chunk chunk,
ChunkPos chunkPos,
ChunkSectionAccessor[] chunkSections,
IChunkSection[] chunkSections,
LightingProvider lightingProvider,
Registry<Biome> biomeRegistry
) {
Expand All @@ -339,7 +339,7 @@ private static void writeSectionDataVanilla(
if (bl2) {
hasInner = true;
writer.compoundEntryStart();
ChunkSectionAccessor chunkSection = chunkSections[index];
IChunkSection chunkSection = chunkSections[index];

writeBlockStates(writer, chunkSection.getBlockStateContainer());
writeBiomes(writer, chunkSection.getBiomeContainer(), biomeRegistry);
Expand Down Expand Up @@ -380,7 +380,7 @@ private static void writeSectionDataStarlight(
NbtWriter writer,
Chunk chunk,
ChunkPos chunkPos,
ChunkSectionAccessor[] chunkSections,
IChunkSection[] chunkSections,
LightingProvider lightingProvider,
Registry<Biome> biomeRegistry
) {
Expand Down Expand Up @@ -416,7 +416,7 @@ private static void writeSectionDataStarlight(
if (bl2) {
hasInner = true;
writer.compoundEntryStart();
ChunkSectionAccessor chunkSection = chunkSections[index];
IChunkSection chunkSection = chunkSections[index];

writeBlockStates(writer, chunkSection.getBlockStateContainer());
writeBiomes(writer, chunkSection.getBiomeContainer(), biomeRegistry);
Expand Down Expand Up @@ -496,7 +496,7 @@ private static void writeBlockStates(NbtWriter writer, PalettedContainer<BlockSt
writer.putRegistry(STRING_NAME, Registries.BLOCK, paletteEntry.getBlock());
if (!paletteEntry.getEntries().isEmpty()) {
// TODO: optimize this
writer.putElement(STRING_PROPERTIES, ((StateAccessor<BlockState>) paletteEntry).getCodec().codec()
writer.putElement(STRING_PROPERTIES, ((IState<BlockState>) paletteEntry).getCodec().codec()
.encodeStart(NbtOps.INSTANCE, paletteEntry)
.getOrThrow(false, LOGGER::error));
}
Expand Down Expand Up @@ -545,7 +545,7 @@ private static void writeBiomes(NbtWriter writer, ReadableContainer<RegistryEntr
/**
* mirror of {@link BlendingData#CODEC}
*/
private static void writeBlendingData(NbtWriter writer, BlendingDataAccessor blendingData) {
private static void writeBlendingData(NbtWriter writer, IBlendingData blendingData) {
writer.putInt(STRING_MIN_SECTION, blendingData.getOldHeightLimit().getBottomSectionCoord());
writer.putInt(STRING_MAX_SECTION, blendingData.getOldHeightLimit().getTopSectionCoord());

Expand All @@ -564,7 +564,7 @@ private static void writeBlendingData(NbtWriter writer, BlendingDataAccessor ble
/**
* mirror of {@link BelowZeroRetrogen#CODEC}
*/
private static void writeBelowZeroRetrogen(NbtWriter writer, BelowZeroRetrogenAccessor belowZeroRetrogen) {
private static void writeBelowZeroRetrogen(NbtWriter writer, IBelowZeroRetrogen belowZeroRetrogen) {
writer.putRegistry(STRING_TARGET_STATUS, Registries.CHUNK_STATUS, belowZeroRetrogen.invokeGetTargetStatus());

BitSet missingBedrock = belowZeroRetrogen.getMissingBedrock();
Expand All @@ -574,7 +574,7 @@ private static void writeBelowZeroRetrogen(NbtWriter writer, BelowZeroRetrogenAc
}


private static void writeUpgradeData(NbtWriter writer, UpgradeDataAccessor upgradeData) {
private static void writeUpgradeData(NbtWriter writer, IUpgradeData upgradeData) {
long indicesStart = -1;
int indicesCount = 0;

Expand Down Expand Up @@ -647,18 +647,18 @@ private static <T> void writeTicks(
DefaultedRegistry<T> reg,
byte[] key
) {
if (scheduler instanceof SimpleTickSchedulerAccessor<T> simpleTickSchedulerAccessor) {
if (scheduler instanceof ISimpleTickScheduler<T> simpleTickSchedulerAccessor) {
final List<Tick<T>> scheduledTicks = simpleTickSchedulerAccessor.getScheduledTicks();
writer.startFixedList(key, scheduledTicks.size(), NbtElement.COMPOUND_TYPE);
for (Tick<T> scheduledTick : scheduledTicks) {
writeTick(writer, scheduledTick, reg);
}
} else if (scheduler instanceof ChunkTickSchedulerAccessor<T> chunkTickSchedulerAccessor) {
} else if (scheduler instanceof IChunkTickScheduler<T> chunkTickSchedulerAccess) {

int size = 0;
long list = writer.startList(key, NbtElement.COMPOUND_TYPE);

final @Nullable List<Tick<T>> scheduledTicks = chunkTickSchedulerAccessor.getTicks();
final @Nullable List<Tick<T>> scheduledTicks = chunkTickSchedulerAccess.getTicks();

if (scheduledTicks != null) {
size += scheduledTicks.size();
Expand All @@ -669,7 +669,7 @@ private static <T> void writeTicks(
}

if (LithiumUtil.IS_LITHIUM_TICK_QUEUE_ACTIVE) {
final Collection<Collection<OrderedTick<T>>> tickQueues = LithiumUtil.getTickQueueCollection(chunkTickSchedulerAccessor);
final Collection<Collection<OrderedTick<T>>> tickQueues = LithiumUtil.getTickQueueCollection(chunkTickSchedulerAccess);

for (Collection<OrderedTick<T>> tickQueue : tickQueues) {
size += tickQueue.size();
Expand All @@ -678,7 +678,7 @@ private static <T> void writeTicks(
}
}
} else {
final Collection<OrderedTick<T>> tickQueue = chunkTickSchedulerAccessor.getTickQueue();
final Collection<OrderedTick<T>> tickQueue = chunkTickSchedulerAccess.getTickQueue();
size += tickQueue.size();

for (OrderedTick<T> orderedTick : tickQueue) {
Expand Down Expand Up @@ -743,7 +743,7 @@ private static void writeStructures(

for (var entry : starts.entrySet()) {
writer.startCompound(NbtWriter.getNameBytesFromRegistry(configuredStructureFeatureRegistry, entry.getKey()));
StructureStartAccessor value = cast(entry.getValue());
IStructureStart value = cast(entry.getValue());
writeStructureStart(writer, value, context, pos);
writer.finishCompound();
}
Expand All @@ -767,7 +767,7 @@ private static void writeStructures(
* <p>
* section mirror of {@link StructurePiecesList#toNbt(StructureContext)}
*/
private static void writeStructureStart(NbtWriter writer, StructureStartAccessor structureStart, StructureContext context, ChunkPos pos) {
private static void writeStructureStart(NbtWriter writer, IStructureStart structureStart, StructureContext context, ChunkPos pos) {
final StructurePiecesList children = structureStart.getChildren();
if (children.isEmpty()) {
writer.putString(STRING_ID, STRING_INVALID);
Expand All @@ -788,7 +788,7 @@ private static void writeStructureStart(NbtWriter writer, StructureStartAccessor
}

@SuppressWarnings("unused")
private static void writeStructurePiece(NbtWriter writer, StructurePieceAccessor structurePiece, StructureContext context) {
private static void writeStructurePiece(NbtWriter writer, IStructurePiece structurePiece, StructureContext context) {
writer.compoundEntryStart();
writer.putRegistry(STRING_ID, Registries.STRUCTURE_PIECE, structurePiece.getType());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ishland.c2me.rewrites.chunk_serializer.common.utils;

import com.ishland.c2me.rewrites.chunk_serializer.mixin.ChunkTickSchedulerAccessor;
import com.ishland.c2me.base.mixin.access.IChunkTickScheduler;
import it.unimi.dsi.fastutil.longs.Long2ReferenceAVLTreeMap;
import net.minecraft.world.tick.ChunkTickScheduler;
import net.minecraft.world.tick.OrderedTick;
Expand Down Expand Up @@ -28,7 +28,7 @@ public class LithiumUtil {

public static final boolean IS_LITHIUM_TICK_QUEUE_ACTIVE = chunkTickScheduler$TickQueuesByTimeAndPriority != null;

public static <T> Collection<Collection<OrderedTick<T>>> getTickQueueCollection(ChunkTickSchedulerAccessor<T> accessor) {
public static <T> Collection<Collection<OrderedTick<T>>> getTickQueueCollection(IChunkTickScheduler<T> accessor) {
try {
//noinspection unchecked
Long2ReferenceAVLTreeMap<Collection<OrderedTick<T>>> tickQueuesByTimeAndPriority =
Expand Down
Loading

0 comments on commit fcfa1f9

Please sign in to comment.