Some more Changes for 1.18.2
This commit is contained in:
parent
2dbbfe04d8
commit
305ac05ac1
23 changed files with 148 additions and 186 deletions
13
src/main/java/ru/bclib/mixin/common/BiomeAccessor.java
Normal file
13
src/main/java/ru/bclib/mixin/common/BiomeAccessor.java
Normal file
|
@ -0,0 +1,13 @@
|
|||
package ru.bclib.mixin.common;
|
||||
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(Biome.class)
|
||||
public interface BiomeAccessor {
|
||||
@Accessor("biomeCategory")
|
||||
@Mutable
|
||||
Biome.BiomeCategory bclib_getBiomeCategory();
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package ru.bclib.mixin.common;
|
||||
|
||||
import com.google.common.base.Suppliers;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
import net.minecraft.world.level.biome.BiomeSource.StepFeatureData;
|
||||
|
@ -12,6 +13,7 @@ import ru.bclib.interfaces.BiomeSourceAccessor;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Mixin(BiomeSource.class)
|
||||
public abstract class BiomeSourceMixin implements BiomeSourceAccessor {
|
||||
|
@ -19,10 +21,10 @@ public abstract class BiomeSourceMixin implements BiomeSourceAccessor {
|
|||
|
||||
@Shadow public abstract Set<Biome> possibleBiomes();
|
||||
|
||||
@Mutable @Shadow @Final private List<StepFeatureData> featuresPerStep;
|
||||
@Mutable @Shadow @Final private Supplier<List<StepFeatureData>> featuresPerStep;
|
||||
|
||||
public void bclRebuildFeatures(){
|
||||
BCLib.LOGGER.info("Rebuilding features in BiomeSource " + this);
|
||||
featuresPerStep = buildFeaturesPerStep(this.possibleBiomes().stream().toList(), true);
|
||||
featuresPerStep = Suppliers.memoize(() -> buildFeaturesPerStep(this.possibleBiomes().stream().toList(), true));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,17 @@ import com.mojang.serialization.Lifecycle;
|
|||
import net.minecraft.core.MappedRegistry;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.core.WritableRegistry;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
import net.minecraft.world.level.biome.MultiNoiseBiomeSource;
|
||||
import net.minecraft.world.level.dimension.DimensionType;
|
||||
import net.minecraft.world.level.dimension.LevelStem;
|
||||
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
|
||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||
import net.minecraft.world.level.levelgen.structure.StructureSet;
|
||||
import net.minecraft.world.level.levelgen.synth.NormalNoise;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
|
@ -23,41 +28,40 @@ import java.util.OptionalInt;
|
|||
@Mixin(DimensionType.class)
|
||||
public class DimensionTypeMixin {
|
||||
@Inject(
|
||||
method = "defaultDimensions(Lnet/minecraft/core/RegistryAccess;JZ)Lnet/minecraft/core/MappedRegistry;",
|
||||
method = "defaultDimensions(Lnet/minecraft/core/RegistryAccess;JZ)Lnet/minecraft/core/Registry;",
|
||||
locals = LocalCapture.CAPTURE_FAILHARD,
|
||||
at = @At("TAIL")
|
||||
)
|
||||
private static void bclib_updateDimensions(RegistryAccess registryAccess, long seed, boolean bl, CallbackInfoReturnable<MappedRegistry<LevelStem>> info, MappedRegistry<LevelStem> mappedRegistry, Registry<DimensionType> registry, Registry<Biome> biomeRegistry, Registry<NoiseGeneratorSettings> noiseSettingsRegistry, Registry<NormalNoise.NoiseParameters> noiseParamRegistry) {
|
||||
int id = mappedRegistry.getId(mappedRegistry.get(LevelStem.NETHER));
|
||||
mappedRegistry.registerOrOverride(
|
||||
OptionalInt.of(id),
|
||||
LevelStem.NETHER,
|
||||
new LevelStem(
|
||||
() -> registry.getOrThrow(DimensionType.NETHER_LOCATION),
|
||||
new NoiseBasedChunkGenerator(
|
||||
noiseParamRegistry,
|
||||
new BCLibNetherBiomeSource(biomeRegistry, seed),
|
||||
seed,
|
||||
() -> noiseSettingsRegistry.getOrThrow(NoiseGeneratorSettings.NETHER)
|
||||
)
|
||||
),
|
||||
Lifecycle.stable()
|
||||
private static void bclib_updateDimensions(RegistryAccess registryAccess, long seed, boolean bl, CallbackInfoReturnable<MappedRegistry<LevelStem>> info, @NotNull MappedRegistry<LevelStem> writableRegistry, Registry<DimensionType> registry, Registry<Biome> biomeRegistry, Registry<StructureSet> structureRegistry, Registry<NoiseGeneratorSettings> noiseSettingsRegistry, Registry<NormalNoise.NoiseParameters> noiseParamRegistry) {
|
||||
int id = writableRegistry.getId(writableRegistry.get(LevelStem.NETHER));
|
||||
writableRegistry.register(
|
||||
LevelStem.NETHER,
|
||||
new LevelStem(
|
||||
registry.getOrCreateHolder(DimensionType.NETHER_LOCATION),
|
||||
new NoiseBasedChunkGenerator(
|
||||
structureRegistry,
|
||||
noiseParamRegistry,
|
||||
new BCLibNetherBiomeSource(biomeRegistry, seed),
|
||||
seed,
|
||||
noiseSettingsRegistry.getOrCreateHolder(NoiseGeneratorSettings.NETHER))
|
||||
),
|
||||
Lifecycle.stable()
|
||||
);
|
||||
|
||||
id = mappedRegistry.getId(mappedRegistry.get(LevelStem.END));
|
||||
mappedRegistry.registerOrOverride(
|
||||
OptionalInt.of(id),
|
||||
LevelStem.END,
|
||||
new LevelStem(
|
||||
() -> registry.getOrThrow(DimensionType.END_LOCATION),
|
||||
new NoiseBasedChunkGenerator(
|
||||
noiseParamRegistry,
|
||||
new BCLibEndBiomeSource(biomeRegistry, seed),
|
||||
seed,
|
||||
() -> noiseSettingsRegistry.getOrThrow(NoiseGeneratorSettings.END)
|
||||
)
|
||||
),
|
||||
Lifecycle.stable()
|
||||
|
||||
|
||||
id = writableRegistry.getId(writableRegistry.get(LevelStem.END));
|
||||
writableRegistry.register(
|
||||
LevelStem.END,
|
||||
new LevelStem(
|
||||
registry.getOrCreateHolder(DimensionType.END_LOCATION),
|
||||
new NoiseBasedChunkGenerator(
|
||||
structureRegistry,
|
||||
noiseParamRegistry,
|
||||
new BCLibEndBiomeSource(biomeRegistry, seed),
|
||||
seed,
|
||||
noiseSettingsRegistry.getOrCreateHolder(NoiseGeneratorSettings.END))
|
||||
),
|
||||
Lifecycle.stable()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,9 @@ package ru.bclib.mixin.common;
|
|||
import com.mojang.authlib.GameProfileRepository;
|
||||
import com.mojang.authlib.minecraft.MinecraftSessionService;
|
||||
import com.mojang.datafixers.DataFixer;
|
||||
import net.minecraft.core.RegistryAccess.RegistryHolder;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.ServerResources;
|
||||
import net.minecraft.server.WorldStem;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.progress.ChunkProgressListenerFactory;
|
||||
import net.minecraft.server.packs.repository.PackRepository;
|
||||
|
@ -32,7 +31,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
@Mixin(MinecraftServer.class)
|
||||
public class MinecraftServerMixin {
|
||||
@Shadow
|
||||
private ServerResources resources;
|
||||
private MinecraftServer.ReloadableResources resources;
|
||||
|
||||
@Final
|
||||
@Shadow
|
||||
|
@ -43,7 +42,7 @@ public class MinecraftServerMixin {
|
|||
protected WorldData worldData;
|
||||
|
||||
@Inject(method = "<init>*", at = @At("TAIL"))
|
||||
private void bclib_onServerInit(Thread thread, RegistryHolder registryHolder, LevelStorageAccess levelStorageAccess, WorldData worldData, PackRepository packRepository, Proxy proxy, DataFixer dataFixer, ServerResources serverResources, MinecraftSessionService minecraftSessionService, GameProfileRepository gameProfileRepository, GameProfileCache gameProfileCache, ChunkProgressListenerFactory chunkProgressListenerFactory, CallbackInfo ci) {
|
||||
private void bclib_onServerInit(Thread thread, LevelStorageAccess levelStorageAccess, PackRepository packRepository, WorldStem worldStem, Proxy proxy, DataFixer dataFixer, MinecraftSessionService minecraftSessionService, GameProfileRepository gameProfileRepository, GameProfileCache gameProfileCache, ChunkProgressListenerFactory chunkProgressListenerFactory, CallbackInfo ci) {
|
||||
DataExchangeAPI.prepareServerside();
|
||||
}
|
||||
|
||||
|
@ -58,7 +57,7 @@ public class MinecraftServerMixin {
|
|||
}
|
||||
|
||||
private void bclib_injectRecipes() {
|
||||
RecipeManagerAccessor accessor = (RecipeManagerAccessor) resources.getRecipeManager();
|
||||
RecipeManagerAccessor accessor = (RecipeManagerAccessor) resources.managers().getRecipeManager();
|
||||
accessor.bclib_setRecipesByName(BCLRecipeManager.getMapByName(accessor.bclib_getRecipesByName()));
|
||||
accessor.bclib_setRecipes(BCLRecipeManager.getMap(accessor.bclib_getRecipes()));
|
||||
}
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
package ru.bclib.mixin.common;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.level.StructureFeatureManager;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.Climate;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.levelgen.Aquifer;
|
||||
import net.minecraft.world.level.levelgen.Beardifier;
|
||||
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
|
||||
import net.minecraft.world.level.levelgen.NoiseChunk;
|
||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||
import net.minecraft.world.level.levelgen.NoiseSampler;
|
||||
import net.minecraft.world.level.levelgen.*;
|
||||
import net.minecraft.world.level.levelgen.blending.Blender;
|
||||
import net.minecraft.world.level.levelgen.carver.CarvingContext;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
|
@ -30,11 +27,13 @@ import java.util.function.Supplier;
|
|||
public abstract class NoiseBasedChunkGeneratorMixin implements SurfaceProvider, NoiseGeneratorSettingsProvider {
|
||||
@Final
|
||||
@Shadow
|
||||
private NoiseSampler sampler;
|
||||
|
||||
private Climate.Sampler sampler;
|
||||
|
||||
@Shadow @Final private NoiseRouter router;
|
||||
|
||||
@Final
|
||||
@Shadow
|
||||
protected Supplier<NoiseGeneratorSettings> settings;
|
||||
protected Holder<NoiseGeneratorSettings> settings;
|
||||
|
||||
@Final
|
||||
@Shadow
|
||||
|
@ -45,12 +44,12 @@ public abstract class NoiseBasedChunkGeneratorMixin implements SurfaceProvider,
|
|||
|
||||
@Override
|
||||
public NoiseGeneratorSettings bclib_getNoiseGeneratorSettings(){
|
||||
return settings.get();
|
||||
return settings.value();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public BlockState bclib_getSurface(BlockPos pos, Biome biome, ServerLevel level) {
|
||||
public BlockState bclib_getSurface(BlockPos pos, Holder<Biome> biome, ServerLevel level) {
|
||||
ChunkAccess chunkAccess = level.getChunk(pos.getX() >> 4, pos.getZ() >> 4);
|
||||
StructureFeatureManager structureFeatureManager = level.structureFeatureManager();
|
||||
NoiseBasedChunkGenerator generator = NoiseBasedChunkGenerator.class.cast(this);
|
||||
|
@ -72,7 +71,7 @@ public abstract class NoiseBasedChunkGeneratorMixin implements SurfaceProvider,
|
|||
}
|
||||
|
||||
Beardifier finalBeardifier = beardifier;
|
||||
NoiseChunk noiseChunk = chunkAccess.getOrCreateNoiseChunk(this.sampler, () -> finalBeardifier, this.settings.get(), this.globalFluidPicker, Blender.empty());
|
||||
NoiseChunk noiseChunk = chunkAccess.getOrCreateNoiseChunk(router, () -> finalBeardifier, this.settings.value(), this.globalFluidPicker, Blender.empty());
|
||||
CarvingContext carvingContext = new CarvingContext(generator, level.registryAccess(), chunkAccess.getHeightAccessorForGeneration(), noiseChunk);
|
||||
Optional<BlockState> optional = carvingContext.topMaterial(bpos -> biome, chunkAccess, pos, false);
|
||||
return optional.isPresent() ? optional.get() : bclib_air;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package ru.bclib.mixin.common.shears;
|
||||
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.minecraft.advancements.critereon.ItemPredicate;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -24,7 +23,8 @@ public abstract class ItemPredicateBuilderMixin {
|
|||
@Inject(method = "matches", at = @At("HEAD"), cancellable = true)
|
||||
void bclib_of(ItemStack itemStack, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (this.items != null && this.items.size() == 1 && this.items.contains(Items.SHEARS)) {
|
||||
if (itemStack.is(CommonItemTags.SHEARS) || itemStack.is(FabricToolTags.SHEARS)){
|
||||
//TODO: 1.18.2 See if removing minable_shears test is having an efffect...
|
||||
if (itemStack.is(CommonItemTags.SHEARS) ){
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue