From d24f711e2789efa51ddd9e2bd6b0e2847943001b Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 23 Feb 2022 22:15:48 +0100 Subject: [PATCH] 1.18.2-pre3 --- gradle.properties | 2 +- .../java/carpet/helpers/FeatureGenerator.java | 2 +- .../java/carpet/mixins/Husk_templesMixin.java | 4 ++-- .../script/command/CommandArgument.java | 3 ++- .../java/carpet/utils/SpawnOverrides.java | 20 +++++++++++++++---- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1e2bb15a..a39bdb49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=1.18.2-pre2 + minecraft_version=1.18.2-pre3 loader_version=0.12.12 fabric_version=0.46.2+1.18 diff --git a/src/main/java/carpet/helpers/FeatureGenerator.java b/src/main/java/carpet/helpers/FeatureGenerator.java index 3390309c..fba161d4 100644 --- a/src/main/java/carpet/helpers/FeatureGenerator.java +++ b/src/main/java/carpet/helpers/FeatureGenerator.java @@ -206,7 +206,7 @@ public class FeatureGenerator ChunkGeneratorInterface cgi = (ChunkGeneratorInterface) generator; List structureConfig = cgi.getPlacementsForFeatureCM(structure); ChunkPos chunkPos = new ChunkPos(pos); - boolean couldPlace = structureConfig.stream().anyMatch(p -> p.isFeatureChunk(generator, chunkPos.x, chunkPos.z)); + boolean couldPlace = structureConfig.stream().anyMatch(p -> p.isFeatureChunk(generator, world.getSeed(), chunkPos.x, chunkPos.z)); if (!couldPlace) return null; final HolderSet structureBiomes = structure.biomes(); diff --git a/src/main/java/carpet/mixins/Husk_templesMixin.java b/src/main/java/carpet/mixins/Husk_templesMixin.java index 24d0254e..9877200d 100644 --- a/src/main/java/carpet/mixins/Husk_templesMixin.java +++ b/src/main/java/carpet/mixins/Husk_templesMixin.java @@ -3,10 +3,10 @@ package carpet.mixins; import carpet.CarpetSettings; import carpet.utils.SpawnOverrides; import net.minecraft.core.BlockPos; -import net.minecraft.data.worldgen.StructureFeatures; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.monster.Husk; import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.structure.BuiltinStructures; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -18,6 +18,6 @@ public class Husk_templesMixin private static boolean isSkylightOrTempleVisible(ServerLevelAccessor serverWorldAccess, BlockPos pos) { return serverWorldAccess.canSeeSky(pos) || - (CarpetSettings.huskSpawningInTemples && SpawnOverrides.isStructureAtPosition((ServerLevel)serverWorldAccess, StructureFeatures.DESERT_PYRAMID.value().feature, pos)); + (CarpetSettings.huskSpawningInTemples && SpawnOverrides.isStructureAtPosition((ServerLevel)serverWorldAccess, BuiltinStructures.DESERT_PYRAMID, pos)); } } diff --git a/src/main/java/carpet/script/command/CommandArgument.java b/src/main/java/carpet/script/command/CommandArgument.java index 4eacc2e4..b38e4fb7 100644 --- a/src/main/java/carpet/script/command/CommandArgument.java +++ b/src/main/java/carpet/script/command/CommandArgument.java @@ -72,6 +72,7 @@ import net.minecraft.commands.arguments.ObjectiveArgument; import net.minecraft.commands.arguments.ObjectiveCriteriaArgument; import net.minecraft.commands.arguments.ParticleArgument; import net.minecraft.commands.arguments.RangeArgument; +import net.minecraft.commands.arguments.ResourceKeyArgument; import net.minecraft.commands.arguments.ResourceLocationArgument; import net.minecraft.commands.arguments.ResourceOrTagLocationArgument; import net.minecraft.commands.arguments.ScoreHolderArgument; @@ -209,7 +210,7 @@ public abstract class CommandArgument (c, p) -> ValueConversions.of( ResourceLocationArgument.getId(c, p)), (ctx, builder) -> SharedSuggestionProvider.suggestResource(ctx.getSource().getServer().getLootTables().getIds(), builder) ), new VanillaUnconfigurableArgument("attribute", ResourceLocationArgument::id, - (c, p) -> ValueConversions.of( Registry.ATTRIBUTE.getKey(ResourceLocationArgument.getAttribute(c, p))), (ctx, builder) -> SharedSuggestionProvider.suggestResource(Registry.ATTRIBUTE.keySet(), builder) + (c, p) -> ValueConversions.of( Registry.ATTRIBUTE.getKey(ResourceKeyArgument.getAttribute(c, p))), (ctx, builder) -> SharedSuggestionProvider.suggestResource(Registry.ATTRIBUTE.keySet(), builder) ), new VanillaUnconfigurableArgument("boss", ResourceLocationArgument::id, (c, p) -> ValueConversions.of( ResourceLocationArgument.getId(c, p)), BossBarCommands.SUGGEST_BOSS_BAR diff --git a/src/main/java/carpet/utils/SpawnOverrides.java b/src/main/java/carpet/utils/SpawnOverrides.java index 7bf671aa..6e717e4a 100644 --- a/src/main/java/carpet/utils/SpawnOverrides.java +++ b/src/main/java/carpet/utils/SpawnOverrides.java @@ -1,12 +1,13 @@ package carpet.utils; import carpet.CarpetSettings; -import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.longs.LongSet; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.Registry; import net.minecraft.core.SectionPos; import net.minecraft.data.worldgen.StructureFeatures; +import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.random.WeightedRandomList; import net.minecraft.world.entity.EntityType; @@ -18,10 +19,12 @@ import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.levelgen.feature.StructureFeature; import net.minecraft.world.level.levelgen.structure.StructureSpawnOverride; import net.minecraft.world.level.levelgen.structure.StructureStart; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; import org.apache.commons.lang3.tuple.Pair; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.function.BooleanSupplier; public class SpawnOverrides { @@ -69,7 +72,16 @@ public class SpawnOverrides { return null; } - public static boolean isStructureAtPosition(ServerLevel level, StructureFeature structure, BlockPos pos) + public static boolean isStructureAtPosition(ServerLevel level, ResourceKey> structureKey, BlockPos pos) + { + final ConfiguredStructureFeature fortressFeature = level.registryAccess().registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY).get(structureKey); + if (fortressFeature == null) { + return false; + } + return level.structureFeatureManager().getStructureAt(pos, fortressFeature).isValid(); + } + + public static boolean isStructureAtPosition(ServerLevel level, StructureFeature structure, BlockPos pos) { for(StructureStart structureStart : startsForFeature(level, SectionPos.of(pos), structure)) { if (structureStart.getBoundingBox().isInside(pos) && structureStart.isValid()) {