From 5a6fc19bb014cf6c025ea33e71f5d3b5c7a0802e Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 11 Nov 2021 22:49:26 +0100 Subject: [PATCH] 1.18-pre1 --- gradle.properties | 4 ++-- .../carpet/fakes/PlacedFeatureInterface.java | 9 ++++++++ .../fakes/StructureFeatureInterface.java | 2 +- .../java/carpet/helpers/FeatureGenerator.java | 17 ++++++++------- .../mixins/PlacedFeature_scarpetMixin.java | 21 +++++++++++++++++++ .../carpet/mixins/ServerWorld_tickMixin.java | 9 +++----- .../carpet/mixins/StructureFeatureMixin.java | 8 ++++--- .../mixins/WorldChunk_movableTEMixin.java | 7 +++---- .../java/carpet/script/utils/BiomeInfo.java | 3 ++- src/main/resources/carpet.mixins.json | 1 + 10 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 src/main/java/carpet/fakes/PlacedFeatureInterface.java create mode 100644 src/main/java/carpet/mixins/PlacedFeature_scarpetMixin.java diff --git a/gradle.properties b/gradle.properties index 358bdfa5..5e4f5fb7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=21w44a - yarn_mappings=21w44a+build.10 + minecraft_version=1.18-pre1 + yarn_mappings=1.18-pre1+build.2 loader_version=0.12.5 fabric_version=0.42.1+1.18 diff --git a/src/main/java/carpet/fakes/PlacedFeatureInterface.java b/src/main/java/carpet/fakes/PlacedFeatureInterface.java new file mode 100644 index 00000000..b55d9702 --- /dev/null +++ b/src/main/java/carpet/fakes/PlacedFeatureInterface.java @@ -0,0 +1,9 @@ +package carpet.fakes; + +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.FeatureConfig; + +public interface PlacedFeatureInterface { + ConfiguredFeature getRawFeature(); +} diff --git a/src/main/java/carpet/fakes/StructureFeatureInterface.java b/src/main/java/carpet/fakes/StructureFeatureInterface.java index ed8eefd2..b1316944 100644 --- a/src/main/java/carpet/fakes/StructureFeatureInterface.java +++ b/src/main/java/carpet/fakes/StructureFeatureInterface.java @@ -13,5 +13,5 @@ import net.minecraft.world.gen.feature.FeatureConfig; public interface StructureFeatureInterface { boolean plopAnywhere(ServerWorld world, BlockPos pos, ChunkGenerator generator, boolean wireOnly,Biome biome, C config); - boolean shouldStartPublicAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long l, ChunkRandom chunkRandom, ChunkPos chpos, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView); + boolean shouldStartPublicAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long l, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView); } diff --git a/src/main/java/carpet/helpers/FeatureGenerator.java b/src/main/java/carpet/helpers/FeatureGenerator.java index 01103629..6936536d 100644 --- a/src/main/java/carpet/helpers/FeatureGenerator.java +++ b/src/main/java/carpet/helpers/FeatureGenerator.java @@ -1,10 +1,13 @@ package carpet.helpers; import carpet.CarpetSettings; +import carpet.fakes.PlacedFeatureInterface; import carpet.fakes.StructureFeatureInterface; import com.mojang.datafixers.util.Pair; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.class_6796; +import net.minecraft.class_6797; import net.minecraft.server.world.ServerWorld; import net.minecraft.structure.StructureManager; import net.minecraft.structure.StructureStart; @@ -185,11 +188,11 @@ public class FeatureGenerator private static ConfiguredFeature getDefaultFeature(Feature feature, ServerWorld world, BlockPos pos, boolean tryHard) { - List>>> configuredStepFeatures = world.getBiome(pos).getGenerationSettings().getFeatures(); - for (List>> step: configuredStepFeatures) - for (Supplier> provider: step) + List>> configuredStepFeatures = world.getBiome(pos).getGenerationSettings().getFeatures(); + for (List> step: configuredStepFeatures) + for (Supplier provider: step) { - ConfiguredFeature configuredFeature = provider.get(); + ConfiguredFeature configuredFeature = ((PlacedFeatureInterface)provider.get()).getRawFeature(); if (configuredFeature.feature == feature) return configuredFeature; } @@ -258,9 +261,9 @@ public class FeatureGenerator put("coral_claw", simplePlop(Feature.CORAL_CLAW.configure(FeatureConfig.DEFAULT))); put("coral_mushroom", simplePlop(Feature.CORAL_MUSHROOM.configure(FeatureConfig.DEFAULT))); put("coral", simplePlop(Feature.SIMPLE_RANDOM_SELECTOR.configure(new SimpleRandomFeatureConfig(List.of( - () -> Feature.CORAL_TREE.configure(FeatureConfig.DEFAULT), - () -> Feature.CORAL_CLAW.configure(FeatureConfig.DEFAULT), - () -> Feature.CORAL_MUSHROOM.configure(FeatureConfig.DEFAULT) + () -> Feature.CORAL_TREE.configure(FeatureConfig.DEFAULT).method_39594(new class_6797[0]), + () -> Feature.CORAL_CLAW.configure(FeatureConfig.DEFAULT).method_39594(new class_6797[0]), + () -> Feature.CORAL_MUSHROOM.configure(FeatureConfig.DEFAULT).method_39594(new class_6797[0]) ))))); put("bastion_remnant_units", spawnCustomStructure( StructureFeature.BASTION_REMNANT, diff --git a/src/main/java/carpet/mixins/PlacedFeature_scarpetMixin.java b/src/main/java/carpet/mixins/PlacedFeature_scarpetMixin.java new file mode 100644 index 00000000..301f9a97 --- /dev/null +++ b/src/main/java/carpet/mixins/PlacedFeature_scarpetMixin.java @@ -0,0 +1,21 @@ +package carpet.mixins; + +import carpet.fakes.PlacedFeatureInterface; +import net.minecraft.class_6796; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.function.Supplier; + +@Mixin(class_6796.class) +public class PlacedFeature_scarpetMixin implements PlacedFeatureInterface { + + @Shadow @Final private Supplier> field_35732; + + @Override + public ConfiguredFeature getRawFeature() { + return field_35732.get(); + } +} diff --git a/src/main/java/carpet/mixins/ServerWorld_tickMixin.java b/src/main/java/carpet/mixins/ServerWorld_tickMixin.java index e3c5445d..689d8528 100644 --- a/src/main/java/carpet/mixins/ServerWorld_tickMixin.java +++ b/src/main/java/carpet/mixins/ServerWorld_tickMixin.java @@ -136,13 +136,10 @@ public abstract class ServerWorld_tickMixin extends World if (TickSpeed.process_entities) worldBorder.tick(); } - @Redirect(method = "tick", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/dimension/DimensionType;hasSkyLight()Z" - )) - private boolean tickWorldBorder(DimensionType dimension) + @Inject(method = "method_39501", cancellable = true, at = @At("HEAD")) + private void tickWorldBorder(CallbackInfo ci) { - return TickSpeed.process_entities && dimension.hasSkyLight(); + if (!TickSpeed.process_entities) ci.cancel(); } @Redirect(method = "tick", at = @At( diff --git a/src/main/java/carpet/mixins/StructureFeatureMixin.java b/src/main/java/carpet/mixins/StructureFeatureMixin.java index 5a96bc7c..f4d08e86 100644 --- a/src/main/java/carpet/mixins/StructureFeatureMixin.java +++ b/src/main/java/carpet/mixins/StructureFeatureMixin.java @@ -44,10 +44,12 @@ public abstract class StructureFeatureMixin implements //@Shadow protected abstract boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, ChunkRandom random, ChunkPos chunkPos, Biome biome, ChunkPos chunkPos2, C featureConfig, HeightLimitView heightLimitView); - @Shadow protected abstract boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, ChunkRandom random, ChunkPos pos, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView); + //@Shadow protected abstract boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, ChunkRandom random, ChunkPos pos, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView); + @Shadow protected abstract boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView); @Shadow @Final private class_6622 field_34929; + @Override public boolean plopAnywhere(ServerWorld world, BlockPos pos, ChunkGenerator generator, boolean wireOnly, Biome biome, C config) { @@ -157,8 +159,8 @@ public abstract class StructureFeatureMixin implements } @Override - public boolean shouldStartPublicAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long l, ChunkRandom chunkRandom, ChunkPos chpos, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView) + public boolean shouldStartPublicAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long l, ChunkPos chunkPos, C featureConfig, HeightLimitView heightLimitView) { - return shouldStartAt(chunkGenerator, biomeSource, l, chunkRandom, chpos, chunkPos, featureConfig, heightLimitView); + return shouldStartAt(chunkGenerator, biomeSource, l, chunkPos, featureConfig, heightLimitView); } } diff --git a/src/main/java/carpet/mixins/WorldChunk_movableTEMixin.java b/src/main/java/carpet/mixins/WorldChunk_movableTEMixin.java index b9bc2f35..297134b2 100644 --- a/src/main/java/carpet/mixins/WorldChunk_movableTEMixin.java +++ b/src/main/java/carpet/mixins/WorldChunk_movableTEMixin.java @@ -16,11 +16,11 @@ import net.minecraft.world.Heightmap; //import net.minecraft.world.TickScheduler; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; -import net.minecraft.world.chunk.BlendingData; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.ChunkSection; import net.minecraft.world.chunk.UpgradeData; import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.gen.chunk.Blender; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -35,9 +35,8 @@ public abstract class WorldChunk_movableTEMixin extends Chunk implements WorldCh @Final World world; - public WorldChunk_movableTEMixin(ChunkPos chunkPos, UpgradeData upgradeData, HeightLimitView heightLimitView, Registry registry, long l, @Nullable ChunkSection[] chunkSections, @Nullable BlendingData blendingData) - { - super(chunkPos, upgradeData, heightLimitView, registry, l, chunkSections, blendingData); + public WorldChunk_movableTEMixin(ChunkPos pos, UpgradeData upgradeData, HeightLimitView heightLimitView, Registry biome, long inhabitedTime, @Nullable ChunkSection[] sectionArrayInitializer, @Nullable Blender blendingData) { + super(pos, upgradeData, heightLimitView, biome, inhabitedTime, sectionArrayInitializer, blendingData); } @Shadow diff --git a/src/main/java/carpet/script/utils/BiomeInfo.java b/src/main/java/carpet/script/utils/BiomeInfo.java index 29c624dd..065a6795 100644 --- a/src/main/java/carpet/script/utils/BiomeInfo.java +++ b/src/main/java/carpet/script/utils/BiomeInfo.java @@ -1,6 +1,7 @@ package carpet.script.utils; import carpet.fakes.BiomeEffectsInterface; +import carpet.fakes.PlacedFeatureInterface; import carpet.script.value.BlockValue; import carpet.script.value.ListValue; import carpet.script.value.NumericValue; @@ -41,7 +42,7 @@ public class BiomeInfo return ListValue.wrap( b.getGenerationSettings().getFeatures().stream().map(step -> ListValue.wrap(step.stream().map(cfp -> - ValueConversions.of(registry.getId(cfp.get())) + ValueConversions.of(registry.getId(((PlacedFeatureInterface)cfp.get()).getRawFeature())) )) ) ); diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 85774352..38769ce1 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -102,6 +102,7 @@ "World_scarpetPlopMixin", "ChunkRegion_scarpetPlopMixin", "StructurePiece_scarpetPlopMixin", + "PlacedFeature_scarpetMixin", "ServerPlayNetworkHandler_scarpetEventsMixin", "ServerPlayerInteractionManager_scarpetEventsMixin",