Emerald ice freezing
This commit is contained in:
parent
859a686ad3
commit
933cb61edc
1 changed files with 22 additions and 15 deletions
|
@ -3,7 +3,6 @@ package ru.betterend.mixin.common;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
@ -11,7 +10,6 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
@ -25,36 +23,40 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.progress.ChunkProgressListener;
|
import net.minecraft.server.level.progress.ChunkProgressListener;
|
||||||
import net.minecraft.tags.Tag;
|
import net.minecraft.util.profiling.ProfilerFiller;
|
||||||
import net.minecraft.world.level.CustomSpawner;
|
import net.minecraft.world.level.CustomSpawner;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.dimension.DimensionType;
|
import net.minecraft.world.level.dimension.DimensionType;
|
||||||
import net.minecraft.world.level.storage.LevelStorageSource;
|
import net.minecraft.world.level.storage.LevelStorageSource;
|
||||||
import net.minecraft.world.level.storage.ServerLevelData;
|
import net.minecraft.world.level.storage.ServerLevelData;
|
||||||
|
import net.minecraft.world.level.storage.WritableLevelData;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.registry.EndBiomes;
|
import ru.betterend.registry.EndBiomes;
|
||||||
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.util.DataFixerUtil;
|
import ru.betterend.util.DataFixerUtil;
|
||||||
import ru.betterend.util.TagHelper;
|
|
||||||
import ru.betterend.util.WorldDataUtil;
|
import ru.betterend.util.WorldDataUtil;
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
|
||||||
@Mixin(ServerLevel.class)
|
@Mixin(ServerLevel.class)
|
||||||
public class ServerLevelMixin {
|
public abstract class ServerLevelMixin extends Level {
|
||||||
private static final int DEV_VERSION = be_getVersionInt("63.63.63");
|
private static final int BE_DEV_VERSION = be_getVersionInt("63.63.63");
|
||||||
private static final int FIX_VERSION = DEV_VERSION;
|
private static final int BE_FIX_VERSION = BE_DEV_VERSION;
|
||||||
private static String lastWorld = null;
|
private static String be_lastWorld = null;
|
||||||
|
|
||||||
|
protected ServerLevelMixin(WritableLevelData writableLevelData, ResourceKey<Level> resourceKey, DimensionType dimensionType, Supplier<ProfilerFiller> supplier, boolean bl, boolean bl2, long l) {
|
||||||
|
super(writableLevelData, resourceKey, dimensionType, supplier, bl, bl2, l);
|
||||||
|
}
|
||||||
|
|
||||||
@Inject(method = "<init>*", at = @At("TAIL"))
|
@Inject(method = "<init>*", at = @At("TAIL"))
|
||||||
private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) {
|
private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) {
|
||||||
if (lastWorld != null && lastWorld.equals(session.getLevelId())) {
|
if (be_lastWorld != null && be_lastWorld.equals(session.getLevelId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastWorld = session.getLevelId();
|
be_lastWorld = session.getLevelId();
|
||||||
|
|
||||||
ServerLevel world = ServerLevel.class.cast(this);
|
ServerLevel world = ServerLevel.class.cast(this);
|
||||||
EndBiomes.onWorldLoad(world.getSeed());
|
EndBiomes.onWorldLoad(world.getSeed());
|
||||||
|
@ -65,7 +67,7 @@ public class ServerLevelMixin {
|
||||||
File data = new File(dir, "data/betterend_data.nbt");
|
File data = new File(dir, "data/betterend_data.nbt");
|
||||||
|
|
||||||
ModMetadata meta = FabricLoader.getInstance().getModContainer(BetterEnd.MOD_ID).get().getMetadata();
|
ModMetadata meta = FabricLoader.getInstance().getModContainer(BetterEnd.MOD_ID).get().getMetadata();
|
||||||
int version = BetterEnd.isDevEnvironment() ? DEV_VERSION : be_getVersionInt(meta.getVersion().toString());
|
int version = BetterEnd.isDevEnvironment() ? BE_DEV_VERSION : be_getVersionInt(meta.getVersion().toString());
|
||||||
|
|
||||||
WorldDataUtil.load(data);
|
WorldDataUtil.load(data);
|
||||||
CompoundTag root = WorldDataUtil.getRootTag();
|
CompoundTag root = WorldDataUtil.getRootTag();
|
||||||
|
@ -73,7 +75,7 @@ public class ServerLevelMixin {
|
||||||
GeneratorOptions.setPortalPos(NbtUtils.readBlockPos(root.getCompound("portal")));
|
GeneratorOptions.setPortalPos(NbtUtils.readBlockPos(root.getCompound("portal")));
|
||||||
|
|
||||||
if (dataVersion < version) {
|
if (dataVersion < version) {
|
||||||
if (version < FIX_VERSION) {
|
if (version < BE_FIX_VERSION) {
|
||||||
DataFixerUtil.fixData(data.getParentFile());
|
DataFixerUtil.fixData(data.getParentFile());
|
||||||
}
|
}
|
||||||
root.putString("version", be_getVersionString(version));
|
root.putString("version", be_getVersionString(version));
|
||||||
|
@ -99,7 +101,12 @@ public class ServerLevelMixin {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
private BlockState be_modifyTickState(BlockPos pos, BlockState state) {
|
private BlockState be_modifyTickState(BlockPos pos, BlockState state) {
|
||||||
System.out.println(state);
|
if (state.is(Blocks.ICE)) {
|
||||||
|
ResourceLocation biome = EndBiomes.getBiomeID(getBiome(pos));
|
||||||
|
if (biome.getNamespace().equals(BetterEnd.MOD_ID)) {
|
||||||
|
state = EndBlocks.EMERALD_ICE.defaultBlockState();
|
||||||
|
}
|
||||||
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue