diff --git a/build.gradle b/build.gradle index e7f17fa..9ad5492 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,6 @@ repositories { maven { url = "https://jitpack.io" } - jcenter() } diff --git a/gradle.properties b/gradle.properties index 823e884..f4e2b67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ minecraft_version=1.15.2 yarn_mappings=1.15.2+build.17 loader_version=0.8.9+build.203 - mod_version = 0.1.6 + mod_version = 1.0.0 maven_group = net.ludocrypt archives_base_name = backrooms fabric_version=0.14.0+build.317-1.15 \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/Backrooms.java b/src/main/java/net/ludocrypt/backrooms/Backrooms.java index a4cb8a5..fcaa923 100644 --- a/src/main/java/net/ludocrypt/backrooms/Backrooms.java +++ b/src/main/java/net/ludocrypt/backrooms/Backrooms.java @@ -16,6 +16,7 @@ import net.ludocrypt.backrooms.biome.Level0Red; import net.ludocrypt.backrooms.biome.Level1; import net.ludocrypt.backrooms.biome.Level2; +import net.ludocrypt.backrooms.biome.Level3; import net.ludocrypt.backrooms.blocks.BackroomsSlab; import net.ludocrypt.backrooms.blocks.BackroomsStairs; import net.ludocrypt.backrooms.blocks.Carpet; @@ -23,6 +24,7 @@ import net.ludocrypt.backrooms.blocks.Cement_Bricks; import net.ludocrypt.backrooms.blocks.Checkered_Block; import net.ludocrypt.backrooms.blocks.Light; +import net.ludocrypt.backrooms.blocks.LinedPipe; import net.ludocrypt.backrooms.blocks.Pipe; import net.ludocrypt.backrooms.blocks.Poolstone; import net.ludocrypt.backrooms.blocks.Poolstone_Bricks; @@ -57,6 +59,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; import net.minecraft.util.registry.Registry; +import net.minecraft.world.Heightmap; import net.minecraft.world.biome.Biome; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.GenerationStep; @@ -70,6 +73,7 @@ public class Backrooms implements ModInitializer { private static final Set LOOT_TABLES = Sets.newHashSet(); public static final Identifier LEVEL0CHEST = register("backrooms:chests/level0"); public static final Identifier LEVEL1CHEST = register("backrooms:chests/level1"); + public static final Identifier LEVEL3CHEST = register("backrooms:chests/level3"); // variables public static boolean Display = false; public static int DisplayLevel = 0; @@ -87,6 +91,8 @@ public class Backrooms implements ModInitializer { public static final Block DOTTED_WALLPAPER = new Wallpaper(); public static final Block RED_WALLPAPER = new Wallpaper(); public static final Block TORN_WALLPAPER = new TornWallpaper(); + public static final Block RED_TORN_WALLPAPER = new TornWallpaper(); + public static final Block DOTTED_TORN_WALLPAPER = new TornWallpaper(); public static final Block LIGHT = new Light(); public static final Block WALL = new Wall(); public static final Block CARPET = new Carpet(); @@ -127,6 +133,7 @@ public class Backrooms implements ModInitializer { public static final Block VOID_BLOCK = new VoidBlock(); public static BlockEntityType VOID_BLOCK_ENTITY; public static final Block PIPE = new Pipe(); + public static final Block LINEDPIPE = new LinedPipe(); // checkered public static final Block CHECKERED_BLOCK = new Checkered_Block(); // colours @@ -157,6 +164,8 @@ public class Backrooms implements ModInitializer { new Level1()); public static final Biome LEVEL2 = Registry.register(Registry.BIOME, new Identifier("backrooms", "level2"), new Level2()); + public static final Biome LEVEL3 = Registry.register(Registry.BIOME, new Identifier("backrooms", "level3"), + new Level3()); // record discs public static final Item MUSIC_DISC_GLACIAL_CAVERN = new BackroomsMusicDiscItem(1, BackroomsSoundEvents.MUSIC_DISC_GLACIAL_CAVERN, @@ -211,6 +220,8 @@ public void onInitialize() { Registry.register(Registry.BLOCK, new Identifier("backrooms", "dotted_wallpaper"), DOTTED_WALLPAPER); Registry.register(Registry.BLOCK, new Identifier("backrooms", "red_wallpaper"), RED_WALLPAPER); Registry.register(Registry.BLOCK, new Identifier("backrooms", "torn_wallpaper"), TORN_WALLPAPER); + Registry.register(Registry.BLOCK, new Identifier("backrooms", "red_torn_wallpaper"), RED_TORN_WALLPAPER); + Registry.register(Registry.BLOCK, new Identifier("backrooms", "dotted_torn_wallpaper"), DOTTED_TORN_WALLPAPER); Registry.register(Registry.BLOCK, new Identifier("backrooms", "wall"), WALL); Registry.register(Registry.BLOCK, new Identifier("backrooms", "carpet"), CARPET); Registry.register(Registry.BLOCK, new Identifier("backrooms", "carpet_stairs"), CARPET_STAIRS); @@ -243,6 +254,7 @@ public void onInitialize() { Registry.register(Registry.BLOCK, new Identifier("backrooms", "poolstone_brick_slab"), POOLSTONE_BRICK_SLAB); Registry.register(Registry.BLOCK, new Identifier("backrooms", "pipe"), PIPE); + Registry.register(Registry.BLOCK, new Identifier("backrooms", "linedpipe"), LINEDPIPE); // checkered Registry.register(Registry.BLOCK, new Identifier("backrooms", "black_checkered"), BLACK_CHECKERED); @@ -271,6 +283,10 @@ public void onInitialize() { new BlockItem(RED_WALLPAPER, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); Registry.register(Registry.ITEM, new Identifier("backrooms", "torn_wallpaper"), new BlockItem(TORN_WALLPAPER, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); + Registry.register(Registry.ITEM, new Identifier("backrooms", "red_torn_wallpaper"), + new BlockItem(RED_TORN_WALLPAPER, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); + Registry.register(Registry.ITEM, new Identifier("backrooms", "dotted_torn_wallpaper"), + new BlockItem(DOTTED_TORN_WALLPAPER, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); Registry.register(Registry.ITEM, new Identifier("backrooms", "wall"), new BlockItem(WALL, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); Registry.register(Registry.ITEM, new Identifier("backrooms", "carpet"), @@ -426,6 +442,9 @@ public static void ambientSoundGenerator(PlayerEntity target, SoundEvent sound, public static void teleportPlayer(Entity entity, DimensionType newDimension) { entity.changeDimension(newDimension); + if (newDimension == DimensionType.OVERWORLD) { + entity.teleport(entity.getX(), entity.world.getTopY(Heightmap.Type.MOTION_BLOCKING, (int) entity.getX(), (int) entity.getZ()) + 1, entity.getZ()); + } } } diff --git a/src/main/java/net/ludocrypt/backrooms/biome/Level3.java b/src/main/java/net/ludocrypt/backrooms/biome/Level3.java new file mode 100644 index 0000000..85f7752 --- /dev/null +++ b/src/main/java/net/ludocrypt/backrooms/biome/Level3.java @@ -0,0 +1,41 @@ +package net.ludocrypt.backrooms.biome; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.ludocrypt.backrooms.Backrooms; +import net.ludocrypt.backrooms.features.LevelsFeatureInit; +import net.ludocrypt.backrooms.features.decorators.Level2RoomDecorator; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.decorator.DecoratorConfig; +import net.minecraft.world.gen.decorator.NopeDecoratorConfig; +import net.minecraft.world.gen.feature.FeatureConfig; +import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder; + +public class Level3 extends Biome { + protected static final BlockState WALL = Backrooms.WALL.getDefaultState(); + public static final Decorator LEVEL3PLACER = new Level2RoomDecorator(NopeDecoratorConfig::deserialize); + + public Level3() { + + super(new Biome.Settings().configureSurfaceBuilder(SurfaceBuilder.NOPE, SurfaceBuilder.AIR_CONFIG) + .precipitation(Biome.Precipitation.NONE).category(Biome.Category.NONE).depth(0F).scale(0F) + .temperature(5.0F).downfall(0F).waterColor(69).waterFogColor(69).parent((String) null)); + + this.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, + LevelsFeatureInit.LEVEL3ROOM.configure(FeatureConfig.DEFAULT) + .createDecoratedFeature(LEVEL3PLACER.configure(DecoratorConfig.DEFAULT))); + } + + @Environment(EnvType.CLIENT) + public int getGrassColorAt(double p_225528_1_, double p_225528_3_) { + return 226217111; + } + + @Environment(EnvType.CLIENT) + public int getFoliageColor() { + return 226217111; + } +} \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Cement.java b/src/main/java/net/ludocrypt/backrooms/blocks/Cement.java index b2a2754..a164bdf 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Cement.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Cement.java @@ -10,7 +10,7 @@ public class Cement extends Block { public Cement() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(4).resistance(5)); + .hardness(3).resistance(5)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Cement_Bricks.java b/src/main/java/net/ludocrypt/backrooms/blocks/Cement_Bricks.java index c1cea8a..765570a 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Cement_Bricks.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Cement_Bricks.java @@ -10,7 +10,7 @@ public class Cement_Bricks extends Block { public Cement_Bricks() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(5).resistance(5)); + .hardness(4).resistance(5)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Checkered_Block.java b/src/main/java/net/ludocrypt/backrooms/blocks/Checkered_Block.java index 37b3c08..a2b0238 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Checkered_Block.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Checkered_Block.java @@ -9,6 +9,6 @@ public class Checkered_Block extends Block { public Checkered_Block() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(6).resistance(6)); + .hardness(4).resistance(4)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/LinedPipe.java b/src/main/java/net/ludocrypt/backrooms/blocks/LinedPipe.java new file mode 100644 index 0000000..58b3435 --- /dev/null +++ b/src/main/java/net/ludocrypt/backrooms/blocks/LinedPipe.java @@ -0,0 +1,59 @@ +package net.ludocrypt.backrooms.blocks; + +import java.util.Random; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.entity.EntityContext; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.IntProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class LinedPipe extends Block { + + public static final IntProperty TYPE = IntProperty.of("type", 1, 2); + + public static final VoxelShape SHAPE = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D); + + public LinedPipe() { + super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) + .hardness(6).resistance(6).lightLevel(5)); + setDefaultState(getStateManager().getDefaultState().with(TYPE, 1)); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, EntityContext context) { + return SHAPE; + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(TYPE); + } + + @Override + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + super.randomDisplayTick(state, world, pos, random); + if (random.nextInt(2) == 0) { + world.addParticle(ParticleTypes.MYCELIUM, (double) pos.getX() + (double) random.nextFloat(), + (double) pos.getY() + (double) random.nextFloat(), + (double) pos.getZ() + (double) random.nextFloat(), 1.0D, -1.0D, 1.0D); + } + if (random.nextInt(10) == 0) { + world.addParticle(ParticleTypes.DRIPPING_WATER, (double) pos.getX() + (random.nextDouble() / 4) + 0.5, + (double) pos.getY(), (double) pos.getZ() + (random.nextDouble() / 4) + 0.5, 0.0D, 0.0D, + 0.0D); + } + } +} diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Pipe.java b/src/main/java/net/ludocrypt/backrooms/blocks/Pipe.java index 1996e25..15ab9ec 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Pipe.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Pipe.java @@ -95,7 +95,8 @@ public void randomDisplayTick(BlockState state, World world, BlockPos pos, Rando } if (random.nextInt(10) == 0) { world.addParticle(ParticleTypes.DRIPPING_WATER, (double) pos.getX() + (random.nextDouble() / 4) + 0.5, - (double) pos.getY() + 0.18, (double) pos.getZ() + (random.nextDouble() / 4) + 0.5, 0.0D, 0.0D, 0.0D); + (double) pos.getY() + 0.18, (double) pos.getZ() + (random.nextDouble() / 4) + 0.5, 0.0D, 0.0D, + 0.0D); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone.java b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone.java index a8872c6..09ff4a7 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone.java @@ -9,6 +9,6 @@ public class Poolstone extends Block { public Poolstone() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(6).resistance(6)); + .hardness(4).resistance(4)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Bricks.java b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Bricks.java index 70a39c1..d82ba47 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Bricks.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Bricks.java @@ -9,6 +9,6 @@ public class Poolstone_Bricks extends Block { public Poolstone_Bricks() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(6).resistance(6)); + .hardness(4).resistance(4)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Path.java b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Path.java index fb4ea0c..09d8fb7 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Path.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Path.java @@ -9,6 +9,6 @@ public class Poolstone_Path extends Block { public Poolstone_Path() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(6).resistance(6)); + .hardness(4).resistance(4)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Tile.java b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Tile.java index ac49e18..b4e8666 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Tile.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/Poolstone_Tile.java @@ -9,6 +9,6 @@ public class Poolstone_Tile extends Block { public Poolstone_Tile() { super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.STONE) - .hardness(6).resistance(6)); + .hardness(4).resistance(4)); } } diff --git a/src/main/java/net/ludocrypt/backrooms/blocks/VoidBlock.java b/src/main/java/net/ludocrypt/backrooms/blocks/VoidBlock.java index 290877c..4365cc0 100644 --- a/src/main/java/net/ludocrypt/backrooms/blocks/VoidBlock.java +++ b/src/main/java/net/ludocrypt/backrooms/blocks/VoidBlock.java @@ -40,7 +40,6 @@ public long getRenderingSeed(BlockState state, BlockPos pos) { @Override public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { Random rand = new Random(); - int k = 0; double t = 0.0; entity.slowMovement(state, new Vec3d(0.25D, 0.05000000074505806D, 0.25D)); if (!world.isClient && !entity.hasVehicle() && !entity.hasPassengers() && entity.canUsePortals() @@ -52,7 +51,7 @@ public void onEntityCollision(BlockState state, World world, BlockPos pos, Entit || entity.dimension == BackroomsDimensionTypes.LEVEL0DOTTED || entity.dimension == BackroomsDimensionTypes.LEVEL0RED) { t = rand.nextDouble(); - if (t < 0.1) { + if (t < 0.001) { Backrooms.teleportPlayer(entity, DimensionType.OVERWORLD); } else if (t < 0.25) { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL1); @@ -64,40 +63,50 @@ public void onEntityCollision(BlockState state, World world, BlockPos pos, Entit Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL0); } } - if (entity.dimension == BackroomsDimensionTypes.LEVEL1) { - k = rand.nextInt(3); - switch (k) { - case 0: + else if (entity.dimension == BackroomsDimensionTypes.LEVEL1) { + t = rand.nextDouble(); + if (t < 0.005) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL1); + } else if (t < 0.25) { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL0); - break; - case 1: + } else if (t < 0.5) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL2); + } else if (t < 0.75) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL2); + } else { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL1); - break; - case 2: + } + } + else if (entity.dimension == BackroomsDimensionTypes.LEVEL2) { + t = rand.nextDouble(); + if (t < 0.05) { + Backrooms.teleportPlayer(entity, DimensionType.OVERWORLD); + } else if (t < 0.25) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL2); + } else if (t < 0.5) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL3); + } else if (t < 0.75) { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL2); - break; + } else { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL3); } } - if (entity.dimension == BackroomsDimensionTypes.LEVEL2) { - k = rand.nextInt(4); - switch (k) { - case 0: - Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL0); - break; - case 1: - Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL1); - break; - case 2: + else if (entity.dimension == BackroomsDimensionTypes.LEVEL3) { + t = rand.nextDouble(); + if (t < 0.05) { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL2); - break; - case 3: + } else if (t < 0.15) { Backrooms.teleportPlayer(entity, DimensionType.OVERWORLD); - break; + } else if (t < 0.5) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL3); + } else if (t < 0.75) { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL3); + } else { + Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL3); } } - if (entity.dimension == DimensionType.OVERWORLD) { + else if (entity.dimension == DimensionType.OVERWORLD) { Backrooms.teleportPlayer(entity, BackroomsDimensionTypes.LEVEL0); - } } } diff --git a/src/main/java/net/ludocrypt/backrooms/client/render/EndPortalRenderer.java b/src/main/java/net/ludocrypt/backrooms/client/render/EndPortalRenderer.java index 9e84e73..214f1ad 100644 --- a/src/main/java/net/ludocrypt/backrooms/client/render/EndPortalRenderer.java +++ b/src/main/java/net/ludocrypt/backrooms/client/render/EndPortalRenderer.java @@ -19,7 +19,6 @@ @Environment(EnvType.CLIENT) public class EndPortalRenderer extends BlockEntityRenderer { - private static final Random RANDOM = new Random(9500L); private static final List renderLayers = IntStream.range(0, 16) .mapToObj(i -> RenderLayer.getEndPortal(i + 1)).collect(ImmutableList.toImmutableList()); @@ -42,8 +41,8 @@ public void render(T blockEntity, float tickDelta, MatrixStack matrixStack, private static void renderLayer(Matrix4f matrix, VertexConsumer vertexConsumer, float colourScalar) { float red = (RANDOM.nextFloat() * 0.5F + 1.0F) * colourScalar; - float green = (RANDOM.nextFloat() * 0.5F + 0.54F) * colourScalar; - float blue = (RANDOM.nextFloat() * 0.5F + 0.54F) * colourScalar; + float green = (RANDOM.nextFloat() * 0.5F + 0.9F) * colourScalar; + float blue = (RANDOM.nextFloat() * 0.5F + 0.4F) * colourScalar; renderFace(matrix, vertexConsumer, 0, 1, 1, 0, 0, 0, 0, 0, red, green, blue); // Direction.NORTH renderFace(matrix, vertexConsumer, 1, 1, 1, 0, 0, 1, 1, 0, red, green, blue); // Direction.EAST renderFace(matrix, vertexConsumer, 0, 1, 0, 1, 1, 1, 1, 1, red, green, blue); // Direction.SOUTH diff --git a/src/main/java/net/ludocrypt/backrooms/config/BackroomsConfig.java b/src/main/java/net/ludocrypt/backrooms/config/BackroomsConfig.java index c801411..ef77970 100644 --- a/src/main/java/net/ludocrypt/backrooms/config/BackroomsConfig.java +++ b/src/main/java/net/ludocrypt/backrooms/config/BackroomsConfig.java @@ -14,13 +14,14 @@ public class BackroomsConfig implements ConfigData { public int Level1LayerCount = 3; public double VBDoor = 0.05; - + public double EnderPearlChance = 0.01; public double SuffocationChance = 0.01; public boolean TallDoors = true; public boolean ForceLevel0 = false; public boolean ForceLevel1 = false; public boolean ForceLevel2 = false; + public boolean ForceLevel3 = false; public boolean ForceNormal = false; public boolean SanityEffects = true; diff --git a/src/main/java/net/ludocrypt/backrooms/dimension/BackroomsDimensionTypes.java b/src/main/java/net/ludocrypt/backrooms/dimension/BackroomsDimensionTypes.java index d692565..73558da 100644 --- a/src/main/java/net/ludocrypt/backrooms/dimension/BackroomsDimensionTypes.java +++ b/src/main/java/net/ludocrypt/backrooms/dimension/BackroomsDimensionTypes.java @@ -6,46 +6,60 @@ import net.minecraft.util.math.Vec3d; public class BackroomsDimensionTypes { + public static final FabricDimensionType LEVEL0 = FabricDimensionType.builder() .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, verticalOffset) -> new BlockPattern.TeleportTarget( - new Vec3d(oldEntity.getX() + (destination.random.nextInt(10000) - 5000), 6, - oldEntity.getZ() + (destination.random.nextInt(10000) - 5000)), + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 6, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), oldEntity.getVelocity().multiply(0), 0)) .factory(Level0Dimension::new).skyLight(true).desiredRawId(672760) .buildAndRegister(new Identifier("backrooms", "level0")); + public static final FabricDimensionType LEVEL0DOTTED = FabricDimensionType.builder() .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, verticalOffset) -> new BlockPattern.TeleportTarget( - new Vec3d(oldEntity.getX() + (destination.random.nextInt(10000) - 5000), 6, - oldEntity.getZ() + (destination.random.nextInt(10000) - 5000)), + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 6, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), oldEntity.getVelocity().multiply(0), 0)) .factory(Level0DottedDimension::new).skyLight(true).desiredRawId(6727602) .buildAndRegister(new Identifier("backrooms", "level0dotted")); + public static final FabricDimensionType LEVEL0RED = FabricDimensionType.builder() .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, verticalOffset) -> new BlockPattern.TeleportTarget( - new Vec3d(oldEntity.getX() + (destination.random.nextInt(10000) - 5000), 6, - oldEntity.getZ() + (destination.random.nextInt(10000) - 5000)), + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 6, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), oldEntity.getVelocity().multiply(0), 0)) .factory(Level0RedDimension::new).skyLight(true).desiredRawId(6727601) .buildAndRegister(new Identifier("backrooms", "level0red")); + public static final FabricDimensionType LEVEL1 = FabricDimensionType.builder() .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, verticalOffset) -> new BlockPattern.TeleportTarget( - new Vec3d(oldEntity.getX() + (destination.random.nextInt(10000) - 5000), 6, - oldEntity.getZ() + (destination.random.nextInt(10000) - 5000)), + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 6, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), oldEntity.getVelocity().multiply(0), 0)) .factory(Level1Dimension::new).skyLight(true).desiredRawId(672761) .buildAndRegister(new Identifier("backrooms", "level1")); + public static final FabricDimensionType LEVEL2 = FabricDimensionType.builder() .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, verticalOffset) -> new BlockPattern.TeleportTarget( - new Vec3d(oldEntity.getX() + (destination.random.nextInt(10000) - 5000), 5, - oldEntity.getZ() + (destination.random.nextInt(10000) - 5000)), + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 5, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), oldEntity.getVelocity().multiply(0), 0)) .factory(Level2Dimension::new).skyLight(true).desiredRawId(672762) .buildAndRegister(new Identifier("backrooms", "level2")); + + public static final FabricDimensionType LEVEL3 = FabricDimensionType.builder() + .defaultPlacer((oldEntity, destination, portalDir, horizontalOffset, + verticalOffset) -> new BlockPattern.TeleportTarget( + new Vec3d(oldEntity.getX() + (destination.random.nextInt(1000) - 500), 4, + oldEntity.getZ() + (destination.random.nextInt(1000) - 500)), + oldEntity.getVelocity().multiply(0), 0)) + .factory(Level3Dimension::new).skyLight(true).desiredRawId(672763) + .buildAndRegister(new Identifier("backrooms", "level3")); public static void register() { } diff --git a/src/main/java/net/ludocrypt/backrooms/dimension/Level3Dimension.java b/src/main/java/net/ludocrypt/backrooms/dimension/Level3Dimension.java new file mode 100644 index 0000000..61eaf92 --- /dev/null +++ b/src/main/java/net/ludocrypt/backrooms/dimension/Level3Dimension.java @@ -0,0 +1,87 @@ +package net.ludocrypt.backrooms.dimension; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.ludocrypt.backrooms.Backrooms; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraft.world.biome.source.BiomeSourceType; +import net.minecraft.world.biome.source.FixedBiomeSourceConfig; +import net.minecraft.world.dimension.Dimension; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.chunk.ChunkGeneratorType; +import net.minecraft.world.gen.chunk.OverworldChunkGeneratorConfig; + +public class Level3Dimension extends Dimension { + private static final Vec3d FOG_COLOR = new Vec3d(1, 1, 1); + + public Level3Dimension(World world, DimensionType type) { + super(world, type, 0.1f); + } + + public static OverworldChunkGeneratorConfig getDefaultConfig() { + OverworldChunkGeneratorConfig OverworldChunkGeneratorConfig = (OverworldChunkGeneratorConfig) ChunkGeneratorType.SURFACE + .createSettings(); + OverworldChunkGeneratorConfig.setDefaultBlock(Backrooms.WALL.getDefaultState()); + OverworldChunkGeneratorConfig.setDefaultFluid(Blocks.AIR.getDefaultState()); + return OverworldChunkGeneratorConfig; + } + + @Override + public ChunkGenerator createChunkGenerator() { + OverworldChunkGeneratorConfig generatorConfig = Level3Dimension.getDefaultConfig(); + FixedBiomeSourceConfig biomeConfig = BiomeSourceType.FIXED.getConfig(world.getLevelProperties()) + .setBiome(Backrooms.LEVEL3); + return ChunkGeneratorType.SURFACE.create(world, BiomeSourceType.FIXED.applyConfig(biomeConfig), + generatorConfig); + } + + @Override + public BlockPos getSpawningBlockInChunk(ChunkPos chunkPos, boolean checkMobSpawnValidity) { + return null; + } + + @Override + public BlockPos getTopSpawningBlockPosition(int x, int z, boolean checkMobSpawnValidity) { + return null; + } + + @Override + public float getSkyAngle(long worldTime, float tickDelta) { + final int dayLength = 25000; + double daysPassed = ((double) worldTime + tickDelta) / dayLength; + return (float) MathHelper.fractionalPart(daysPassed - 0.25); + } + + @Override + public boolean hasVisibleSky() { + return true; + } + + @Override + public boolean canPlayersSleep() { + return false; + } + + @Environment(EnvType.CLIENT) + @Override + public boolean isFogThick(int x, int z) { + return true; + } + + @Override + public DimensionType getType() { + return BackroomsDimensionTypes.LEVEL3; + } + + @Environment(EnvType.CLIENT) + @Override + public Vec3d getFogColor(float skyAngle, float tickDelta) { + return FOG_COLOR; + } +} \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/features/Level0DottedRoom.java b/src/main/java/net/ludocrypt/backrooms/features/Level0DottedRoom.java index cd2fbd5..1a32317 100644 --- a/src/main/java/net/ludocrypt/backrooms/features/Level0DottedRoom.java +++ b/src/main/java/net/ludocrypt/backrooms/features/Level0DottedRoom.java @@ -9,6 +9,7 @@ import net.ludocrypt.backrooms.blocks.BackroomsStairs; import net.ludocrypt.backrooms.blocks.Carpet; import net.ludocrypt.backrooms.blocks.Tile; +import net.ludocrypt.backrooms.blocks.TornWallpaper; import net.ludocrypt.backrooms.config.BackroomsConfig; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -128,6 +129,14 @@ public Level0DottedRoom(Function, ? extends DefaultFeatureConfig> con private static final BlockState CHEST = Blocks.CHEST.getDefaultState().with(ChestBlock.CHEST_TYPE, ChestType.SINGLE) .with(ChestBlock.FACING, Direction.NORTH).with(ChestBlock.WATERLOGGED, false); private static final BlockState VOID_BLOCK = Backrooms.VOID_BLOCK.getDefaultState(); + private static final BlockState TORN_WALLPAPER_1 = Backrooms.DOTTED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 1); + private static final BlockState TORN_WALLPAPER_2 = Backrooms.DOTTED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 2); + private static final BlockState TORN_WALLPAPER_3 = Backrooms.DOTTED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 3); + private static final BlockState TORN_WALLPAPER_4 = Backrooms.DOTTED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 4); public boolean generate(IWorld world, ChunkGenerator changedBlock, Random rand, BlockPos position, DefaultFeatureConfig config) { @@ -297,7 +306,25 @@ private void generateSlice(IWorld world, BlockPos.Mutable centerPos, int[][] sli world.setBlockState(currentPosition, AIR, 2); break; case 5: - world.setBlockState(currentPosition, WALLPAPER, 2); + if (rand.nextDouble() < 0.01) { + int k = rand.nextInt(4); + switch (k) { + case 0: + world.setBlockState(currentPosition, TORN_WALLPAPER_1, 2); + break; + case 1: + world.setBlockState(currentPosition, TORN_WALLPAPER_2, 2); + break; + case 2: + world.setBlockState(currentPosition, TORN_WALLPAPER_3, 2); + break; + case 3: + world.setBlockState(currentPosition, TORN_WALLPAPER_4, 2); + break; + } + } else { + world.setBlockState(currentPosition, WALLPAPER, 2); + } break; case 6: if (door1) { diff --git a/src/main/java/net/ludocrypt/backrooms/features/Level0RedRoom.java b/src/main/java/net/ludocrypt/backrooms/features/Level0RedRoom.java index 8fba01c..bdc6517 100644 --- a/src/main/java/net/ludocrypt/backrooms/features/Level0RedRoom.java +++ b/src/main/java/net/ludocrypt/backrooms/features/Level0RedRoom.java @@ -7,6 +7,7 @@ import net.ludocrypt.backrooms.Backrooms; import net.ludocrypt.backrooms.blocks.Tile; +import net.ludocrypt.backrooms.blocks.TornWallpaper; import net.ludocrypt.backrooms.config.BackroomsConfig; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -100,6 +101,14 @@ public Level0RedRoom(Function, ? extends DefaultFeatureConfig> config private static final BlockState LIGHT = Backrooms.LIGHT.getDefaultState(); private static final BlockState AIR = Blocks.AIR.getDefaultState(); private static final BlockState VOID_BLOCK = Backrooms.VOID_BLOCK.getDefaultState(); + private static final BlockState TORN_WALLPAPER_1 = Backrooms.RED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 1); + private static final BlockState TORN_WALLPAPER_2 = Backrooms.RED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 2); + private static final BlockState TORN_WALLPAPER_3 = Backrooms.RED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 3); + private static final BlockState TORN_WALLPAPER_4 = Backrooms.RED_TORN_WALLPAPER.getDefaultState() + .with(TornWallpaper.TORN_LEVEL, 4); public boolean generate(IWorld world, ChunkGenerator changedBlock, Random rand, BlockPos position, DefaultFeatureConfig config) { @@ -269,7 +278,25 @@ private void generateSlice(IWorld world, BlockPos.Mutable centerPos, int[][] sli world.setBlockState(currentPosition, AIR, 2); break; case 5: - world.setBlockState(currentPosition, WALLPAPER, 2); + if (rand.nextDouble() < 0.01) { + int k = rand.nextInt(4); + switch (k) { + case 0: + world.setBlockState(currentPosition, TORN_WALLPAPER_1, 2); + break; + case 1: + world.setBlockState(currentPosition, TORN_WALLPAPER_2, 2); + break; + case 2: + world.setBlockState(currentPosition, TORN_WALLPAPER_3, 2); + break; + case 3: + world.setBlockState(currentPosition, TORN_WALLPAPER_4, 2); + break; + } + } else { + world.setBlockState(currentPosition, WALLPAPER, 2); + } break; case 6: if (door1) { diff --git a/src/main/java/net/ludocrypt/backrooms/features/Level1Room.java b/src/main/java/net/ludocrypt/backrooms/features/Level1Room.java index e10f515..7542d36 100644 --- a/src/main/java/net/ludocrypt/backrooms/features/Level1Room.java +++ b/src/main/java/net/ludocrypt/backrooms/features/Level1Room.java @@ -279,10 +279,13 @@ private void generateSlice(IWorld world, BlockPos.Mutable centerPos, int[][] sli case 0: break; case 2: + world.setBlockState(currentPosition, SOUTH_TILE, 2); + break; case 11: world.setBlockState(currentPosition, NORTH_TILE, 2); + break; case 12: world.setBlockState(currentPosition, TILE, 2); diff --git a/src/main/java/net/ludocrypt/backrooms/features/Level2Room.java b/src/main/java/net/ludocrypt/backrooms/features/Level2Room.java index bd324e1..ca127ed 100644 --- a/src/main/java/net/ludocrypt/backrooms/features/Level2Room.java +++ b/src/main/java/net/ludocrypt/backrooms/features/Level2Room.java @@ -25,7 +25,7 @@ public Level2Room(Function, ? extends DefaultFeatureConfig> configFac private int[][] White = { { 2, 2, 2, 2 }, { 2, 1, 1, 2 }, { 2, 3, 1, 2 }, { 2, 1, 1, 2 }, { 2, 9, 2, 2 } }; private int[][] Orange = { { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 } }; - private int[][] Red = { { 2, 2, 2, 2 }, { 1, 1, 1, 1 }, { 4, 4, 4, 4 }, { 1, 1, 1, 1 }, { 2, 2, 2, 2 } }; + private int[][] Red = { { 2, 2, 2, 2 }, { 1, 1, 1, 1 }, { 4, 4, 4, 4 }, { 1, 1, 1, 1 }, { 2, 10, 2, 2 } }; private int[][] Brown = { { 2, 2, 2, 2 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 2, 2, 2, 2 } }; private int[][] Lime = { { 2, 2, 2, 2 }, { 1, 1, 1, 2 }, { 1, 1, 1, 2 }, { 1, 1, 1, 2 }, { 2, 2, 2, 2 } }; private int[][] Blue = { { 2, 2, 2, 2 }, { 2, 1, 1, 2 }, { 2, 5, 1, 2 }, { 2, 1, 1, 2 }, { 2, 2, 2, 2 } }; @@ -65,28 +65,23 @@ public boolean generate(IWorld world, ChunkGenerator { + public Level3Room(Function, ? extends DefaultFeatureConfig> configFactory) { + super(configFactory); + } + + private int[][] White = { { 6, 6, 6, 6 }, { 4, 5, 5, 4 }, { 3, 1, 1, 3 }, { 3, 1, 1, 3 }, { 3, 1, 1, 3 }, + { 2, 7, 2, 2 } }; + private int[][] Orange = { { 6, 6, 6, 6 }, { 4, 4, 4, 4 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, + { 2, 2, 2, 2 } }; + private int[][] Yellow = { { 6, 6, 6, 6 }, { 5, 5, 5, 4 }, { 1, 1, 1, 3 }, { 1, 1, 1, 3 }, { 1, 1, 1, 3 }, + { 2, 2, 2, 2 } }; + private int[][] Magenta = { { 6, 6, 6, 6 }, { 4, 5, 5, 5 }, { 3, 1, 1, 1 }, { 3, 1, 1, 1 }, { 3, 1, 1, 1 }, + { 2, 2, 2, 2 } }; + private int[][] Blue = { { 6, 6, 6, 6 }, { 5, 5, 5, 5 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, + { 2, 2, 2, 2 } }; + + private static final BlockState AIR = Blocks.AIR.getDefaultState(); + private static final BlockState CEILING = Backrooms.CEMENT.getDefaultState(); + private static final BlockState FLOOR = Backrooms.WHITE_CHECKERED.getDefaultState(); + private static final BlockState WALL = Backrooms.CEMENT_BRICKS.getDefaultState(); + private static final BlockState BRICKS = Blocks.BRICKS.getDefaultState(); + private static final BlockState VOID_BLOCK = Backrooms.VOID_BLOCK.getDefaultState(); + private static final BlockState PIPE = Backrooms.LINEDPIPE.getDefaultState(); + private static final BlockState CHEST = Blocks.CHEST.getDefaultState().with(ChestBlock.CHEST_TYPE, ChestType.SINGLE) + .with(ChestBlock.FACING, Direction.NORTH).with(ChestBlock.WATERLOGGED, false); + + public boolean generate(IWorld world, ChunkGenerator changedBlock, Random rand, + BlockPos position, DefaultFeatureConfig config) { + + BlockPos.Mutable mutableBlockPos = new BlockPos.Mutable(position); + + Random generator = new Random(world.getSeed()); + Random generator2 = new Random(world.getSeed()); + Random generatorFront = new Random(world.getSeed()); + Random generatorLeft = new Random(world.getSeed()); + long seed = world.getSeed(); + long l = generator.nextLong(); + long m = generator.nextLong(); + long n = generator.nextLong(); + long o = position.getX() * l ^ position.getY() * m ^ position.getZ() * n ^ seed; + long p = position.getX() * l ^ position.getY() * m ^ (position.getZ() - 4) * n ^ seed; + long q = (position.getX() - 4) * l ^ position.getY() * m ^ position.getZ() * n ^ seed; + generator = new Random(o); + generatorFront = new Random(p); + generatorLeft = new Random(q); + generator2 = new Random(o * 8); + + int k = generator.nextInt(16); + int r = generatorFront.nextInt(16); + int s = generatorLeft.nextInt(16); + int t = generator2.nextInt(7); + int u = generator2.nextInt(3); + + if (s == 3 || s == 6 || s == 7 || s == 9 || s == 10 || s == 11 || s == 12 || s == 15) { + switch (t) { + case 0: + k = 4; + break; + case 1: + k = 5; + break; + case 2: + k = 8; + break; + case 3: + k = 9; + break; + case 4: + k = 11; + break; + case 5: + k = 12; + break; + case 6: + k = 15; + break; + } + } + + if (r == 2 || r == 5 || r == 6 || r == 8 || r == 9 || r == 10 || r == 13 || r == 15) { + switch (u) { + case 0: + k = 9; + break; + case 1: + k = 11; + break; + case 2: + k = 12; + break; + case 3: + k = 15; + break; + } + } + + switch (k) { + + case 0: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 1: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 2: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 3: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 4: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 5: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 6: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 7: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 8: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Magenta, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 9: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 10: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Yellow, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 11: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 12: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + case 13: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 14: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Orange, rand); + break; + case 15: + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), Blue, rand); + generateSlice(world, mutableBlockPos.setOffset(Direction.WEST), White, rand); + break; + } + + return true; + + } + + private void generateSlice(IWorld world, BlockPos.Mutable centerPos, int[][] slice, Random rand) { + + BlockPos currentPositionOffsetted = new BlockPos(centerPos.add(0, 3, slice[0].length)); + BlockPos.Mutable currentPosition = new BlockPos.Mutable(currentPositionOffsetted.getX(), + currentPositionOffsetted.getY(), currentPositionOffsetted.getZ()); + + for (int y = 0; y < slice.length; y++) { + for (int z = 0; z < slice[0].length; z++) { + int sliceBlock = slice[y][z]; + + if (((world.getBlockState(currentPosition).getBlock() == Backrooms.WALL) + || (world.getBlockState(currentPosition).getBlock() == Blocks.BEDROCK))) { + + switch (sliceBlock) { + case 0: + break; + case 1: + world.setBlockState(currentPosition, AIR, 2); + break; + case 2: + world.setBlockState(currentPosition, FLOOR, 2); + if (rand.nextDouble() < 0.0005) { + world.setBlockState(currentPosition.add(0, 1, 0), CHEST, 2); + LootableContainerBlockEntity.setLootTable(world, rand, currentPosition.add(0, 1, 0), + Backrooms.LEVEL3CHEST); + } + break; + case 3: + world.setBlockState(currentPosition, WALL, 2); + break; + case 4: + world.setBlockState(currentPosition, BRICKS, 2); + break; + case 5: + world.setBlockState(currentPosition, PIPE, 2); + break; + case 6: + world.setBlockState(currentPosition, CEILING, 3); + break; + case 7: + world.setBlockState(currentPosition, FLOOR, 2); + if (rand.nextDouble() < BackroomsConfig.getInstance().VBDoor) { + if (rand.nextDouble() < 0.05) { + world.setBlockState(currentPosition.add(0, 1, 0), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 2, 0), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 3, 0), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 4, 0), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 1, 1), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 2, 1), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 3, 1), VOID_BLOCK, 2); + world.setBlockState(currentPosition.add(0, 4, 1), VOID_BLOCK, 2); + } + } + break; + } + } + currentPosition.setOffset(Direction.SOUTH); + } + currentPosition.setOffset(0, -1, -slice[0].length); + } + } +} \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/features/LevelsFeatureInit.java b/src/main/java/net/ludocrypt/backrooms/features/LevelsFeatureInit.java index a374567..b3b0916 100644 --- a/src/main/java/net/ludocrypt/backrooms/features/LevelsFeatureInit.java +++ b/src/main/java/net/ludocrypt/backrooms/features/LevelsFeatureInit.java @@ -11,6 +11,7 @@ public class LevelsFeatureInit { public static Feature LEVEL0DOTTEDROOM = new Level0DottedRoom(DefaultFeatureConfig::deserialize); public static Feature LEVEL1ROOM = new Level1Room(DefaultFeatureConfig::deserialize); public static Feature LEVEL2ROOM = new Level2Room(DefaultFeatureConfig::deserialize); + public static Feature LEVEL3ROOM = new Level3Room(DefaultFeatureConfig::deserialize); public static void registerFeatures() { Registry.register(Registry.FEATURE, new Identifier("backrooms", "level0room"), LEVEL0ROOM); @@ -18,5 +19,6 @@ public static void registerFeatures() { Registry.register(Registry.FEATURE, new Identifier("backrooms", "level0dottedroom"), LEVEL0DOTTEDROOM); Registry.register(Registry.FEATURE, new Identifier("backrooms", "level1room"), LEVEL1ROOM); Registry.register(Registry.FEATURE, new Identifier("backrooms", "level2room"), LEVEL2ROOM); + Registry.register(Registry.FEATURE, new Identifier("backrooms", "level3room"), LEVEL3ROOM); } } \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/features/decorators/Level3RoomDecorator.java b/src/main/java/net/ludocrypt/backrooms/features/decorators/Level3RoomDecorator.java new file mode 100644 index 0000000..5d95a42 --- /dev/null +++ b/src/main/java/net/ludocrypt/backrooms/features/decorators/Level3RoomDecorator.java @@ -0,0 +1,51 @@ +package net.ludocrypt.backrooms.features.decorators; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.function.Function; +import java.util.stream.Stream; + +import com.mojang.datafixers.Dynamic; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.chunk.ChunkGeneratorConfig; +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.decorator.NopeDecoratorConfig; + +public class Level3RoomDecorator extends Decorator { + + public Level3RoomDecorator(Function, ? extends NopeDecoratorConfig> configFactory) { + super(configFactory); + } + + public Stream getPositions(IWorld world, ChunkGenerator chunkGenerator, + Random rand, NopeDecoratorConfig placementConfig, BlockPos pos) { + + BlockPos.Mutable mutableBlockPos = new BlockPos.Mutable(pos.getX(), + 4, pos.getZ()); + List blockPosList = new ArrayList(); + + blockPosList.add(mutableBlockPos.toImmutable()); + blockPosList.add(mutableBlockPos.toImmutable().add(4, 0, 0)); + blockPosList.add(mutableBlockPos.toImmutable().add(8, 0, 0)); + blockPosList.add(mutableBlockPos.toImmutable().add(12, 0, 0)); + blockPosList.add(mutableBlockPos.toImmutable().add(0, 0, 4)); + blockPosList.add(mutableBlockPos.toImmutable().add(4, 0, 4)); + blockPosList.add(mutableBlockPos.toImmutable().add(8, 0, 4)); + blockPosList.add(mutableBlockPos.toImmutable().add(12, 0, 4)); + blockPosList.add(mutableBlockPos.toImmutable().add(0, 0, 8)); + blockPosList.add(mutableBlockPos.toImmutable().add(4, 0, 8)); + blockPosList.add(mutableBlockPos.toImmutable().add(8, 0, 8)); + blockPosList.add(mutableBlockPos.toImmutable().add(12, 0, 8)); + blockPosList.add(mutableBlockPos.toImmutable().add(0, 0, 12)); + blockPosList.add(mutableBlockPos.toImmutable().add(4, 0, 12)); + blockPosList.add(mutableBlockPos.toImmutable().add(8, 0, 12)); + blockPosList.add(mutableBlockPos.toImmutable().add(12, 0, 12)); + + + + return blockPosList.stream(); + } +} diff --git a/src/main/java/net/ludocrypt/backrooms/items/AlmondWaterItem.java b/src/main/java/net/ludocrypt/backrooms/items/AlmondWaterItem.java index 705db87..cb4fc6f 100644 --- a/src/main/java/net/ludocrypt/backrooms/items/AlmondWaterItem.java +++ b/src/main/java/net/ludocrypt/backrooms/items/AlmondWaterItem.java @@ -40,12 +40,13 @@ public SoundEvent getEatSound() { } @Override - public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { super.finishUsing(stack, world, user); - ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity) user; - Criterions.CONSUME_ITEM.trigger(serverPlayerEntity, stack); - serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); + if (user instanceof ServerPlayerEntity) { + ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity) user; + Criterions.CONSUME_ITEM.trigger(serverPlayerEntity, stack); + serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); + } if (!world.isClient) { user.removeStatusEffect(StatusEffects.POISON); user.removeStatusEffect(StatusEffects.HUNGER); diff --git a/src/main/java/net/ludocrypt/backrooms/items/RawAlmondWaterItem.java b/src/main/java/net/ludocrypt/backrooms/items/RawAlmondWaterItem.java index 1c475b9..1b5e0e8 100644 --- a/src/main/java/net/ludocrypt/backrooms/items/RawAlmondWaterItem.java +++ b/src/main/java/net/ludocrypt/backrooms/items/RawAlmondWaterItem.java @@ -42,11 +42,14 @@ public SoundEvent getEatSound() { @Override public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { super.finishUsing(stack, world, user); - ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity) user; - Criterions.CONSUME_ITEM.trigger(serverPlayerEntity, stack); - serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); + if (user instanceof ServerPlayerEntity) { + ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity) user; + Criterions.CONSUME_ITEM.trigger(serverPlayerEntity, stack); + serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); + } if (!world.isClient) { user.addStatusEffect(new StatusEffectInstance(StatusEffects.POISON, 20 * 60 * 2)); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.HUNGER, 20 * 60 * 2)); } if (stack.isEmpty()) { return new ItemStack(Items.GLASS_BOTTLE); diff --git a/src/main/java/net/ludocrypt/backrooms/misc/BackroomsSoundEvents.java b/src/main/java/net/ludocrypt/backrooms/misc/BackroomsSoundEvents.java index b8aba68..078c713 100644 --- a/src/main/java/net/ludocrypt/backrooms/misc/BackroomsSoundEvents.java +++ b/src/main/java/net/ludocrypt/backrooms/misc/BackroomsSoundEvents.java @@ -9,6 +9,7 @@ public class BackroomsSoundEvents { public static final SoundEvent LEVEL0MUSIC = register("backrooms:level.0.music"); public static final SoundEvent LEVEL1MUSIC = register("backrooms:level.1.music"); public static final SoundEvent LEVEL2MUSIC = register("backrooms:level.2.music"); + public static final SoundEvent LEVEL3MUSIC = register("backrooms:level.3.music"); public static final SoundEvent MUSIC_DISC_ITS_BEEN_SO_LONG = register("backrooms:music_disc.its_been_so_long"); public static final SoundEvent MUSIC_DISC_OMAE_WA_MOU = register("backrooms:music_disc.omae_wa_mou"); public static final SoundEvent MUSIC_DISC_012 = register("backrooms:music_disc.012"); diff --git a/src/main/java/net/ludocrypt/backrooms/misc/PreInitialize.java b/src/main/java/net/ludocrypt/backrooms/misc/PreInitialize.java index 21851d9..7da0d73 100644 --- a/src/main/java/net/ludocrypt/backrooms/misc/PreInitialize.java +++ b/src/main/java/net/ludocrypt/backrooms/misc/PreInitialize.java @@ -21,12 +21,14 @@ static void initializeClient() { String soundEvent = remapper.mapClassName("intermediary", "net.minecraft.class_3414"); ClassTinkerers.enumBuilder(musicType, 'L' + soundEvent + ';', "I", "I") - .addEnum("LEVEL0MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL0MUSIC, 12000, 36000 }) - .addEnum("LEVEL1MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL1MUSIC, 12000, 36000 }) - .addEnum("LEVEL2MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL2MUSIC, 12000, 36000 }) - .addEnum("LEVEL0MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL0MUSIC, 100, 300 }) - .addEnum("LEVEL1MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL1MUSIC, 100, 300 }) - .addEnum("LEVEL2MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL2MUSIC, 100, 300 }) + .addEnum("LEVEL0MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL0MUSIC, 500, 1000 }) + .addEnum("LEVEL1MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL1MUSIC, 500, 1000 }) + .addEnum("LEVEL2MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL2MUSIC, 500, 1000 }) + .addEnum("LEVEL3MUSIC", () -> new Object[] { BackroomsSoundEvents.LEVEL3MUSIC, 500, 1000 }) + .addEnum("LEVEL0MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL0MUSIC, 20, 600 }) + .addEnum("LEVEL1MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL1MUSIC, 20, 600 }) + .addEnum("LEVEL2MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL2MUSIC, 20, 600 }) + .addEnum("LEVEL3MENU", () -> new Object[] { BackroomsSoundEvents.LEVEL3MUSIC, 20, 600 }) .build(); } } \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/mixin/MusicMixin.java b/src/main/java/net/ludocrypt/backrooms/mixin/MusicMixin.java index 4612dd7..bcb164f 100644 --- a/src/main/java/net/ludocrypt/backrooms/mixin/MusicMixin.java +++ b/src/main/java/net/ludocrypt/backrooms/mixin/MusicMixin.java @@ -1,23 +1,28 @@ package net.ludocrypt.backrooms.mixin; import org.spongepowered.asm.mixin.Mixin; + import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.ludocrypt.backrooms.Backrooms; import net.ludocrypt.backrooms.dimension.Level0Dimension; import net.ludocrypt.backrooms.dimension.Level0DottedDimension; import net.ludocrypt.backrooms.dimension.Level0RedDimension; import net.ludocrypt.backrooms.dimension.Level1Dimension; import net.ludocrypt.backrooms.dimension.Level2Dimension; +import net.ludocrypt.backrooms.dimension.Level3Dimension; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.sound.MusicTracker; import net.minecraft.client.sound.MusicTracker.MusicType; import net.minecraft.client.world.ClientWorld; +@Environment(EnvType.CLIENT) @Mixin(MinecraftClient.class) public class MusicMixin { @@ -35,6 +40,8 @@ private void getMusicType(CallbackInfoReturnable callbac callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL1MENU")); } else if (this.player == null && Backrooms.Display == true && Backrooms.DisplayLevel == 2) { callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL2MENU")); + } else if (this.player == null && Backrooms.Display == true && Backrooms.DisplayLevel == 3) { + callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL3MENU")); } else if (this.player == null && Backrooms.Display == false) { callbackInfoReturnable.setReturnValue(MusicType.MENU); } else if (world != null && this.world.dimension instanceof Level0Dimension @@ -45,6 +52,8 @@ private void getMusicType(CallbackInfoReturnable callbac callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL1MUSIC")); } else if (world != null && this.world.getDimension() instanceof Level2Dimension) { callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL2MUSIC")); + } else if (world != null && this.world.getDimension() instanceof Level3Dimension) { + callbackInfoReturnable.setReturnValue(MusicType.valueOf("LEVEL3MUSIC")); } } } diff --git a/src/main/java/net/ludocrypt/backrooms/mixin/PlayerMixin.java b/src/main/java/net/ludocrypt/backrooms/mixin/PlayerMixin.java index 6b4f110..ec8c8a9 100644 --- a/src/main/java/net/ludocrypt/backrooms/mixin/PlayerMixin.java +++ b/src/main/java/net/ludocrypt/backrooms/mixin/PlayerMixin.java @@ -31,4 +31,5 @@ private void onEntityTick(CallbackInfo ci) { } } } + } \ No newline at end of file diff --git a/src/main/java/net/ludocrypt/backrooms/mixin/TitleScreenMixin.java b/src/main/java/net/ludocrypt/backrooms/mixin/TitleScreenMixin.java index 21c8c66..d4e9c74 100644 --- a/src/main/java/net/ludocrypt/backrooms/mixin/TitleScreenMixin.java +++ b/src/main/java/net/ludocrypt/backrooms/mixin/TitleScreenMixin.java @@ -1,11 +1,14 @@ package net.ludocrypt.backrooms.mixin; import org.spongepowered.asm.mixin.Mixin; + import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.ludocrypt.backrooms.Backrooms; import net.ludocrypt.backrooms.config.BackroomsConfig; import net.minecraft.client.gui.CubeMapRenderer; @@ -17,6 +20,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; +@Environment(EnvType.CLIENT) @Mixin(TitleScreen.class) public abstract class TitleScreenMixin extends Screen { @@ -28,6 +32,8 @@ public abstract class TitleScreenMixin extends Screen { new Identifier("backrooms:textures/gui/title/background/level1")); private static CubeMapRenderer LEVEL2_CUBE_MAP = new CubeMapRenderer( new Identifier("backrooms:textures/gui/title/background/level2")); + private static CubeMapRenderer LEVEL3_CUBE_MAP = new CubeMapRenderer( + new Identifier("backrooms:textures/gui/title/background/level3")); @Shadow private RotatingCubeMapRenderer backgroundRenderer = new RotatingCubeMapRenderer(NORMAL_CUBE_MAP); @@ -48,6 +54,8 @@ private void addCustomButton(int y, int spacingY, CallbackInfo ci) { this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL1_CUBE_MAP); } else if (BackroomsConfig.getInstance().ForceLevel2) { this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL2_CUBE_MAP); + } else if (BackroomsConfig.getInstance().ForceLevel3) { + this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL3_CUBE_MAP); } else if (!Backrooms.Display) { Backrooms.Display = true; this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL0_CUBE_MAP); @@ -58,6 +66,9 @@ private void addCustomButton(int y, int spacingY, CallbackInfo ci) { Backrooms.DisplayLevel = 2; this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL2_CUBE_MAP); } else if (Backrooms.Display && Backrooms.DisplayLevel == 2) { + Backrooms.DisplayLevel = 3; + this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL3_CUBE_MAP); + } else if (Backrooms.Display && Backrooms.DisplayLevel == 3) { Backrooms.DisplayLevel = 0; Backrooms.Display = false; this.backgroundRenderer = new RotatingCubeMapRenderer(NORMAL_CUBE_MAP); @@ -79,6 +90,10 @@ private void addCustomButton(int y, int spacingY, CallbackInfo ci) { Backrooms.Display = true; Backrooms.DisplayLevel = 2; this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL2_CUBE_MAP); + } else if (BackroomsConfig.getInstance().ForceLevel3) { + Backrooms.Display = true; + Backrooms.DisplayLevel = 3; + this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL3_CUBE_MAP); } else if (!Backrooms.Display) { this.backgroundRenderer = new RotatingCubeMapRenderer(NORMAL_CUBE_MAP); } else if (Backrooms.Display && Backrooms.DisplayLevel == 0) { @@ -87,6 +102,8 @@ private void addCustomButton(int y, int spacingY, CallbackInfo ci) { this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL1_CUBE_MAP); } else if (Backrooms.Display && Backrooms.DisplayLevel == 2) { this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL2_CUBE_MAP); + } else if (Backrooms.Display && Backrooms.DisplayLevel == 3) { + this.backgroundRenderer = new RotatingCubeMapRenderer(LEVEL3_CUBE_MAP); } } } diff --git a/src/main/resources/assets/backrooms/blockstates/dotted_torn_wallpaper.json b/src/main/resources/assets/backrooms/blockstates/dotted_torn_wallpaper.json new file mode 100644 index 0000000..19a74fe --- /dev/null +++ b/src/main/resources/assets/backrooms/blockstates/dotted_torn_wallpaper.json @@ -0,0 +1,8 @@ +{ + "variants": { + "torn_level=1": { "model": "backrooms:block/dotted_torn_wallpaper_1"}, + "torn_level=2": { "model": "backrooms:block/dotted_torn_wallpaper_2"}, + "torn_level=3": { "model": "backrooms:block/dotted_torn_wallpaper_3"}, + "torn_level=4": { "model": "backrooms:block/dotted_torn_wallpaper_4"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/blockstates/linedpipe.json b/src/main/resources/assets/backrooms/blockstates/linedpipe.json new file mode 100644 index 0000000..45d655a --- /dev/null +++ b/src/main/resources/assets/backrooms/blockstates/linedpipe.json @@ -0,0 +1,32 @@ +{ + "variants": { + "type=1": [ + { + "model": "backrooms:block/linedpipe/lp0" + }, + { + "model": "backrooms:block/linedpipe/lp1" + }, + { + "model": "backrooms:block/linedpipe/lp2" + }, + { + "model": "backrooms:block/linedpipe/lp3" + } + ], + "type=2": [ + { + "model": "backrooms:block/linedpipe/lp0" + }, + { + "model": "backrooms:block/linedpipe/lp1" + }, + { + "model": "backrooms:block/linedpipe/lp2" + }, + { + "model": "backrooms:block/linedpipe/lp3" + } + ] + } +} diff --git a/src/main/resources/assets/backrooms/blockstates/red_torn_wallpaper.json b/src/main/resources/assets/backrooms/blockstates/red_torn_wallpaper.json new file mode 100644 index 0000000..9e7465d --- /dev/null +++ b/src/main/resources/assets/backrooms/blockstates/red_torn_wallpaper.json @@ -0,0 +1,8 @@ +{ + "variants": { + "torn_level=1": { "model": "backrooms:block/red_torn_wallpaper_1"}, + "torn_level=2": { "model": "backrooms:block/red_torn_wallpaper_2"}, + "torn_level=3": { "model": "backrooms:block/red_torn_wallpaper_3"}, + "torn_level=4": { "model": "backrooms:block/red_torn_wallpaper_4"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/lang/en_us.json b/src/main/resources/assets/backrooms/lang/en_us.json index ab7b1f1..e373048 100644 --- a/src/main/resources/assets/backrooms/lang/en_us.json +++ b/src/main/resources/assets/backrooms/lang/en_us.json @@ -49,6 +49,8 @@ "block.backrooms.red_checkered": "Red Checkered Quartz", "block.backrooms.black_checkered": "Black Checkered Quartz", "block.backrooms.torn_wallpaper": "Torn Wallpaper", + "block.backrooms.red_torn_wallpaper": "Torn Red Wallpaper", + "block.backrooms.dotted_torn_wallpaper": "Torn Dotted Wallpaper", "biome.backrooms.level0": "Level 0", "biome.backrooms.level1": "Level 1", "biome.backrooms.level2": "Level 2", @@ -81,6 +83,10 @@ "advancements.level1.descr": "Enter Level 1", "advancements.level2.title": "Pipe Dreams", "advancements.level2.descr": "Enter Level 2", + "advancements.level3.title": "Electrical Station", + "advancements.level3.descr": "Enter Level 3", + "advancements.timewaster.title": "Time Waster", + "advancements.timewaster.descr": "Get to the surface of EVERY LEVEL", "text.autoconfig.backrooms.title": "Backrooms Configurations", "text.autoconfig.backrooms.option.Level0DoorChance": "Chance for door to appear in level 0", "text.autoconfig.backrooms.option.Level1DoorChance": "Chance for door to appear in level 1", @@ -92,6 +98,7 @@ "text.autoconfig.backrooms.option.ForceLevel0": "Forces title screen to stay as Level 0", "text.autoconfig.backrooms.option.ForceLevel1": "Forces title screen to stay as Level 1", "text.autoconfig.backrooms.option.ForceLevel2": "Forces title screen to stay as Level 2", + "text.autoconfig.backrooms.option.ForceLevel3": "Forces title screen to stay as Level 3", "text.autoconfig.backrooms.option.ForceNormal": "Forces title screen to stay as it should be", "text.autoconfig.backrooms.option.SanityEffects": "Sanity Effects", "text.autoconfig.backrooms.option.TallDoors": "Have doors be ever so slightly taller" diff --git a/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_1.json b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_1.json new file mode 100644 index 0000000..3af914b --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/dotted_torn_wallpaper_level_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_2.json b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_2.json new file mode 100644 index 0000000..075fb59 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/dotted_torn_wallpaper_level_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_3.json b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_3.json new file mode 100644 index 0000000..3a94369 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/dotted_torn_wallpaper_level_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_4.json b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_4.json new file mode 100644 index 0000000..9b4577b --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/dotted_torn_wallpaper_4.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/dotted_torn_wallpaper_level_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/linedpipe/lp0.json b/src/main/resources/assets/backrooms/models/block/linedpipe/lp0.json new file mode 100644 index 0000000..5f93c82 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/linedpipe/lp0.json @@ -0,0 +1,205 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "backrooms:block/steel", + "1": "backrooms:block/metal", + "2": "backrooms:block/copper", + "particle": "backrooms:block/steel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 1, 16], + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [4.4, 0, 0], + "to": [5.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [12.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [1.5, 0, 0], + "to": [2.5, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9.5, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#2"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#2"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#2"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#2"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#2"} + } + }, + { + "from": [7.7, 0, 0], + "to": [8.7, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [15.7, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [12.4, 0, 0], + "to": [13.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [20.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 2, 0], + "to": [1, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [3, 2, 0], + "to": [4, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [6, 2, 0], + "to": [7, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [9, 2, 0], + "to": [10, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [0, 2, 12], + "to": [10, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -4]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 4], + "to": [10, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -6]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 8], + "to": [10, 3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -5]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 0], + "to": [10, 3, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -7]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0.3, 8, 0], + "to": [6.3, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8.3, 16, 8]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#1"}, + "east": {"uv": [0, 6, 16, 12], "texture": "#1"}, + "south": {"uv": [4, 4, 10, 10], "texture": "#1"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#1"}, + "up": {"uv": [4, 0, 10, 16], "texture": "#1"}, + "down": {"uv": [10, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/linedpipe/lp1.json b/src/main/resources/assets/backrooms/models/block/linedpipe/lp1.json new file mode 100644 index 0000000..7f7840b --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/linedpipe/lp1.json @@ -0,0 +1,218 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "backrooms:block/steel", + "1": "backrooms:block/metal", + "2": "backrooms:block/copper", + "particle": "backrooms:block/steel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 1, 16], + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [4.4, 0, 0], + "to": [5.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [12.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [1.5, 0, 0], + "to": [2.5, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9.5, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#2"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#2"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#2"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#2"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#2"} + } + }, + { + "from": [7.7, 0, 0], + "to": [8.7, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [15.7, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [12.4, 0, 0], + "to": [13.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [20.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [11.5, -1.4, 3.2], + "to": [14.4, 1.2, 6.4], + "rotation": {"angle": 0, "axis": "y", "origin": [20.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#0"}, + "east": {"uv": [0, 6, 8, 12], "texture": "#0"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#0"}, + "west": {"uv": [0, 8, 8, 14], "texture": "#0"}, + "up": {"uv": [10, 10, 16, 16], "texture": "#0"}, + "down": {"uv": [1, 9, 8, 16], "texture": "#0"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 2, 0], + "to": [1, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [3, 2, 0], + "to": [4, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [6, 2, 0], + "to": [7, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [9, 2, 0], + "to": [10, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [0, 2, 12], + "to": [10, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -4]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 4], + "to": [10, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -6]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 8], + "to": [10, 3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -5]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 0], + "to": [10, 3, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -7]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0.3, 8, 0], + "to": [6.3, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8.3, 16, 8]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#1"}, + "east": {"uv": [0, 6, 16, 12], "texture": "#1"}, + "south": {"uv": [4, 4, 10, 10], "texture": "#1"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#1"}, + "up": {"uv": [4, 0, 10, 16], "texture": "#1"}, + "down": {"uv": [10, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/linedpipe/lp2.json b/src/main/resources/assets/backrooms/models/block/linedpipe/lp2.json new file mode 100644 index 0000000..476034d --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/linedpipe/lp2.json @@ -0,0 +1,218 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "backrooms:block/steel", + "1": "backrooms:block/metal", + "2": "backrooms:block/copper", + "particle": "backrooms:block/steel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 1, 16], + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [4.4, 0, 0], + "to": [5.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [12.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [1.5, 0, 0], + "to": [2.5, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9.5, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#2"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#2"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#2"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#2"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#2"} + } + }, + { + "from": [7.7, 0, 0], + "to": [8.7, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [15.7, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [12.4, 0, 0], + "to": [13.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [20.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [6.8, -1.4, 10.2], + "to": [9.7, 1.2, 13.4], + "rotation": {"angle": 0, "axis": "y", "origin": [15.7, 8, 15]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#0"}, + "east": {"uv": [0, 6, 8, 12], "texture": "#0"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#0"}, + "west": {"uv": [0, 8, 8, 14], "texture": "#0"}, + "up": {"uv": [10, 10, 16, 16], "texture": "#0"}, + "down": {"uv": [1, 9, 8, 16], "texture": "#0"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 2, 0], + "to": [1, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [3, 2, 0], + "to": [4, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [6, 2, 0], + "to": [7, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [9, 2, 0], + "to": [10, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [0, 2, 12], + "to": [10, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -4]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 4], + "to": [10, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -6]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 8], + "to": [10, 3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -5]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 0], + "to": [10, 3, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -7]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0.3, 8, 0], + "to": [6.3, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8.3, 16, 8]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#1"}, + "east": {"uv": [0, 6, 16, 12], "texture": "#1"}, + "south": {"uv": [4, 4, 10, 10], "texture": "#1"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#1"}, + "up": {"uv": [4, 0, 10, 16], "texture": "#1"}, + "down": {"uv": [10, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/linedpipe/lp3.json b/src/main/resources/assets/backrooms/models/block/linedpipe/lp3.json new file mode 100644 index 0000000..b421465 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/linedpipe/lp3.json @@ -0,0 +1,218 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "backrooms:block/steel", + "1": "backrooms:block/metal", + "2": "backrooms:block/copper", + "particle": "backrooms:block/steel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 1, 16], + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [4.4, 0, 0], + "to": [5.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [12.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [1.5, 0, 0], + "to": [2.5, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9.5, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#2"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#2"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#2"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#2"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#2"} + } + }, + { + "from": [7.7, 0, 0], + "to": [8.7, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [15.7, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [12.4, 0, 0], + "to": [13.4, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [20.4, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [14.2, -1.4, 7.3], + "to": [17.1, 1.2, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [23.1, 8, 12.1]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#0"}, + "east": {"uv": [0, 6, 8, 12], "texture": "#0"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#0"}, + "west": {"uv": [0, 8, 8, 14], "texture": "#0"}, + "up": {"uv": [10, 10, 16, 16], "texture": "#0"}, + "down": {"uv": [1, 9, 8, 16], "texture": "#0"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 12, 16, 13], "texture": "#1"}, + "south": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "west": {"uv": [0, 8, 16, 9], "texture": "#1"}, + "up": {"uv": [8, 0, 9, 16], "texture": "#1"}, + "down": {"uv": [15, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 2, 0], + "to": [1, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [3, 2, 0], + "to": [4, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [6, 2, 0], + "to": [7, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [9, 2, 0], + "to": [10, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 10, 8]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "texture": "#0"} + } + }, + { + "from": [0, 2, 12], + "to": [10, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -4]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 4], + "to": [10, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -6]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 8], + "to": [10, 3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -5]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 2, 0], + "to": [10, 3, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, -7]}, + "faces": { + "north": {"uv": [0, 14, 10, 15], "texture": "#0"}, + "east": {"uv": [11, 5, 12, 6], "texture": "#0"}, + "south": {"uv": [6, 11, 16, 12], "texture": "#0"}, + "west": {"uv": [8, 9, 9, 10], "texture": "#0"}, + "up": {"uv": [10, 4, 11, 14], "rotation": 270, "texture": "#0"}, + "down": {"uv": [6, 3, 7, 13], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0.3, 8, 0], + "to": [6.3, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8.3, 16, 8]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#1"}, + "east": {"uv": [0, 6, 16, 12], "texture": "#1"}, + "south": {"uv": [4, 4, 10, 10], "texture": "#1"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#1"}, + "up": {"uv": [4, 0, 10, 16], "texture": "#1"}, + "down": {"uv": [10, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_1.json b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_1.json new file mode 100644 index 0000000..1a325d9 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/red_torn_wallpaper_level_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_2.json b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_2.json new file mode 100644 index 0000000..2b11eef --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/red_torn_wallpaper_level_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_3.json b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_3.json new file mode 100644 index 0000000..178861f --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/red_torn_wallpaper_level_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_4.json b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_4.json new file mode 100644 index 0000000..f36c7bb --- /dev/null +++ b/src/main/resources/assets/backrooms/models/block/red_torn_wallpaper_4.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "backrooms:block/red_torn_wallpaper_level_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/backrooms/models/item/dotted_torn_wallpaper.json b/src/main/resources/assets/backrooms/models/item/dotted_torn_wallpaper.json new file mode 100644 index 0000000..c089d87 --- /dev/null +++ b/src/main/resources/assets/backrooms/models/item/dotted_torn_wallpaper.json @@ -0,0 +1,3 @@ +{ + "parent": "backrooms:block/dotted_torn_wallpaper_3" +} diff --git a/src/main/resources/assets/backrooms/models/item/linedpipe.json b/src/main/resources/assets/backrooms/models/item/linedpipe.json new file mode 100644 index 0000000..c9471fc --- /dev/null +++ b/src/main/resources/assets/backrooms/models/item/linedpipe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "backrooms:items/pipe" + } +} diff --git a/src/main/resources/assets/backrooms/models/item/red_torn_wallpaper.json b/src/main/resources/assets/backrooms/models/item/red_torn_wallpaper.json new file mode 100644 index 0000000..95ad5fa --- /dev/null +++ b/src/main/resources/assets/backrooms/models/item/red_torn_wallpaper.json @@ -0,0 +1,3 @@ +{ + "parent": "backrooms:block/red_torn_wallpaper_3" +} diff --git a/src/main/resources/assets/backrooms/sounds.json b/src/main/resources/assets/backrooms/sounds.json index b2b0d93..591b23a 100644 --- a/src/main/resources/assets/backrooms/sounds.json +++ b/src/main/resources/assets/backrooms/sounds.json @@ -1,220 +1,248 @@ { - "level.0.music": { - "category": "music", - "sounds": [ - { - "name": "backrooms:music/ambient/episodic_lullaby", - "stream": true + "level.0.music": { + "category": "music", + "sounds": [ + { + "name": "backrooms:music/ambient/episodic_lullaby", + "stream": true + }, + { + "name": "backrooms:music/ambient/lining_the_walls", + "volume": 0.8, + "stream": true, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/parallax", + "stream": true + }, + { + "name": "backrooms:music/ambient/nerve_receptors", + "stream": true + }, + { + "name": "backrooms:music/ambient/backrooms", + "stream": true, + "volume": 0.35, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/foggy_hands", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/lining_the_walls", - "volume": 0.8, - "stream": true, - "weight": 2 + "level.1.music": { + "category": "music", + "sounds": [ + { + "name": "backrooms:music/ambient/episodic_lullaby", + "stream": true + }, + { + "name": "backrooms:music/ambient/it_darkens", + "stream": true + }, + { + "name": "backrooms:music/ambient/parallax", + "stream": true + }, + { + "name": "backrooms:music/ambient/nerve_receptors", + "stream": true + }, + { + "name": "backrooms:music/ambient/cracked_tiles", + "stream": true, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/foggy_hands", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/parallax", - "stream": true + "level.2.music": { + "category": "music", + "sounds": [ + { + "name": "backrooms:music/ambient/the_halls_lengthen", + "stream": true, + "volume": 0.5, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/foggy_hands", + "stream": true + }, + { + "name": "backrooms:music/ambient/parallax", + "stream": true + }, + { + "name": "backrooms:music/ambient/kirifiki", + "stream": true, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/reposition", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/nerve_receptors", - "stream": true + "level.3.music": { + "category": "music", + "sounds": [ + { + "name": "backrooms:music/ambient/the_pipes", + "stream": true, + "volume": 0.5, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/foggy_hands", + "stream": true + }, + { + "name": "backrooms:music/ambient/parallax", + "stream": true + }, + { + "name": "backrooms:music/ambient/flowing_in_the_pipes", + "stream": true, + "weight": 2 + }, + { + "name": "backrooms:music/ambient/episodic_lullaby", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/backrooms", - "stream": true, - "volume": 0.35, - "weight": 2 + "music_disc.its_been_so_long": { + "sounds": [ + { + "name": "backrooms:music/records/its_been_so_long", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/foggy_hands", - "stream": true - } - ] - }, - "level.1.music": { - "category": "music", - "sounds": [ - { - "name": "backrooms:music/ambient/episodic_lullaby", - "stream": true - }, - { - "name": "backrooms:music/ambient/it_darkens", - "stream": true + "music_disc.omae_wa_mou": { + "sounds": [ + { + "name": "backrooms:music/records/omae_wa_mou", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/parallax", - "stream": true + "music_disc.glacial_cavern": { + "sounds": [ + { + "name": "backrooms:music/records/glacial_cavern", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/nerve_receptors", - "stream": true + "music_disc.012": { + "sounds": [ + { + "name": "backrooms:music/records/012", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/cracked_tiles", - "stream": true, - "weight": 2 - }, - { - "name": "backrooms:music/ambient/foggy_hands", - "stream": true - } - ] - }, - "level.2.music": { - "category": "music", - "sounds": [ - { - "name": "backrooms:music/ambient/the_halls_lengthen", - "stream": true, - "volume": 0.5, - "weight": 2 + "music_disc.those_torn_walls": { + "sounds": [ + { + "name": "backrooms:music/records/those_torn_walls", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/foggy_hands", - "stream": true + "music_disc.burgers_and_fries": { + "sounds": [ + { + "name": "backrooms:music/records/burgers_and_fries", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/parallax", - "stream": true + "tone": { + "sounds": [ + { + "name": "backrooms:tone", + "stream": true + } + ] }, - { - "name": "backrooms:music/ambient/kirifiki", - "stream": true, - "weight": 2 + "gulp": { + "sounds": [ + { + "name": "backrooms:gulp/gulp1" + }, + { + "name": "backrooms:gulp/gulp2" + }, + { + "name": "backrooms:gulp/gulp3" + } + ] }, - { - "name": "backrooms:music/ambient/reposition", - "stream": true + "level.0.ambience": { + "sounds": [ + { + "name": "backrooms:ambient/breath1" + }, + { + "name": "backrooms:ambient/breath2" + }, + { + "name": "backrooms:ambient/breath3" + }, + { + "name": "backrooms:ambient/breath4" + }, + { + "name": "backrooms:ambient/harp1" + }, + { + "name": "backrooms:ambient/harp2" + }, + { + "name": "backrooms:ambient/harp3" + }, + { + "name": "backrooms:ambient/knock1" + }, + { + "name": "backrooms:ambient/knock2" + }, + { + "name": "backrooms:ambient/knock3" + }, + { + "name": "backrooms:ambient/synth1" + }, + { + "name": "backrooms:ambient/synth2" + }, + { + "name": "backrooms:ambient/synth3" + }, + { + "name": "backrooms:ambient/tone1" + }, + { + "name": "backrooms:ambient/tone2" + }, + { + "name": "backrooms:ambient/tone3" + }, + { + "name": "backrooms:ambient/tone4" + }, + { + "name": "backrooms:ambient/whistle1" + } + ] } - ] - }, - "music_disc.its_been_so_long": { - "sounds": [ - { - "name": "backrooms:music/records/its_been_so_long", - "stream": true - } - ] - }, - "music_disc.omae_wa_mou": { - "sounds": [ - { - "name": "backrooms:music/records/omae_wa_mou", - "stream": true - } - ] - }, - "music_disc.glacial_cavern": { - "sounds": [ - { - "name": "backrooms:music/records/glacial_cavern", - "stream": true - } - ] - }, - "music_disc.012": { - "sounds": [ - { - "name": "backrooms:music/records/012", - "stream": true - } - ] - }, - "music_disc.those_torn_walls": { - "sounds": [ - { - "name": "backrooms:music/records/those_torn_walls", - "stream": true - } - ] - }, - "music_disc.burgers_and_fries": { - "sounds": [ - { - "name": "backrooms:music/records/burgers_and_fries", - "stream": true - } - ] - }, - "tone": { - "sounds": [ - { - "name": "backrooms:tone", - "stream": true - } - ] - }, - "gulp": { - "sounds": [ - { - "name": "backrooms:gulp/gulp1" - }, - { - "name": "backrooms:gulp/gulp2" - }, - { - "name": "backrooms:gulp/gulp3" - } - ] - }, - "level.0.ambience": { - "sounds": [ - { - "name": "backrooms:ambient/breath1" - }, - { - "name": "backrooms:ambient/breath2" - }, - { - "name": "backrooms:ambient/breath3" - }, - { - "name": "backrooms:ambient/breath4" - }, - { - "name": "backrooms:ambient/harp1" - }, - { - "name": "backrooms:ambient/harp2" - }, - { - "name": "backrooms:ambient/harp3" - }, - { - "name": "backrooms:ambient/knock1" - }, - { - "name": "backrooms:ambient/knock2" - }, - { - "name": "backrooms:ambient/knock3" - }, - { - "name": "backrooms:ambient/synth1" - }, - { - "name": "backrooms:ambient/synth2" - }, - { - "name": "backrooms:ambient/synth3" - }, - { - "name": "backrooms:ambient/tone1" - }, - { - "name": "backrooms:ambient/tone2" - }, - { - "name": "backrooms:ambient/tone3" - }, - { - "name": "backrooms:ambient/tone4" - }, - { - "name": "backrooms:ambient/whistle1" - } - ] - } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/backrooms/textures/block/cement.png b/src/main/resources/assets/backrooms/textures/block/cement.png index 4b9ca34..16ae976 100644 Binary files a/src/main/resources/assets/backrooms/textures/block/cement.png and b/src/main/resources/assets/backrooms/textures/block/cement.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/copper.png b/src/main/resources/assets/backrooms/textures/block/copper.png new file mode 100644 index 0000000..15403e9 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/copper.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_1.png b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_1.png new file mode 100644 index 0000000..7853e4b Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_1.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_2.png b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_2.png new file mode 100644 index 0000000..2d01671 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_2.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_3.png b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_3.png new file mode 100644 index 0000000..a6d8f99 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_3.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_4.png b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_4.png new file mode 100644 index 0000000..e131507 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/dotted_torn_wallpaper_level_4.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/metal.png b/src/main/resources/assets/backrooms/textures/block/metal.png new file mode 100644 index 0000000..739b3f6 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/metal.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_1.png b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_1.png new file mode 100644 index 0000000..d3d157c Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_1.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_2.png b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_2.png new file mode 100644 index 0000000..54a6b94 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_2.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_3.png b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_3.png new file mode 100644 index 0000000..2535142 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_3.png differ diff --git a/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_4.png b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_4.png new file mode 100644 index 0000000..254cae1 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/block/red_torn_wallpaper_level_4.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/icons.png b/src/main/resources/assets/backrooms/textures/gui/icons.png deleted file mode 100644 index c7f53e7..0000000 Binary files a/src/main/resources/assets/backrooms/textures/gui/icons.png and /dev/null differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_0.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_0.png new file mode 100644 index 0000000..f22b592 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_0.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_1.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_1.png new file mode 100644 index 0000000..8586d65 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_1.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_2.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_2.png new file mode 100644 index 0000000..0daa84b Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_2.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_3.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_3.png new file mode 100644 index 0000000..f3df7e3 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_3.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_4.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_4.png new file mode 100644 index 0000000..1cad4f3 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_4.png differ diff --git a/src/main/resources/assets/backrooms/textures/gui/title/background/level3_5.png b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_5.png new file mode 100644 index 0000000..c8e3855 Binary files /dev/null and b/src/main/resources/assets/backrooms/textures/gui/title/background/level3_5.png differ diff --git a/src/main/resources/backrooms.mixins.json b/src/main/resources/backrooms.mixins.json index 5a29fa2..43f73d2 100644 --- a/src/main/resources/backrooms.mixins.json +++ b/src/main/resources/backrooms.mixins.json @@ -3,13 +3,13 @@ "package": "net.ludocrypt.backrooms.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ - "TitleScreenMixin", "GoToBackroomsMixin", - "PlayerMixin", - "MusicMixin", - "BuiltinModelItemRendererMixin" + "PlayerMixin" ], "client": [ + "BuiltinModelItemRendererMixin", + "MusicMixin", + "TitleScreenMixin" ], "injectors": { "defaultRequire": 1 diff --git a/src/main/resources/data/backrooms/advancements/backrooms.json b/src/main/resources/data/backrooms/advancements/backrooms.json index 5f2aad7..e2a806b 100644 --- a/src/main/resources/data/backrooms/advancements/backrooms.json +++ b/src/main/resources/data/backrooms/advancements/backrooms.json @@ -15,14 +15,14 @@ "announce_to_chat": false, "hidden": true }, - "criteria": { - "backrooms": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level0" - } - } - }, + "criteria": { + "level0": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0" + } + } + }, "rewards": { "experience": 10 } diff --git a/src/main/resources/data/backrooms/advancements/level_0.json b/src/main/resources/data/backrooms/advancements/level_0.json index 405f7a8..d2fffd0 100644 --- a/src/main/resources/data/backrooms/advancements/level_0.json +++ b/src/main/resources/data/backrooms/advancements/level_0.json @@ -1,29 +1,37 @@ { - "display": { - "icon": { - "item": "backrooms:wallpaper" - }, - "title": { - "translate": "advancements.level0.title" - }, - "description": { - "translate": "advancements.level0.descr" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "level_1": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level0" - } - } - }, - "rewards": { - "experience": 10 - }, - "parent": "backrooms:backrooms" -} \ No newline at end of file + "display": { + "icon": { + "item": "backrooms:wallpaper" + }, + "title": { + "translate": "advancements.level0.title" + }, + "description": { + "translate": "advancements.level0.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level0": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:tile", + "backrooms:light", + "backrooms:oak_planks", + "backrooms:raw_almond_water", + "backrooms:carpet", + "backrooms:carpet_stairs" + ], + "experience": 10 + }, + "parent": "backrooms:backrooms" +} diff --git a/src/main/resources/data/backrooms/advancements/level_0_dotted.json b/src/main/resources/data/backrooms/advancements/level_0_dotted.json index 2ee464a..8353286 100644 --- a/src/main/resources/data/backrooms/advancements/level_0_dotted.json +++ b/src/main/resources/data/backrooms/advancements/level_0_dotted.json @@ -1,29 +1,32 @@ { - "display": { - "icon": { - "item": "backrooms:dotted_wallpaper" - }, - "title": { - "translate": "advancements.level0dotted.title" - }, - "description": { - "translate": "advancements.level0dotted.descr" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "level_1": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level0dotted" - } - } - }, - "rewards": { - "experience": 10 - }, - "parent": "backrooms:level_0" -} \ No newline at end of file + "display": { + "icon": { + "item": "backrooms:dotted_wallpaper" + }, + "title": { + "translate": "advancements.level0dotted.title" + }, + "description": { + "translate": "advancements.level0dotted.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level0dotted": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0dotted" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:oak_planks3" + ], + "experience": 10 + }, + "parent": "backrooms:level_0" +} diff --git a/src/main/resources/data/backrooms/advancements/level_0_red.json b/src/main/resources/data/backrooms/advancements/level_0_red.json index 7301451..6010166 100644 --- a/src/main/resources/data/backrooms/advancements/level_0_red.json +++ b/src/main/resources/data/backrooms/advancements/level_0_red.json @@ -1,29 +1,32 @@ { - "display": { - "icon": { - "item": "backrooms:red_wallpaper" - }, - "title": { - "translate": "advancements.level0red.title" - }, - "description": { - "translate": "advancements.level0red.descr" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "level_1": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level0red" - } - } - }, - "rewards": { - "experience": 10 - }, - "parent": "backrooms:level_0" -} \ No newline at end of file + "display": { + "icon": { + "item": "backrooms:red_wallpaper" + }, + "title": { + "translate": "advancements.level0red.title" + }, + "description": { + "translate": "advancements.level0red.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level0red": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0red" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:oak_planks2" + ], + "experience": 10 + }, + "parent": "backrooms:level_0" +} diff --git a/src/main/resources/data/backrooms/advancements/level_1.json b/src/main/resources/data/backrooms/advancements/level_1.json index c877fd0..978bb27 100644 --- a/src/main/resources/data/backrooms/advancements/level_1.json +++ b/src/main/resources/data/backrooms/advancements/level_1.json @@ -1,29 +1,36 @@ { - "display": { - "icon": { - "item": "backrooms:cement_bricks" - }, - "title": { - "translate": "advancements.level1.title" - }, - "description": { - "translate": "advancements.level1.descr" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "level_1": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level1" - } - } - }, - "rewards": { - "experience": 10 - }, - "parent": "backrooms:level_0" -} \ No newline at end of file + "display": { + "icon": { + "item": "backrooms:cement_bricks" + }, + "title": { + "translate": "advancements.level1.title" + }, + "description": { + "translate": "advancements.level1.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level1": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level1" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:cement", + "backrooms:cement_stairs", + "backrooms:cement_bricks", + "backrooms:cement_brick_stairs", + "backrooms:cement_brick_slab" + ], + "experience": 10 + }, + "parent": "backrooms:level_0" +} diff --git a/src/main/resources/data/backrooms/advancements/level_2.json b/src/main/resources/data/backrooms/advancements/level_2.json index 706e59c..e2c13d3 100644 --- a/src/main/resources/data/backrooms/advancements/level_2.json +++ b/src/main/resources/data/backrooms/advancements/level_2.json @@ -1,29 +1,32 @@ { - "display": { - "icon": { - "item": "backrooms:pipe" - }, - "title": { - "translate": "advancements.level2.title" - }, - "description": { - "translate": "advancements.level2.descr" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "level_2": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level2" - } - } - }, - "rewards": { - "experience": 10 - }, - "parent": "backrooms:level_1" -} \ No newline at end of file + "display": { + "icon": { + "item": "backrooms:pipe" + }, + "title": { + "translate": "advancements.level2.title" + }, + "description": { + "translate": "advancements.level2.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level2": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level2" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:wrench" + ], + "experience": 10 + }, + "parent": "backrooms:level_1" +} diff --git a/src/main/resources/data/backrooms/advancements/level_3.json b/src/main/resources/data/backrooms/advancements/level_3.json new file mode 100644 index 0000000..36f0079 --- /dev/null +++ b/src/main/resources/data/backrooms/advancements/level_3.json @@ -0,0 +1,47 @@ +{ + "display": { + "icon": { + "item": "backrooms:white_checkered" + }, + "title": { + "translate": "advancements.level3.title" + }, + "description": { + "translate": "advancements.level3.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "level3": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level3" + } + } + }, + "rewards": { + "recipes": [ + "backrooms:black_checkered", + "backrooms:blue_checkered", + "backrooms:brown_checkered", + "backrooms:cyan_checkered", + "backrooms:gray_checkered", + "backrooms:green_checkered", + "backrooms:light_blue_checkered", + "backrooms:light_gray_checkered", + "backrooms:lime_checkered", + "backrooms:magenta_checkered", + "backrooms:orange_checkered", + "backrooms:pink_checkered", + "backrooms:purple_checkered", + "backrooms:red_checkered", + "backrooms:white_checkered", + "backrooms:yellow_checkered" + ], + "experience": 10 + }, + "parent": "backrooms:level_2" +} diff --git a/src/main/resources/data/backrooms/advancements/root_backrooms.json b/src/main/resources/data/backrooms/advancements/root_backrooms.json index c57dce7..533d7b9 100644 --- a/src/main/resources/data/backrooms/advancements/root_backrooms.json +++ b/src/main/resources/data/backrooms/advancements/root_backrooms.json @@ -15,14 +15,14 @@ "announce_to_chat": false, "hidden": true }, - "criteria": { - "backrooms": { - "trigger": "minecraft:changed_dimension", - "conditions": { - "to": "backrooms:level0" - } - } - }, + "criteria": { + "level0": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0" + } + } + }, "rewards": { "experience": 10 }, diff --git a/src/main/resources/data/backrooms/advancements/timewaster.json b/src/main/resources/data/backrooms/advancements/timewaster.json new file mode 100644 index 0000000..a1f250c --- /dev/null +++ b/src/main/resources/data/backrooms/advancements/timewaster.json @@ -0,0 +1,95 @@ +{ + "display": { + "icon": { + "item": "backrooms:wall" + }, + "title": { + "translate": "advancements.timewaster.title" + }, + "description": { + "translate": "advancements.timewaster.descr" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "criteria": { + "level0": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + }, + "level1": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level1", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + }, + "level2": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level2", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + }, + "level3": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level3", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + }, + "level0dotted": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0dotted", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + }, + "level0red": { + "trigger": "minecraft:location", + "conditions": { + "dimension": "backrooms:level0red", + "position": { + "y": { + "min": 62, + "max": 69 + } + } + } + } + }, + "rewards": { + "experience": 500 + }, + "parent": "backrooms:backrooms" +} diff --git a/src/main/resources/data/backrooms/loot_tables/blocks/cement.json b/src/main/resources/data/backrooms/loot_tables/blocks/cement.json index 890b2d1..e4f0973 100644 --- a/src/main/resources/data/backrooms/loot_tables/blocks/cement.json +++ b/src/main/resources/data/backrooms/loot_tables/blocks/cement.json @@ -1,14 +1,64 @@ { - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "backrooms:cement" - } - ] - } - ] + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "backrooms:cement" + }, + { + "type": "minecraft:alternatives", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.1, + 0.19484188, + 0.25, + 1.0 + ] + } + ], + "name": "minecraft:cobblestone" + }, + { + "type": "minecraft:item", + "name": "backrooms:cement" + } + ] + } + ] + } + ] + } + ] } \ No newline at end of file diff --git a/src/main/resources/data/backrooms/loot_tables/blocks/dotted_torn_wallpaper.json b/src/main/resources/data/backrooms/loot_tables/blocks/dotted_torn_wallpaper.json new file mode 100644 index 0000000..78c8777 --- /dev/null +++ b/src/main/resources/data/backrooms/loot_tables/blocks/dotted_torn_wallpaper.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "backrooms:dotted_torn_wallpaper" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/backrooms/loot_tables/blocks/linedpipe.json b/src/main/resources/data/backrooms/loot_tables/blocks/linedpipe.json new file mode 100644 index 0000000..907b0b3 --- /dev/null +++ b/src/main/resources/data/backrooms/loot_tables/blocks/linedpipe.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "backrooms:pipe", + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 5 + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/backrooms/loot_tables/blocks/red_torn_wallpaper.json b/src/main/resources/data/backrooms/loot_tables/blocks/red_torn_wallpaper.json new file mode 100644 index 0000000..eaf690b --- /dev/null +++ b/src/main/resources/data/backrooms/loot_tables/blocks/red_torn_wallpaper.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "backrooms:red_torn_wallpaper" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/backrooms/loot_tables/chests/level0.json b/src/main/resources/data/backrooms/loot_tables/chests/level0.json index c77ee44..669d95f 100644 --- a/src/main/resources/data/backrooms/loot_tables/chests/level0.json +++ b/src/main/resources/data/backrooms/loot_tables/chests/level0.json @@ -1,15 +1,106 @@ -{"pools":[ -{"rolls": -{"min":1,"max":5},"bonus_rolls": -{"min":1.7,"max":5.7}, -"entries":[ -{"type":"item", -"name":"backrooms:raw_almond_water","weight":2,"functions":[{"function":"set_count","count":{"min":1,"max":2}}]} -,{"type":"item","name":"backrooms:almond_water","weight":1,"functions":[{"function":"set_count","count":{"min":1,"max":1}}]} -,{"type":"item","name":"backrooms:music_disc_glacial_cavern","weight":1} -,{"type":"item","name":"backrooms:music_disc_its_been_so_long","weight":1} -,{"type":"item","name":"backrooms:music_disc_012","weight":1} -,{"type":"item","name":"minecraft:golden_apple","weight":1,"functions":[{"function":"set_count","count":{"min":1,"max":2}}]} -,{"type":"item","name":"backrooms:music_disc_those_torn_walls","weight":1} -,{"type":"item","name":"minecraft:string","weight":20,"functions":[{"function":"set_count","count":{"min":1,"max":8}}]} -,{"type":"item","name":"minecraft:rotten_flesh","weight":20,"functions":[{"function":"set_count","count":{"min":1,"max":17}}]}]}]} \ No newline at end of file +{ + "pools": [ + { + "rolls": { + "min": 1, + "max": 5 + }, + "bonus_rolls": { + "min": 1.7, + "max": 5.7 + }, + "entries": [ + { + "type": "item", + "name": "backrooms:raw_almond_water", + "weight": 2, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:almond_water", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 1 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:music_disc_glacial_cavern", + "weight": 1 + }, + { + "type": "item", + "name": "backrooms:music_disc_its_been_so_long", + "weight": 1 + }, + { + "type": "item", + "name": "backrooms:music_disc_012", + "weight": 1 + }, + { + "type": "item", + "name": "minecraft:golden_apple", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:music_disc_those_torn_walls", + "weight": 1 + }, + { + "type": "item", + "name": "minecraft:string", + "weight": 20, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 8 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:rotten_flesh", + "weight": 20, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 17 + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/backrooms/loot_tables/chests/level1.json b/src/main/resources/data/backrooms/loot_tables/chests/level1.json index dce3532..fff4556 100644 --- a/src/main/resources/data/backrooms/loot_tables/chests/level1.json +++ b/src/main/resources/data/backrooms/loot_tables/chests/level1.json @@ -1,14 +1,101 @@ -{"pools":[ -{"rolls": -{"min":1,"max":5},"bonus_rolls": -{"min":1.7,"max":5.7}, -"entries":[ -{"type":"item", -"name":"backrooms:raw_almond_water","weight":2,"functions":[{"function":"set_count","count":{"min":1,"max":2}}]} -,{"type":"item","name":"backrooms:almond_water","weight":1,"functions":[{"function":"set_count","count":{"min":1,"max":1}}]} -,{"type":"item","name":"backrooms:music_disc_its_been_so_long","weight":1} -,{"type":"item","name":"backrooms:music_disc_burgers_and_fries","weight":1} -,{"type":"item","name":"backrooms:music_disc_012","weight":1} -,{"type":"item","name":"minecraft:golden_apple","weight":1,"functions":[{"function":"set_count","count":{"min":1,"max":2}}]} -,{"type":"item","name":"minecraft:string","weight":20,"functions":[{"function":"set_count","count":{"min":1,"max":8}}]} -,{"type":"item","name":"minecraft:rotten_flesh","weight":20,"functions":[{"function":"set_count","count":{"min":1,"max":17}}]}]}]} \ No newline at end of file +{ + "pools": [ + { + "rolls": { + "min": 1, + "max": 5 + }, + "bonus_rolls": { + "min": 1.7, + "max": 5.7 + }, + "entries": [ + { + "type": "item", + "name": "backrooms:raw_almond_water", + "weight": 2, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:almond_water", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 1 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:music_disc_its_been_so_long", + "weight": 1 + }, + { + "type": "item", + "name": "backrooms:music_disc_burgers_and_fries", + "weight": 1 + }, + { + "type": "item", + "name": "backrooms:music_disc_012", + "weight": 1 + }, + { + "type": "item", + "name": "minecraft:golden_apple", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:string", + "weight": 20, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 8 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:rotten_flesh", + "weight": 20, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 17 + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/backrooms/loot_tables/chests/level3.json b/src/main/resources/data/backrooms/loot_tables/chests/level3.json new file mode 100644 index 0000000..4bfe271 --- /dev/null +++ b/src/main/resources/data/backrooms/loot_tables/chests/level3.json @@ -0,0 +1,144 @@ +{ + "pools": [ + { + "rolls": { + "min": 1, + "max": 5 + }, + "bonus_rolls": { + "min": 1.7, + "max": 5.7 + }, + "entries": [ + { + "type": "item", + "name": "backrooms:raw_almond_water", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:almond_water", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:cobweb", + "weight": 3, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 15 + } + } + ] + }, + { + "type": "item", + "name": "backrooms:pipe", + "weight": 5, + "functions": [ + { + "function": "set_count", + "count": { + "min": 3, + "max": 8 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:iron_axe", + "weight": 3 + }, + { + "type": "item", + "name": "minecraft:diamond_axe", + "weight": 1 + }, + { + "type": "item", + "name": "minecraft:golden_axe", + "weight": 2 + }, + { + "type": "item", + "name": "minecraft:iron_sword", + "weight": 2 + }, + { + "type": "item", + "name": "minecraft:diamond_sword", + "weight": 1 + }, + { + "type": "item", + "name": "minecraft:golden_sword", + "weight": 3 + }, + { + "type": "item", + "name": "minecraft:golden_apple", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 2 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:string", + "weight": 20, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 8 + } + } + ] + }, + { + "type": "item", + "name": "minecraft:rotten_flesh", + "weight": 15, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 15 + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/backrooms/recipes/oak_planks2.json b/src/main/resources/data/backrooms/recipes/oak_planks2.json new file mode 100644 index 0000000..d0e39f6 --- /dev/null +++ b/src/main/resources/data/backrooms/recipes/oak_planks2.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "backrooms:red_torn_wallpaper" + } + }, + "result": { + "item": "minecraft:oak_planks", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/backrooms/recipes/oak_planks3.json b/src/main/resources/data/backrooms/recipes/oak_planks3.json new file mode 100644 index 0000000..95dede4 --- /dev/null +++ b/src/main/resources/data/backrooms/recipes/oak_planks3.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "backrooms:dotted_torn_wallpaper" + } + }, + "result": { + "item": "minecraft:oak_planks", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d2f2859..2122761 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "backrooms", - "version": "0.1.6", + "version": "1.0.0", "name": "The Backrooms", "description": "The backrooms, endless mono yellow rooms to traverse.",