diff --git a/src/main/java/org/violetmoon/quark/base/world/WorldGenHandler.java b/src/main/java/org/violetmoon/quark/base/world/WorldGenHandler.java index 58be91ff5d..d79f7bc33f 100644 --- a/src/main/java/org/violetmoon/quark/base/world/WorldGenHandler.java +++ b/src/main/java/org/violetmoon/quark/base/world/WorldGenHandler.java @@ -3,6 +3,8 @@ import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.WorldGenRegion; @@ -56,12 +58,12 @@ public static void register(ZRegister event) { ResourceLocation resloc = new ResourceLocation(Quark.MOD_ID, "deferred_feature_" + stage.name().toLowerCase(Locale.ROOT)); //fixme IThundxr - ewwww worldgen (i still love you minecraft) - //Holder> featureHolder = BuiltInRegistries.register(Registries.CONFIGURED_FEATURE, resloc, feature); + Holder> featureHolder = Holder.direct(feature); - //PlacedFeature placed = new PlacedFeature(featureHolder, List.of()); - //Holder placedHolder = BuiltInRegistries.register(Registries.PLACED_FEATURE, resloc, placed); + PlacedFeature placed = new PlacedFeature(featureHolder, List.of()); + Holder placedHolder = Holder.direct(placed); - //defers.put(stage, placedHolder); + defers.put(stage, placedHolder); } } diff --git a/src/main/java/org/violetmoon/quark/content/world/module/GlimmeringWealdModule.java b/src/main/java/org/violetmoon/quark/content/world/module/GlimmeringWealdModule.java index f1399ed9b1..c66208e096 100644 --- a/src/main/java/org/violetmoon/quark/content/world/module/GlimmeringWealdModule.java +++ b/src/main/java/org/violetmoon/quark/content/world/module/GlimmeringWealdModule.java @@ -2,25 +2,50 @@ import com.google.common.collect.ImmutableSet; import net.minecraft.core.Holder; +import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BiomeDefaultFeatures; +import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.biome.OverworldBiomes; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.data.worldgen.placement.OrePlacements; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.Music; +import net.minecraft.sounds.Musics; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; import net.minecraft.world.item.Item; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeGenerationSettings; import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MobSpawnSettings; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.config.Config; import org.violetmoon.quark.base.handler.GeneralConfig; +import org.violetmoon.quark.base.handler.QuarkSounds; import org.violetmoon.quark.base.handler.UndergroundBiomeHandler; +import org.violetmoon.quark.base.util.registryaccess.RegistryAccessUtil; +import org.violetmoon.quark.content.mobs.module.StonelingsModule; import org.violetmoon.quark.content.world.block.GlowLichenGrowthBlock; import org.violetmoon.quark.content.world.block.GlowShroomBlock; import org.violetmoon.quark.content.world.block.GlowShroomRingBlock; import org.violetmoon.quark.content.world.block.HugeGlowShroomBlock; +import org.violetmoon.quark.content.world.feature.GlowExtrasFeature; +import org.violetmoon.quark.content.world.feature.GlowShroomsFeature; import org.violetmoon.zeta.advancement.modifier.AdventuringTimeModifier; import org.violetmoon.zeta.event.bus.LoadEvent; import org.violetmoon.zeta.event.load.ZCommonSetup; @@ -29,14 +54,24 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; +import java.util.List; + @ZetaLoadModule(category = "world") public class GlimmeringWealdModule extends ZetaModule { private static final Climate.Parameter FULL_RANGE = Climate.Parameter.span(-1.0F, 1.0F); public static final ResourceLocation BIOME_NAME = new ResourceLocation(Quark.MOD_ID, "glimmering_weald"); public static final ResourceKey BIOME_KEY = ResourceKey.create(Registries.BIOME, BIOME_NAME); - - //public static final Holder ORE_LAPIS_EXTRA = PlacementUtils.register("ore_lapis_glimmering_weald", OreFeatures.ORE_LAPIS, OrePlacements.commonOrePlacement(12, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(0)))); + + public static final BootstapContext bootstapContext = new RegistrySetBuilder().createState(RegistryAccessUtil.getRegistryAccess()).bootstapContext(); + public static final BootstapContext> bootstapContextConfig = new RegistrySetBuilder().createState(RegistryAccessUtil.getRegistryAccess()).bootstapContext(); + public static final BootstapContext> bootstapContextWorld = new RegistrySetBuilder().createState(RegistryAccessUtil.getRegistryAccess()).bootstapContext(); + + + static { + } + + public static final Holder ORE_LAPIS_EXTRA = bootstapContext.register(ResourceKey.create(Registries.PLACED_FEATURE, new ResourceLocation("quark", "ore_lapis_glimmering_weald")), new PlacedFeature(bootstapContext.lookup(Registries.CONFIGURED_FEATURE).getOrThrow(OreFeatures.ORE_LAPIS), OrePlacements.commonOrePlacement(12, HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(0))))); public static Holder placed_glow_shrooms; public static Holder placed_glow_extras; @@ -71,13 +106,13 @@ public final void register(ZRegister event) { event.getVariantRegistry().addFlowerPot(glow_shroom, "glow_shroom", prop -> prop.lightLevel((state) -> 10)); //fixme - //makeFeatures(); + makeFeatures(); } @LoadEvent public void postRegister(ZRegister.Post e) { //fixme - //Quark.ZETA.registry.register(makeBiome(), BIOME_NAME, Registries.BIOME); + Quark.ZETA.registry.register(makeBiome(), BIOME_NAME, Registries.BIOME); float wmin = (float) minDepthRange; float wmax = (float) maxDepthRange; if(wmin >= wmax){ @@ -107,47 +142,47 @@ public void setup(ZCommonSetup e) { } //fixme -// private static void makeFeatures() { -// placed_glow_shrooms = place("glow_shrooms", new GlowShroomsFeature(), GlowShroomsFeature.placed()); -// placed_glow_extras = place("glow_extras", new GlowExtrasFeature(), GlowExtrasFeature.placed()); -// } + private static void makeFeatures() { + placed_glow_shrooms = place("glow_shrooms", new GlowShroomsFeature(), GlowShroomsFeature.placed()); + placed_glow_extras = place("glow_extras", new GlowExtrasFeature(), GlowExtrasFeature.placed()); + } - //fixme -// private static Holder place(String featureName, Feature feature, List placer) { -// String name = Quark.MOD_ID + ":" + featureName; -// -// Quark.ZETA.registry.register(feature, name, Registries.FEATURE); -// Holder> configured = FeatureUtils.register(name, feature, NoneFeatureConfiguration.NONE); -// return PlacementUtils.register(name, configured, placer); -// } - //fixme -// private static Biome makeBiome() { -// MobSpawnSettings.Builder mobs = new MobSpawnSettings.Builder(); -// BiomeDefaultFeatures.commonSpawns(mobs); -// -// if(Quark.ZETA.modules.isEnabled(StonelingsModule.class)) -// mobs.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(StonelingsModule.stonelingType, 200, 1, 4)); -// mobs.addSpawn(MobCategory.UNDERGROUND_WATER_CREATURE, new MobSpawnSettings.SpawnerData(EntityType.GLOW_SQUID, 20, 4, 6)); -// -// BiomeGenerationSettings.Builder settings = new BiomeGenerationSettings.Builder(); -// OverworldBiomes.globalOverworldGeneration(settings); -// BiomeDefaultFeatures.addPlainGrass(settings); -// BiomeDefaultFeatures.addDefaultOres(settings, true); -// BiomeDefaultFeatures.addDefaultSoftDisks(settings); -// BiomeDefaultFeatures.addPlainVegetation(settings); -// BiomeDefaultFeatures.addDefaultMushrooms(settings); -// BiomeDefaultFeatures.addDefaultExtraVegetation(settings); -// -// settings.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, placed_glow_shrooms); -// settings.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, placed_glow_extras); -// -// settings.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ORE_LAPIS_EXTRA); -// -// Music music = Musics.createGameMusic(Holder.direct(QuarkSounds.MUSIC_GLIMMERING_WEALD)); -// Biome biome = OverworldBiomes.biome(Biome.Precipitation.RAIN, 0.8F, 0.4F, mobs, settings, music); -// -// return biome; -// } + private static Holder place(String featureName, Feature feature, List placer) { + String name = Quark.MOD_ID + ":" + featureName; + + Quark.ZETA.registry.register(feature, name, Registries.FEATURE); + Holder> configured = bootstapContextConfig.register(ResourceKey.create(Registries.CONFIGURED_FEATURE, new ResourceLocation(name)), new ConfiguredFeature<>(feature, NoneFeatureConfiguration.NONE)); + return bootstapContext.register(ResourceKey.create(Registries.PLACED_FEATURE, new ResourceLocation(name)), new PlacedFeature(configured, placer)); + } + + + private static Biome makeBiome() { + MobSpawnSettings.Builder mobs = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.commonSpawns(mobs); + + if(Quark.ZETA.modules.isEnabled(StonelingsModule.class)) + mobs.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(StonelingsModule.stonelingType, 200, 1, 4)); + mobs.addSpawn(MobCategory.UNDERGROUND_WATER_CREATURE, new MobSpawnSettings.SpawnerData(EntityType.GLOW_SQUID, 20, 4, 6)); + + BiomeGenerationSettings.Builder settings = new BiomeGenerationSettings.Builder(bootstapContext.lookup(Registries.PLACED_FEATURE), bootstapContextWorld.lookup(Registries.CONFIGURED_CARVER)); + OverworldBiomes.globalOverworldGeneration(settings); + BiomeDefaultFeatures.addPlainGrass(settings); + BiomeDefaultFeatures.addDefaultOres(settings, true); + BiomeDefaultFeatures.addDefaultSoftDisks(settings); + BiomeDefaultFeatures.addPlainVegetation(settings); + BiomeDefaultFeatures.addDefaultMushrooms(settings); + BiomeDefaultFeatures.addDefaultExtraVegetation(settings); + + settings.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, placed_glow_shrooms); + settings.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, placed_glow_extras); + + settings.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ORE_LAPIS_EXTRA); + + Music music = Musics.createGameMusic(Holder.direct(QuarkSounds.MUSIC_GLIMMERING_WEALD)); + Biome biome = OverworldBiomes.biome(true, 0.8F, 0.4F, mobs, settings, music); + + return biome; + } } diff --git a/src/main/java/org/violetmoon/quark/integration/terrablender/TerraBlenderIntegration.java b/src/main/java/org/violetmoon/quark/integration/terrablender/TerraBlenderIntegration.java index e8b1083d6f..e15c0eed7a 100644 --- a/src/main/java/org/violetmoon/quark/integration/terrablender/TerraBlenderIntegration.java +++ b/src/main/java/org/violetmoon/quark/integration/terrablender/TerraBlenderIntegration.java @@ -1,18 +1,6 @@ package org.violetmoon.quark.integration.terrablender; -import java.util.function.Consumer; -import java.util.function.Supplier; - -import net.minecraft.core.registries.Registries; -import org.violetmoon.quark.base.Quark; -import org.violetmoon.quark.base.handler.GeneralConfig; -import org.violetmoon.quark.base.handler.UndergroundBiomeHandler; -import org.violetmoon.quark.base.handler.UndergroundBiomeHandler.Proxy; -import org.violetmoon.quark.base.handler.UndergroundBiomeHandler.UndergroundBiomeSkeleton; -import org.violetmoon.zeta.event.load.ZLoadComplete; - import com.mojang.datafixers.util.Pair; - import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -20,12 +8,19 @@ import net.minecraft.world.level.biome.Climate; import net.minecraft.world.level.biome.Climate.ParameterPoint; import net.minecraft.world.level.biome.OverworldBiomeBuilder; -import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; -import net.minecraftforge.fml.event.lifecycle.ParallelDispatchEvent; +import org.violetmoon.quark.base.Quark; +import org.violetmoon.quark.base.handler.GeneralConfig; +import org.violetmoon.quark.base.handler.UndergroundBiomeHandler; +import org.violetmoon.quark.base.handler.UndergroundBiomeHandler.Proxy; +import org.violetmoon.quark.base.handler.UndergroundBiomeHandler.UndergroundBiomeSkeleton; +import org.violetmoon.zeta.event.load.ZLoadComplete; import terrablender.api.Region; import terrablender.api.RegionType; import terrablender.api.Regions; +import java.util.function.Consumer; +import java.util.function.Supplier; + public class TerraBlenderIntegration implements Supplier { private TBProxy proxy; @@ -53,9 +48,9 @@ public void addBiomes(Registry registry, Consumer resourceKey = ResourceKey.create(Registries.BIOME, skeleton.biome()); - mapper.accept(Pair.of(skeleton.climate(), resourceKey)); - didAnything = true; +// ResourceKey resourceKey = ResourceKey.create(Registries.BIOME, skeleton.biome()); +// mapper.accept(Pair.of(skeleton.climate(), resourceKey)); +// didAnything = true; } if(didAnything) diff --git a/src/main/java/org/violetmoon/quark/mixin/DamageSourcesMixin.java b/src/main/java/org/violetmoon/quark/mixin/DamageSourcesMixin.java index 01183f5cfc..e3ca67873c 100644 --- a/src/main/java/org/violetmoon/quark/mixin/DamageSourcesMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/DamageSourcesMixin.java @@ -2,21 +2,14 @@ import net.minecraft.world.damagesource.DamageSources; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.violetmoon.quark.content.tools.module.PickarangModule; - -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.player.Player; @Mixin(DamageSources.class) public class DamageSourcesMixin { - @Inject(method = "playerAttack", at = @At("HEAD"), cancellable = true) + /*@Inject(method = "playerAttack", at = @At("HEAD"), cancellable = true) private static void playerAttack(Player player, CallbackInfoReturnable callbackInfoReturnable) { DamageSource damage = PickarangModule.createDamageSource(player); if(damage != null) callbackInfoReturnable.setReturnValue(damage); - } + }*/ } diff --git a/src/main/java/org/violetmoon/quark/mixin/PlayerAdvancementsMixin.java b/src/main/java/org/violetmoon/quark/mixin/PlayerAdvancementsMixin.java index 2bad29602e..cd2756d655 100644 --- a/src/main/java/org/violetmoon/quark/mixin/PlayerAdvancementsMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/PlayerAdvancementsMixin.java @@ -10,7 +10,7 @@ public class PlayerAdvancementsMixin { @ModifyConstant(method = "evaluateVisibility(Lnet/minecraft/advancements/Advancement;Ljava/util/function/Predicate;Lnet/minecraft/server/advancements/AdvancementVisibilityEvaluator$Output;)V", constant = @Constant(intValue = 2)) - static int visibility(int curr) { + private static int visibility(int curr) { return GeneralConfig.advancementVisibilityDepth; } diff --git a/src/main/java/org/violetmoon/quark/mixin/PotionUtilsMixin.java b/src/main/java/org/violetmoon/quark/mixin/PotionUtilsMixin.java index 29b1e5718a..f34ebc0cab 100644 --- a/src/main/java/org/violetmoon/quark/mixin/PotionUtilsMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/PotionUtilsMixin.java @@ -1,28 +1,25 @@ package org.violetmoon.quark.mixin; import com.mojang.datafixers.util.Pair; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.alchemy.PotionUtils; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import org.violetmoon.quark.content.client.hax.PseudoAccessorItemStack; -import org.violetmoon.quark.content.client.module.ImprovedTooltipsModule; -import java.util.Collections; import java.util.List; @Mixin(value = PotionUtils.class) public class PotionUtilsMixin { - @ModifyVariable(method = "addPotionTooltip", at = @At(value = "INVOKE", target = "Ljava/util/List;isEmpty()Z", ordinal = 1, shift = At.Shift.BEFORE), ordinal = 2) - private static List> overrideAttributeTooltips(List> attributes, ItemStack stack) { - if (ImprovedTooltipsModule.shouldHideAttributes()) { + @ModifyVariable(method = "addPotionTooltip(Ljava/util/List;Ljava/util/List;F)V", at = @At(value = "INVOKE", target = "Ljava/util/List;isEmpty()Z", ordinal = 1, shift = At.Shift.BEFORE), ordinal = 2) + private static List> overrideAttributeTooltips(List> attributes, List mobEffects) { + /*if (ImprovedTooltipsModule.shouldHideAttributes()) { ((PseudoAccessorItemStack) (Object) stack).quark$capturePotionAttributes(attributes); return Collections.emptyList(); - } + }*/ return attributes; } } diff --git a/src/main/java/org/violetmoon/quark/mixin/ServerEntityMixin.java b/src/main/java/org/violetmoon/quark/mixin/ServerEntityMixin.java index 4d545a755f..5bea9999dc 100644 --- a/src/main/java/org/violetmoon/quark/mixin/ServerEntityMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/ServerEntityMixin.java @@ -2,6 +2,7 @@ import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerEntity; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.projectile.ThrownTrident; import org.spongepowered.asm.mixin.Final; @@ -32,7 +33,7 @@ private void updateTridentData(CallbackInfo ci) { } @Inject(method = "sendPairingData", at = @At("HEAD")) - private void pairTridentData(Consumer> send, CallbackInfo ci) { + private void pairTridentData(ServerPlayer serverPlayer, Consumer> send, CallbackInfo ci) { if (entity instanceof ThrownTrident trident) ColorRunesModule.syncTrident(send, trident, true); } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 9f8b81feb6..c1338c9396 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -75,4 +75,5 @@ public net.minecraft.data.worldgen.biome.OverworldBiomes m_264144_(ZFFLnet/minec public-f net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger$TriggerInstance f_285570_ # location public-f net.minecraft.advancements.critereon.ContextAwarePredicate f_285622_ # conditions public-f net.minecraft.advancements.critereon.ContextAwarePredicate f_285559_ # compositePredicates - +public net.minecraft.core.RegistrySetBuilder$BuildState +public net.minecraft.core.RegistrySetBuilder m_254900_(Lnet/minecraft/core/RegistryAccess;)Lnet/minecraft/core/RegistrySetBuilder$BuildState; # createState \ No newline at end of file