diff --git a/src/main/java/ru/windcorp/progressia/test/TestContent.java b/src/main/java/ru/windcorp/progressia/test/TestContent.java index 5f5a690..d927613 100644 --- a/src/main/java/ru/windcorp/progressia/test/TestContent.java +++ b/src/main/java/ru/windcorp/progressia/test/TestContent.java @@ -15,13 +15,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + package ru.windcorp.progressia.test; import static ru.windcorp.progressia.client.world.block.BlockRenderRegistry.getBlockTexture; import static ru.windcorp.progressia.client.world.tile.TileRenderRegistry.getTileTexture; import java.util.ArrayList; +import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.List; @@ -72,7 +73,7 @@ public class TestContent { public static final List PLACEABLE_BLOCKS = new ArrayList<>(); public static final List PLACEABLE_TILES = new ArrayList<>(); - + public static final Rocks ROCKS = new Rocks(); public static void registerContent() { @@ -100,40 +101,21 @@ public class TestContent { register(new TestBlockLogicAir("Test:Air")); placeableBlacklist.add("Test:Air"); - register(new BlockData("Test:Dirt")); - register(new BlockRenderOpaqueCube("Test:Dirt", getBlockTexture("Dirt"))); - register(new BlockLogic("Test:Dirt")); + registerSimplestBlock("Dirt"); + registerSimplestBlock("Chernozem"); + registerSimplestBlock("Stone"); + registerSimplestBlock("Brick"); + registerSimplestBlock("BrickWhite"); + registerSimplestBlock("Sand"); + registerSimplestBlock("Concrete"); + registerSimplestBlock("WoodenPlank"); - register(new BlockData("Test:Chernozem")); - register(new BlockRenderOpaqueCube("Test:Chernozem", getBlockTexture("Chernozem"))); - register(new BlockLogic("Test:Chernozem")); - - register(new BlockData("Test:Stone")); - register(new BlockRenderOpaqueCube("Test:Stone", getBlockTexture("Stone"))); - register(new BlockLogic("Test:Stone")); - registerRocks(); - register(new BlockData("Test:Brick")); - register(new BlockRenderOpaqueCube("Test:Brick", getBlockTexture("Brick"))); - register(new BlockLogic("Test:Brick")); - - register(new BlockData("Test:BrickWhite")); - register(new BlockRenderOpaqueCube("Test:BrickWhite", getBlockTexture("BrickWhite"))); - register(new BlockLogic("Test:BrickWhite")); - register(new BlockData("Test:Glass")); register(new BlockRenderTransparentCube("Test:Glass", getBlockTexture("Glass"))); register(new TestBlockLogicGlass("Test:Glass")); - register(new BlockData("Test:Sand")); - register(new BlockRenderOpaqueCube("Test:Sand", getBlockTexture("Sand"))); - register(new BlockLogic("Test:Sand")); - - register(new BlockData("Test:Concrete")); - register(new BlockRenderOpaqueCube("Test:Concrete", getBlockTexture("ConcreteBlock"))); - register(new BlockLogic("Test:Concrete")); - register(new BlockData("Test:Log")); register( new BlockRenderOpaqueCube( @@ -144,13 +126,11 @@ public class TestContent { ) ); register(new BlockLogic("Test:Log")); + register(new BlockData("Test:TemporaryLeaves")); register(new BlockRenderTransparentCube("Test:TemporaryLeaves", getBlockTexture("TemporaryLeaves"))); - register(new TestBlockLogicGlass("Test:TemporaryLeaves")); // Sic, using Glass logic for leaves because Test - - register(new BlockData("Test:WoodenPlank")); - register(new BlockRenderOpaqueCube("Test:WoodenPlank", getBlockTexture("WoodenPlank"))); - register(new BlockLogic("Test:WoodenPlank")); + // Sic, using Glass logic for leaves because Test + register(new TestBlockLogicGlass("Test:TemporaryLeaves")); BlockDataRegistry.getInstance().values().forEach(PLACEABLE_BLOCKS::add); PLACEABLE_BLOCKS.removeIf(b -> placeableBlacklist.contains(b.getId())); @@ -159,7 +139,7 @@ public class TestContent { } private static void registerRocks() { - + ROCKS.create(RockType.IGNEOUS, "BlackGranite"); ROCKS.create(RockType.IGNEOUS, "RedGranite"); ROCKS.create(RockType.IGNEOUS, "Gabbro"); @@ -167,141 +147,119 @@ public class TestContent { ROCKS.create(RockType.METAMORPHIC, "Eclogite"); ROCKS.create(RockType.SEDIMENTARY, "Limestone"); ROCKS.create(RockType.SEDIMENTARY, "Dolomite"); - + ROCKS.registerAllRocks(); } private static void registerTiles() { Set placeableBlacklist = new HashSet<>(); - for (String variant : new String[] { + Arrays.asList( "Opaque", "Patches", "Web", "Threads" - }) { + ).forEach(variant -> { String fullName = "Grass" + variant; String id = "Test:" + fullName; - + register(new TileData(id)); - register(new TestTileRenderGrass(id, getTileTexture(fullName + "Top"), getTileTexture(fullName + "Side"), variant.equals("Opaque"))); + register( + new TestTileRenderGrass( + id, + getTileTexture(fullName + "Top"), + getTileTexture(fullName + "Side"), + variant.equals("Opaque") + ) + ); register(new TestTileLogicGrass(id)); - } + }); - register(new TileData("Test:Stones")); - register(new TileRenderTransparentSurface("Test:Stones", getTileTexture("Stones"))); - register(new HangingTileLogic("Test:Stones")); - - for (String color : new String[] { + Arrays.asList( "Yellow", "White", "Purple", "Blue" - }) { - - String fullName = color + "Flowers"; - String id = "Test:" + fullName; - - register(new TileData(id)); - register(new TileRenderTransparentSurface(id, getTileTexture(fullName))); - register(new HangingTileLogic(id)); - } + ).forEach(color -> { + registerSimplestTransparentTile(color + "Flowers"); + }); - register(new TileData("Test:Sand")); - register(new TileRenderTransparentSurface("Test:Sand", getTileTexture("Sand"))); - register(new HangingTileLogic("Test:Sand")); + registerSimplestTransparentTile("Stones"); + registerSimplestTransparentTile("Sand"); - register(new TileData("Test:SnowOpaque")); - register(new TileRenderOpaqueSurface("Test:SnowOpaque", getTileTexture("SnowOpaque"))); - register(new HangingTileLogic("Test:SnowOpaque")); + registerSimplestOpaqueTile("SnowOpaque"); + Arrays.asList( + "Half", + "Quarter" + ).forEach(variant -> { + registerSimplestTransparentTile("Snow" + variant); + }); - register(new TileData("Test:SnowHalf")); - register(new TileRenderTransparentSurface("Test:SnowHalf", getTileTexture("SnowHalf"))); - register(new HangingTileLogic("Test:SnowHalf")); + registerSimplestTransparentTile("Clock"); + registerSimplestOpaqueTile("CeilingTile1"); + registerSimplestOpaqueTile("CeilingTile2"); + registerSimplestOpaqueTile("WoodenPlank"); + registerSimplestOpaqueTile("ParquetFloor"); + registerSimplestOpaqueTile("Wallpaper"); + registerSimplestOpaqueTile("WhitePaint"); + registerSimplestOpaqueTile("RoughPaint"); + registerSimplestOpaqueTile("DecorativeBricks"); + registerSimplestTransparentTile("Painting"); + registerSimplestOpaqueTile("TilesLarge"); + registerSimplestOpaqueTile("TilesSmall"); - register(new TileData("Test:SnowQuarter")); - register(new TileRenderTransparentSurface("Test:SnowQuarter", getTileTexture("SnowQuarter"))); - register(new HangingTileLogic("Test:SnowQuarter")); + registerHerb("LowGrass", 6); + registerHerb("MediumGrass", 6); + registerHerb("TallGrass", 6); - register(new TileData("Test:Clock")); - register(new TileRenderTransparentSurface("Test:Clock", getTileTexture("Clock"))); - register(new HangingTileLogic("Test:Clock")); - - register(new TileData("Test:CeilingTile1")); - register(new TileRenderOpaqueSurface("Test:CeilingTile1", getTileTexture("CeilingTile1"))); - register(new HangingTileLogic("Test:CeilingTile1")); - - register(new TileData("Test:CeilingTile2")); - register(new TileRenderOpaqueSurface("Test:CeilingTile2", getTileTexture("CeilingTile2"))); - register(new HangingTileLogic("Test:CeilingTile2")); - - register(new TileData("Test:WoodenPlank")); - register(new TileRenderOpaqueSurface("Test:WoodenPlank", getTileTexture("WoodenPlank"))); - register(new HangingTileLogic("Test:WoodenPlank")); - - register(new TileData("Test:ParquetFloor")); - register(new TileRenderOpaqueSurface("Test:ParquetFloor", getTileTexture("ParquetFloor"))); - register(new HangingTileLogic("Test:ParquetFloor")); - - register(new TileData("Test:Wallpaper")); - register(new TileRenderOpaqueSurface("Test:Wallpaper", getTileTexture("Wallpaper"))); - register(new HangingTileLogic("Test:Wallpaper")); - - register(new TileData("Test:WhitePaint")); - register(new TileRenderOpaqueSurface("Test:WhitePaint", getTileTexture("WhitePaint"))); - register(new HangingTileLogic("Test:WhitePaint")); - - register(new TileData("Test:RoughPaint")); - register(new TileRenderOpaqueSurface("Test:RoughPaint", getTileTexture("RoughPaint"))); - register(new HangingTileLogic("Test:RoughPaint")); - - register(new TileData("Test:DecorativeBricks")); - register(new TileRenderOpaqueSurface("Test:DecorativeBricks", getTileTexture("DecorativeBricks"))); - register(new HangingTileLogic("Test:DecorativeBricks")); - - register(new TileData("Test:Painting")); - register(new TileRenderTransparentSurface("Test:Painting", getTileTexture("Painting"))); - register(new HangingTileLogic("Test:Painting")); - - register(new TileData("Test:TilesLarge")); - register(new TileRenderOpaqueSurface("Test:TilesLarge", getTileTexture("TilesLarge"))); - register(new HangingTileLogic("Test:TilesLarge")); - - register(new TileData("Test:TilesSmall")); - register(new TileRenderOpaqueSurface("Test:TilesSmall", getTileTexture("TilesSmall"))); - register(new HangingTileLogic("Test:TilesSmall")); - - for (String variant : new String[] { - "Low", "Medium", "Tall" - }) { - String fullName = variant + "Grass"; - String id = "Test:" + fullName; - - register(new TileData(id)); - register(new TileRenderHerb(id, getTileTexture(fullName), 6)); - register(new HangingTileLogic(id)); - } - - for (String variant : new String[] { - "Dandelion", "Lavander" - }) { + Arrays.asList( + "Dandelion", + "Lavander" + ).forEach(variant -> { String fullName = "Tiny" + variant + "Flowers"; String id = "Test:" + fullName; - + register(new TileData(id)); register(new TileRenderTinyFlower(id, getTileTexture(fullName), 8, 0.5f)); register(new HangingTileLogic(id)); - } - - register(new TileData("Test:Bush")); - register(new TileRenderHerb("Test:Bush", getTileTexture("Bush"), 1)); - register(new HangingTileLogic("Test:Bush")); + }); + registerHerb("Bush", 1); + registerHerb("Fern", 3); + TileDataRegistry.getInstance().values().forEach(PLACEABLE_TILES::add); PLACEABLE_TILES.removeIf(b -> placeableBlacklist.contains(b.getId())); PLACEABLE_TILES.sort(Comparator.comparing(TileData::getId)); } + private static void registerSimplestBlock(String name) { + String id = "Test:" + name; + register(new BlockData(id)); + register(new BlockRenderOpaqueCube(id, getBlockTexture(name))); + register(new BlockLogic(id)); + } + + private static void registerSimplestOpaqueTile(String name) { + String id = "Test:" + name; + register(new TileData(id)); + register(new TileRenderOpaqueSurface(id, getTileTexture(name))); + register(new HangingTileLogic(id)); + } + + private static void registerSimplestTransparentTile(String name) { + String id = "Test:" + name; + register(new TileData(id)); + register(new TileRenderTransparentSurface(id, getTileTexture(name))); + register(new HangingTileLogic(id)); + } + + private static void registerHerb(String name, int maxCount) { + String id = "Test:" + name; + register(new TileData(id)); + register(new TileRenderHerb(id, getTileTexture(name), maxCount)); + register(new HangingTileLogic(id)); + } + private static void registerEntities() { float scale = 1.8f / 8; registerEntityData("Test:Player", e -> e.setCollisionModel(new AABB(0, 0, 4 * scale, 0.8f, 0.8f, 1.8f))); @@ -340,7 +298,7 @@ public class TestContent { i -> isAnythingSelected() && TestPlayerControls.getInstance().isBlockSelected() ) ); - + logic.register(ControlLogic.of("Test:PlaceBlock", TestContent::onBlockPlaceReceived)); data.register("Test:PlaceTile", ControlPlaceTileData::new); @@ -354,7 +312,7 @@ public class TestContent { ) ); logic.register(ControlLogic.of("Test:PlaceTile", TestContent::onTilePlaceReceived)); - + triggers.register( ControlTriggers.localOf( "Test:StartNextMusic", @@ -495,11 +453,11 @@ public class TestContent { if (server.getWorld().getData().getTiles(blockInWorld, face).isFull()) { return; } - + ServerBlockContext context = server.createContext(blockInWorld); ServerTileStackContext tsContext = context.push(context.toContext(face)); ServerTileContext tileContext = tsContext.push(tsContext.getTileCount()); - + TileLogic logic = TileLogicRegistry.getInstance().get(tile.getId()); if (!logic.canOccupyFace(tileContext)) { return; @@ -509,10 +467,10 @@ public class TestContent { private static void registerMisc() { ChunkIO.registerCodec(new TestChunkCodec()); - + ChunkRenderOptimizerRegistry.getInstance().register("Core:SurfaceOptimizer", ChunkRenderOptimizerSurface::new); ChunkRenderOptimizerRegistry.getInstance().register("Core:SimpleOptimizer", ChunkRenderOptimizerSimple::new); - + GravityModelRegistry.getInstance().register("Test:TheGravityModel", TestGravityModel::new); GravityModelRegistry.getInstance().register("Test:PlanetGravityModel", PlanetGravityModel::new); } diff --git a/src/main/java/ru/windcorp/progressia/test/TileRenderHerb.java b/src/main/java/ru/windcorp/progressia/test/TileRenderHerb.java index 866d803..a383acd 100644 --- a/src/main/java/ru/windcorp/progressia/test/TileRenderHerb.java +++ b/src/main/java/ru/windcorp/progressia/test/TileRenderHerb.java @@ -55,7 +55,7 @@ public class TileRenderHerb extends TileRenderCross { private final int maxCount; public TileRenderHerb(String id, Texture texture, int maxCount) { - super(id, texture, true); + super(id, texture, false); this.maxCount = maxCount; } diff --git a/src/main/java/ru/windcorp/progressia/test/gen/TestGrassFeature.java b/src/main/java/ru/windcorp/progressia/test/gen/TestGrassFeature.java index 8a4ce80..2c564b7 100644 --- a/src/main/java/ru/windcorp/progressia/test/gen/TestGrassFeature.java +++ b/src/main/java/ru/windcorp/progressia/test/gen/TestGrassFeature.java @@ -68,7 +68,8 @@ public class TestGrassFeature extends SurfaceTopLayerFeature { private final List scatter = ImmutableList.of( TileDataRegistry.getInstance().get("Test:Stones"), TileDataRegistry.getInstance().get("Test:Sand"), - TileDataRegistry.getInstance().get("Test:Bush") + TileDataRegistry.getInstance().get("Test:Bush"), + TileDataRegistry.getInstance().get("Test:Fern") ); public TestGrassFeature(String id, SurfaceFloatField grassiness) { diff --git a/src/main/resources/assets/textures/blocks/ConcreteBlock.png b/src/main/resources/assets/textures/blocks/Concrete.png similarity index 100% rename from src/main/resources/assets/textures/blocks/ConcreteBlock.png rename to src/main/resources/assets/textures/blocks/Concrete.png diff --git a/src/main/resources/assets/textures/tiles/Fern.png b/src/main/resources/assets/textures/tiles/Fern.png new file mode 100644 index 0000000..00e1ec1 Binary files /dev/null and b/src/main/resources/assets/textures/tiles/Fern.png differ