From a4359e1ad544e55ec1a56ecd2206e1dca66ce215 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 12 May 2024 15:21:02 -0400 Subject: [PATCH] Remove structure location optimization as Mojang fixed it in 1.20.5 --- .../ServerLevelMixin.java | 22 -------- .../StructureCheckMixin.java | 51 ------------------- 2 files changed, 73 deletions(-) delete mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/ServerLevelMixin.java delete mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/StructureCheckMixin.java diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/ServerLevelMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/ServerLevelMixin.java deleted file mode 100644 index 393ae367..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/ServerLevelMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.faster_structure_location; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.server.level.ServerChunkCache; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.levelgen.structure.StructureCheck; -import org.embeddedt.modernfix.duck.IStructureCheck; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(ServerLevel.class) -public class ServerLevelMixin { - @Shadow @Final private ServerChunkCache chunkSource; - - @ModifyExpressionValue(method = "", at = @At(value = "NEW", target = "(Lnet/minecraft/world/level/chunk/storage/ChunkScanAccess;Lnet/minecraft/core/RegistryAccess;Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/chunk/ChunkGenerator;Lnet/minecraft/world/level/levelgen/RandomState;Lnet/minecraft/world/level/LevelHeightAccessor;Lnet/minecraft/world/level/biome/BiomeSource;JLcom/mojang/datafixers/DataFixer;)Lnet/minecraft/world/level/levelgen/structure/StructureCheck;", ordinal = 0)) - private StructureCheck attachGeneratorState(StructureCheck check) { - ((IStructureCheck)check).mfix$setStructureState(this.chunkSource.getGeneratorState()); - return check; - } -} diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/StructureCheckMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/StructureCheckMixin.java deleted file mode 100644 index 8b9e2b23..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_structure_location/StructureCheckMixin.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.faster_structure_location; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.core.Registry; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.chunk.ChunkGeneratorStructureState; -import net.minecraft.world.level.levelgen.structure.Structure; -import net.minecraft.world.level.levelgen.structure.StructureCheck; -import net.minecraft.world.level.levelgen.structure.StructureCheckResult; -import org.embeddedt.modernfix.duck.IStructureCheck; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(StructureCheck.class) -public class StructureCheckMixin implements IStructureCheck { - @Shadow @Final private Registry structureConfigs; - - private ChunkGeneratorStructureState mfix$structureState; - - @Override - public void mfix$setStructureState(ChunkGeneratorStructureState state) { - mfix$structureState = state; - } - - /** - * @author embeddedt (inspired by 24w04a and Bytzo's comment on https://bugs.mojang.com/browse/MC-249136) - * @reason Avoid running the canCreateStructure method (which can be expensive) if the structure placement already - * forbids placing the structure in this chunk. - */ - @ModifyExpressionValue(method = "checkStart", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/levelgen/structure/StructureCheck;tryLoadFromStorage(Lnet/minecraft/world/level/ChunkPos;Lnet/minecraft/world/level/levelgen/structure/Structure;ZJ)Lnet/minecraft/world/level/levelgen/structure/StructureCheckResult;")) - private StructureCheckResult mfix$checkForValidPosition(StructureCheckResult storageResult, ChunkPos chunkPos, Structure structure, boolean skipKnownStructures) { - if (storageResult != null) { - return storageResult; - } else if(mfix$structureState != null) { - // Check if any of the placements allow for this structure to be in this chunk - var structureHolder = this.structureConfigs.wrapAsHolder(structure); - for (var placement : mfix$structureState.getPlacementsForStructure(structureHolder)) { - if (placement.isStructureChunk(mfix$structureState, chunkPos.x, chunkPos.z)) { - // Allowed - return null so regular check runs - return null; - } - } - // Not allowed - early exit by returning a non-null value - return StructureCheckResult.START_NOT_PRESENT; - } else { - return null; - } - } -}