mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-05-05 08:54:14 +00:00

This spins up a Minecraft instance (much like we do for the server) and instructs the client to take screenshots at particular times. We then compare those screenshots and assert they match (modulo some small delta).
102 lines
4.0 KiB
Java
102 lines
4.0 KiB
Java
/*
|
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
|
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
|
* Send enquiries to dratcliffe@gmail.com
|
|
*/
|
|
package dan200.computercraft.ingame.mod;
|
|
|
|
import net.minecraft.block.Blocks;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.screen.MainMenuScreen;
|
|
import net.minecraft.client.settings.CloudOption;
|
|
import net.minecraft.client.settings.ParticleStatus;
|
|
import net.minecraft.client.tutorial.TutorialSteps;
|
|
import net.minecraft.util.datafix.codec.DatapackCodec;
|
|
import net.minecraft.util.registry.DynamicRegistries;
|
|
import net.minecraft.util.registry.Registry;
|
|
import net.minecraft.world.*;
|
|
import net.minecraft.world.biome.Biome;
|
|
import net.minecraft.world.biome.Biomes;
|
|
import net.minecraft.world.gen.FlatChunkGenerator;
|
|
import net.minecraft.world.gen.FlatGenerationSettings;
|
|
import net.minecraft.world.gen.FlatLayerInfo;
|
|
import net.minecraft.world.gen.settings.DimensionGeneratorSettings;
|
|
import net.minecraft.world.gen.settings.DimensionStructuresSettings;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.client.event.GuiScreenEvent;
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
import net.minecraftforge.fml.common.Mod;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
import java.util.Collections;
|
|
import java.util.Optional;
|
|
|
|
import static net.minecraft.world.gen.settings.DimensionGeneratorSettings.withOverworld;
|
|
|
|
@Mod.EventBusSubscriber( modid = TestMod.MOD_ID, value = Dist.CLIENT )
|
|
public final class ClientHooks
|
|
{
|
|
private static final Logger LOG = LogManager.getLogger( TestHooks.class );
|
|
|
|
private static boolean triggered = false;
|
|
|
|
private ClientHooks()
|
|
{
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public static void onGuiInit( GuiScreenEvent.InitGuiEvent event )
|
|
{
|
|
if( triggered || !(event.getGui() instanceof MainMenuScreen) ) return;
|
|
triggered = true;
|
|
|
|
ClientHooks.openWorld();
|
|
}
|
|
|
|
private static void openWorld()
|
|
{
|
|
Minecraft minecraft = Minecraft.getInstance();
|
|
|
|
// Clear some options before we get any further.
|
|
minecraft.options.autoJump = false;
|
|
minecraft.options.renderClouds = CloudOption.OFF;
|
|
minecraft.options.particles = ParticleStatus.MINIMAL;
|
|
minecraft.options.tutorialStep = TutorialSteps.NONE;
|
|
minecraft.options.renderDistance = 6;
|
|
minecraft.options.gamma = 1.0;
|
|
|
|
if( minecraft.getLevelSource().levelExists( "test" ) )
|
|
{
|
|
LOG.info( "World exists, loading it" );
|
|
Minecraft.getInstance().loadLevel( "test" );
|
|
}
|
|
else
|
|
{
|
|
LOG.info( "World does not exist, creating it for the first time" );
|
|
|
|
DynamicRegistries.Impl registries = DynamicRegistries.builtin();
|
|
|
|
Registry<DimensionType> dimensions = registries.registryOrThrow( Registry.DIMENSION_TYPE_REGISTRY );
|
|
Registry<Biome> biomes = registries.registryOrThrow( Registry.BIOME_REGISTRY );
|
|
DimensionGeneratorSettings generator = new DimensionGeneratorSettings( 0, false, false, withOverworld(
|
|
dimensions,
|
|
DimensionType.defaultDimensions( dimensions, biomes, registries.registryOrThrow( Registry.NOISE_GENERATOR_SETTINGS_REGISTRY ), 0 ),
|
|
new FlatChunkGenerator( new FlatGenerationSettings(
|
|
biomes,
|
|
new DimensionStructuresSettings( Optional.empty(), Collections.emptyMap() ),
|
|
Collections.singletonList( new FlatLayerInfo( 4, Blocks.WHITE_CONCRETE ) ),
|
|
false, false,
|
|
Optional.of( () -> biomes.getOrThrow( Biomes.DESERT ) )
|
|
) )
|
|
) );
|
|
|
|
WorldSettings settings = new WorldSettings(
|
|
"test", GameType.CREATIVE, false, Difficulty.PEACEFUL, true,
|
|
new GameRules(), DatapackCodec.DEFAULT
|
|
);
|
|
Minecraft.getInstance().createLevel( "test", settings, registries, generator );
|
|
}
|
|
}
|
|
}
|