diff --git a/src/main/java/ru/windcorp/progressia/client/TestContent.java b/src/main/java/ru/windcorp/progressia/client/TestContent.java index 9d64b54..b866d76 100644 --- a/src/main/java/ru/windcorp/progressia/client/TestContent.java +++ b/src/main/java/ru/windcorp/progressia/client/TestContent.java @@ -1,14 +1,7 @@ package ru.windcorp.progressia.client; -import static ru.windcorp.progressia.client.world.renders.BlockRenders.register; -import static ru.windcorp.progressia.client.world.renders.BlockRenders.getBlockTexture; -import static ru.windcorp.progressia.client.world.renders.TileRenders.register; -import static ru.windcorp.progressia.client.world.renders.TileRenders.getTileTexture; - -import static ru.windcorp.progressia.common.block.BlockDataRegistry.register; -import static ru.windcorp.progressia.common.block.TileDataRegistry.register; - -import static ru.windcorp.progressia.server.block.BlockLogicRegistry.register; +import static ru.windcorp.progressia.client.world.block.BlockRenderRegistry.getBlockTexture; +import static ru.windcorp.progressia.client.world.tile.TileRenderRegistry.getTileTexture; import org.lwjgl.glfw.GLFW; @@ -16,17 +9,23 @@ import glm.vec._3.i.Vec3i; import ru.windcorp.progressia.client.comms.controls.ControlTriggerOnKeyPress; import ru.windcorp.progressia.client.comms.controls.ControlTriggerRegistry; import ru.windcorp.progressia.client.graphics.input.KeyMatcher; -import ru.windcorp.progressia.client.world.renders.*; -import ru.windcorp.progressia.common.block.*; +import ru.windcorp.progressia.client.world.block.*; +import ru.windcorp.progressia.client.world.tile.TileRender; +import ru.windcorp.progressia.client.world.tile.TileRenderGrass; +import ru.windcorp.progressia.client.world.tile.TileRenderRegistry; +import ru.windcorp.progressia.client.world.tile.TileRenderSimple; import ru.windcorp.progressia.common.comms.controls.ControlData; import ru.windcorp.progressia.common.comms.controls.ControlDataRegistry; import ru.windcorp.progressia.common.comms.controls.PacketControl; import ru.windcorp.progressia.common.world.ChunkData; +import ru.windcorp.progressia.common.world.block.*; +import ru.windcorp.progressia.common.world.tile.TileData; +import ru.windcorp.progressia.common.world.tile.TileDataRegistry; import ru.windcorp.progressia.server.Server; -import ru.windcorp.progressia.server.block.*; import ru.windcorp.progressia.server.comms.Client; import ru.windcorp.progressia.server.comms.controls.ControlLogic; import ru.windcorp.progressia.server.comms.controls.ControlLogicRegistry; +import ru.windcorp.progressia.server.world.block.*; public class TestContent { @@ -88,14 +87,38 @@ public class TestContent { BlockData block; if (data.getBlock(z000).getId().equals("Test:Stone")) { - block = BlockDataRegistry.get("Test:Glass"); + block = BlockDataRegistry.getInstance().get("Test:Glass"); } else { - block = BlockDataRegistry.get("Test:Stone"); + block = BlockDataRegistry.getInstance().get("Test:Stone"); } server.getAdHocChanger().setBlock(z000, block); } }); } + + private static void register(BlockData x) { + BlockDataRegistry.getInstance().register(x); + } + + private static void register(TileData x) { + TileDataRegistry.getInstance().register(x); + } + + private static void register(BlockRender x) { + BlockRenderRegistry.getInstance().register(x); + } + + private static void register(TileRender x) { + TileRenderRegistry.getInstance().register(x); + } + + private static void register(BlockLogic x) { + BlockLogicRegistry.getInstance().register(x); + } + +// private static void register(TileRender x) { +// TileLogicRegistry.getInstance().register(x); +// } } diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java index 42d3a92..ba19d31 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java @@ -32,7 +32,7 @@ public class GraphicsBackend { private static final Vec2i FRAME_SIZE = new Vec2i(); private static double frameLength = 1.0 / 60; // TODO do something about it - private static int framesRendered = 0; + private static long framesRendered = 0; private static double frameStart = Double.NaN; private GraphicsBackend() {} @@ -102,7 +102,7 @@ public class GraphicsBackend { return frameLength; } - public static int getFramesRendered() { + public static long getFramesRendered() { return framesRendered; } diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsInterface.java b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsInterface.java index 4610e2b..db409cc 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsInterface.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsInterface.java @@ -59,6 +59,10 @@ public class GraphicsInterface { return 1 / GraphicsBackend.getFrameLength(); } + public static long getFramesRendered() { + return GraphicsBackend.getFramesRendered(); + } + public static void subscribeToInputEvents(Object listener) { InputHandler.register(listener); } diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/flat/RenderTarget.java b/src/main/java/ru/windcorp/progressia/client/graphics/flat/RenderTarget.java index 941e844..1c9737b 100755 --- a/src/main/java/ru/windcorp/progressia/client/graphics/flat/RenderTarget.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/flat/RenderTarget.java @@ -30,7 +30,7 @@ import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.model.Face; import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Shape; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.texture.Texture; public class RenderTarget { @@ -41,12 +41,12 @@ public class RenderTarget { private final MaskStack masks = new MaskStack(); private final Mat4 transform; - private final WorldRenderable renderable; + private final Renderable renderable; public Clip( Iterable masks, Mat4 transform, - WorldRenderable renderable + Renderable renderable ) { for (TransformedMask mask : masks) { this.masks.pushMask(mask); @@ -60,7 +60,7 @@ public class RenderTarget { return transform; } - public WorldRenderable getRenderable() { + public Renderable getRenderable() { return renderable; } @@ -177,7 +177,7 @@ public class RenderTarget { return transformStack.getFirst(); } - public void addCustomRenderer(WorldRenderable renderable) { + public void addCustomRenderer(Renderable renderable) { assembleCurrentClipFromFaces(); assembled.add(new Clip( maskStack, getTransform(), renderable diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/font/Font.java b/src/main/java/ru/windcorp/progressia/client/graphics/font/Font.java index 497ddff..a121f55 100755 --- a/src/main/java/ru/windcorp/progressia/client/graphics/font/Font.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/font/Font.java @@ -2,7 +2,7 @@ package ru.windcorp.progressia.client.graphics.font; import glm.vec._2.i.Vec2i; import ru.windcorp.progressia.client.graphics.Colors; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; public class Font { @@ -43,7 +43,7 @@ public class Font { return color; } - public WorldRenderable assemble( + public Renderable assemble( CharSequence chars, int maxWidth ) { return typeface.assemble(chars, style, align, maxWidth, color); diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/font/SpriteTypeface.java b/src/main/java/ru/windcorp/progressia/client/graphics/font/SpriteTypeface.java index 59aa466..fbdd84f 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/font/SpriteTypeface.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/font/SpriteTypeface.java @@ -11,7 +11,7 @@ import ru.windcorp.progressia.client.graphics.model.Face; import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.texture.Texture; public abstract class SpriteTypeface extends Typeface { @@ -64,7 +64,7 @@ public abstract class SpriteTypeface extends Typeface { public abstract ShapeRenderProgram getProgram(); @Override - public WorldRenderable assemble( + public Renderable assemble( CharSequence chars, int style, float align, int maxWidth, int color diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/font/Typeface.java b/src/main/java/ru/windcorp/progressia/client/graphics/font/Typeface.java index ca3b7c9..50451be 100755 --- a/src/main/java/ru/windcorp/progressia/client/graphics/font/Typeface.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/font/Typeface.java @@ -1,7 +1,7 @@ package ru.windcorp.progressia.client.graphics.font; import glm.vec._2.i.Vec2i; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.common.util.CoordinatePacker; import ru.windcorp.progressia.common.util.Named; @@ -46,7 +46,7 @@ public abstract class Typeface extends Named { super(name); } - public abstract WorldRenderable assemble( + public abstract Renderable assemble( CharSequence chars, int style, float align, int maxWidth, int color diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/BlockFaceVectors.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/BlockFaceVectors.java index 0426dcd..568adf3 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/BlockFaceVectors.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/BlockFaceVectors.java @@ -1,11 +1,11 @@ package ru.windcorp.progressia.client.graphics.model; -import static ru.windcorp.progressia.common.block.BlockFace.*; +import static ru.windcorp.progressia.common.world.block.BlockFace.*; import com.google.common.collect.ImmutableMap; import glm.vec._3.Vec3; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.common.world.block.BlockFace; class BlockFaceVectors { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/DynamicModel.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/DynamicModel.java index 58beab0..dddf1a7 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/DynamicModel.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/DynamicModel.java @@ -33,7 +33,7 @@ public abstract class DynamicModel extends Model { private final boolean[] dynamics; public DynamicModel( - WorldRenderable[] parts, + Renderable[] parts, Mat4[] transforms, boolean[] dynamic ) { @@ -70,14 +70,14 @@ public abstract class DynamicModel extends Model { public static class Builder { - private final List parts = new ArrayList<>(); + private final List parts = new ArrayList<>(); private final List transforms = new ArrayList<>(); private final List dynamics = new ArrayList<>(); protected Builder() {} private Builder addPart( - WorldRenderable part, + Renderable part, Mat4 transform, boolean isDynamic ) { @@ -89,26 +89,26 @@ public abstract class DynamicModel extends Model { } public Builder addStaticPart( - WorldRenderable part, + Renderable part, Mat4 transform ) { return addPart(part, new Mat4(transform), false); } public Builder addDynamicPart( - WorldRenderable part + Renderable part ) { return addPart(part, new Mat4(), true); } public Builder addStaticPart( - WorldRenderable part + Renderable part ) { return addStaticPart(part, IDENTITY); } - private WorldRenderable[] getParts() { - return parts.toArray(new WorldRenderable[parts.size()]); + private Renderable[] getParts() { + return parts.toArray(new Renderable[parts.size()]); } private Mat4[] getTransforms() { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/EmptyModel.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/EmptyModel.java index a4dca43..49c0b44 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/EmptyModel.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/EmptyModel.java @@ -24,7 +24,7 @@ public class EmptyModel extends Model { private static final EmptyModel INSTANCE = new EmptyModel(); private EmptyModel() { - super(new WorldRenderable[0]); + super(new Renderable[0]); } public static EmptyModel getInstance() { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/Faces.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/Faces.java index d5e8c0a..8b098b1 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/Faces.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/Faces.java @@ -23,8 +23,8 @@ import glm.vec._2.Vec2; import glm.vec._3.Vec3; import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram.VertexBuilder; import ru.windcorp.progressia.client.graphics.texture.Texture; -import ru.windcorp.progressia.common.block.BlockFace; import ru.windcorp.progressia.common.util.Vectors; +import ru.windcorp.progressia.common.world.block.BlockFace; public class Faces { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/LambdaModel.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/LambdaModel.java index 69f9bab..c6799c5 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/LambdaModel.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/LambdaModel.java @@ -37,7 +37,7 @@ public class LambdaModel extends DynamicModel { private final TransformGetter[] getters; public LambdaModel( - WorldRenderable[] parts, + Renderable[] parts, Mat4[] transforms, boolean[] dynamic, TransformGetter[] getters @@ -64,7 +64,7 @@ public class LambdaModel extends DynamicModel { public static class Builder { - private final List parts = new ArrayList<>(); + private final List parts = new ArrayList<>(); private final List transforms = new ArrayList<>(); private final List dynamics = new ArrayList<>(); private final List getters = new ArrayList<>(); @@ -72,7 +72,7 @@ public class LambdaModel extends DynamicModel { protected Builder() {} private Builder addPart( - WorldRenderable part, + Renderable part, Mat4 transform, TransformGetter getter ) { @@ -85,27 +85,27 @@ public class LambdaModel extends DynamicModel { } public Builder addStaticPart( - WorldRenderable part, + Renderable part, Mat4 transform ) { return addPart(part, new Mat4(transform), null); } public Builder addDynamicPart( - WorldRenderable part, + Renderable part, TransformGetter getter ) { return addPart(part, new Mat4(), getter); } public Builder addStaticPart( - WorldRenderable part + Renderable part ) { return addStaticPart(part, IDENTITY); } - private WorldRenderable[] getParts() { - return parts.toArray(new WorldRenderable[parts.size()]); + private Renderable[] getParts() { + return parts.toArray(new Renderable[parts.size()]); } private Mat4[] getTransforms() { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/Model.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/Model.java index 9e49b21..e32bab9 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/Model.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/Model.java @@ -19,11 +19,11 @@ package ru.windcorp.progressia.client.graphics.model; import glm.mat._4.Mat4; -public abstract class Model implements WorldRenderable { +public abstract class Model implements Renderable { - private final WorldRenderable[] parts; + private final Renderable[] parts; - public Model(WorldRenderable[] parts) { + public Model(Renderable[] parts) { this.parts = parts; } @@ -32,7 +32,7 @@ public abstract class Model implements WorldRenderable { @Override public void render(ShapeRenderHelper helper) { for (int i = 0; i < parts.length; ++i) { - WorldRenderable part = parts[i]; + Renderable part = parts[i]; Mat4 transform = getTransform(i); try { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/WorldRenderable.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/Renderable.java similarity index 94% rename from src/main/java/ru/windcorp/progressia/client/graphics/model/WorldRenderable.java rename to src/main/java/ru/windcorp/progressia/client/graphics/model/Renderable.java index bc863a8..52118ac 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/WorldRenderable.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/Renderable.java @@ -17,7 +17,7 @@ *******************************************************************************/ package ru.windcorp.progressia.client.graphics.model; -public interface WorldRenderable { +public interface Renderable { void render(ShapeRenderHelper renderer); diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/Shape.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/Shape.java index 1fe4b03..f53d04b 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/Shape.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/Shape.java @@ -25,7 +25,7 @@ import org.lwjgl.BufferUtils; import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.backend.VertexBufferObject; -public class Shape implements WorldRenderable { +public class Shape implements Renderable { private final ShapeRenderProgram program; private final Face[] faces; diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/model/StaticModel.java b/src/main/java/ru/windcorp/progressia/client/graphics/model/StaticModel.java index cb7c023..04de1d9 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/model/StaticModel.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/model/StaticModel.java @@ -30,7 +30,7 @@ public class StaticModel extends Model { private final Mat4[] transforms; public StaticModel( - WorldRenderable[] parts, + Renderable[] parts, Mat4[] transforms ) { super(parts); @@ -52,13 +52,13 @@ public class StaticModel extends Model { public static class Builder { - private final List parts = new ArrayList<>(); + private final List parts = new ArrayList<>(); private final List transforms = new ArrayList<>(); protected Builder() {} public Builder addPart( - WorldRenderable part, + Renderable part, Mat4 transform ) { parts.add(Objects.requireNonNull(part, "part")); @@ -68,13 +68,13 @@ public class StaticModel extends Model { } public Builder addPart( - WorldRenderable part + Renderable part ) { return addPart(part, IDENTITY); } - private WorldRenderable[] getParts() { - return parts.toArray(new WorldRenderable[parts.size()]); + private Renderable[] getParts() { + return parts.toArray(new Renderable[parts.size()]); } private Mat4[] getTransforms() { diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java b/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java index 651dac5..6f18b0e 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java @@ -91,10 +91,6 @@ public class LayerWorld extends Layer { client.getCamera().move(velCopy); Vectors.release(velCopy); - - if (GraphicsBackend.getFramesRendered() % 60 == 0) { - System.out.println(GraphicsInterface.getFPS()); - } } private void renderWorld() { diff --git a/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java b/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java index 122ad19..3bead82 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java +++ b/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java @@ -28,20 +28,20 @@ import glm.vec._3.i.Vec3i; import ru.windcorp.progressia.client.graphics.model.Model; import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper; import ru.windcorp.progressia.client.graphics.model.StaticModel; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.model.StaticModel.Builder; -import ru.windcorp.progressia.client.world.renders.BlockRender; -import ru.windcorp.progressia.client.world.renders.BlockRenderNone; -import ru.windcorp.progressia.client.world.renders.BlockRenders; -import ru.windcorp.progressia.client.world.renders.TileRender; -import ru.windcorp.progressia.client.world.renders.TileRenders; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerSupplier; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizers; -import ru.windcorp.progressia.common.block.BlockFace; -import ru.windcorp.progressia.common.block.TileData; +import ru.windcorp.progressia.client.world.block.BlockRender; +import ru.windcorp.progressia.client.world.block.BlockRenderNone; +import ru.windcorp.progressia.client.world.block.BlockRenderRegistry; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerSupplier; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizers; +import ru.windcorp.progressia.client.world.tile.TileRender; +import ru.windcorp.progressia.client.world.tile.TileRenderRegistry; import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.world.ChunkData; +import ru.windcorp.progressia.common.world.block.BlockFace; +import ru.windcorp.progressia.common.world.tile.TileData; public class ChunkRender { @@ -73,7 +73,9 @@ public class ChunkRender { } public BlockRender getBlock(Vec3i posInChunk) { - return BlockRenders.get(getData().getBlock(posInChunk).getId()); + return BlockRenderRegistry.getInstance().get( + getData().getBlock(posInChunk).getId() + ); } public void render(ShapeRenderHelper renderer) { @@ -155,7 +157,7 @@ public class ChunkRender { Vec3i cursor, Builder builder ) { - WorldRenderable renderable = block.createRenderable(); + Renderable renderable = block.createRenderable(); if (renderable == null) { renderable = block::render; @@ -196,7 +198,9 @@ public class ChunkRender { buildTile( cursor, face, - TileRenders.get(tiles.get(layer).getId()), + TileRenderRegistry.getInstance().get( + tiles.get(layer).getId() + ), layer, optimizers, builder ); diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRender.java similarity index 86% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRender.java index b0635d1..4f39b05 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRender.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.block; import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.common.util.Namespaced; public abstract class BlockRender extends Namespaced { @@ -33,7 +33,7 @@ public abstract class BlockRender extends Namespaced { ); } - public WorldRenderable createRenderable() { + public Renderable createRenderable() { return null; } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderNone.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderNone.java similarity index 85% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderNone.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderNone.java index 01a3dee..590ec31 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderNone.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderNone.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.block; import ru.windcorp.progressia.client.graphics.model.EmptyModel; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; public class BlockRenderNone extends BlockRender { @@ -27,7 +27,7 @@ public class BlockRenderNone extends BlockRender { } @Override - public WorldRenderable createRenderable() { + public Renderable createRenderable() { return EmptyModel.getInstance(); } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderOpaqueCube.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderOpaqueCube.java similarity index 90% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderOpaqueCube.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderOpaqueCube.java index 87a77e7..984f5f2 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderOpaqueCube.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderOpaqueCube.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.block; import ru.windcorp.progressia.client.graphics.texture.Texture; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.common.world.block.BlockFace; public class BlockRenderOpaqueCube extends BlockRenderTexturedCube { diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenders.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderRegistry.java similarity index 75% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenders.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderRegistry.java index 5505e1d..869ff09 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenders.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderRegistry.java @@ -15,33 +15,25 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; - -import java.util.HashMap; -import java.util.Map; +package ru.windcorp.progressia.client.world.block; import ru.windcorp.progressia.client.graphics.texture.Atlases; import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup; import ru.windcorp.progressia.client.graphics.texture.SimpleTexture; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.common.resource.ResourceManager; +import ru.windcorp.progressia.common.util.NamespacedRegistry; -public class BlockRenders { +public class BlockRenderRegistry extends NamespacedRegistry { - private static final Map BLOCK_RENDERS = - new HashMap<>(); + private static final BlockRenderRegistry INSTANCE = + new BlockRenderRegistry(); private static final AtlasGroup BLOCKS_ATLAS_GROUP = new AtlasGroup("Blocks", 1 << 12); - - private BlockRenders() {} - public static BlockRender get(String name) { - return BLOCK_RENDERS.get(name); - } - - public static void register(BlockRender blockRender) { - BLOCK_RENDERS.put(blockRender.getId(), blockRender); + public static BlockRenderRegistry getInstance() { + return INSTANCE; } public static Texture getBlockTexture(String name) { @@ -52,5 +44,9 @@ public class BlockRenders { ) ); } + + public static AtlasGroup getBlocksAtlasGroup() { + return BLOCKS_ATLAS_GROUP; + } } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTexturedCube.java similarity index 82% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTexturedCube.java index 7f9452e..7826652 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTexturedCube.java @@ -15,19 +15,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.block; -import static ru.windcorp.progressia.common.block.BlockFace.*; +import static ru.windcorp.progressia.common.world.block.BlockFace.*; import java.util.HashMap; import java.util.Map; import ru.windcorp.progressia.client.graphics.model.Shapes; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueCube; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueCube; +import ru.windcorp.progressia.common.world.block.BlockFace; public abstract class BlockRenderTexturedCube extends BlockRender @@ -57,7 +57,7 @@ implements OpaqueCube { } @Override - public WorldRenderable createRenderable() { + public Renderable createRenderable() { return new Shapes.PppBuilder( WorldRenderProgram.getDefault(), getTexture(TOP), getTexture(BOTTOM), diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTransparentCube.java b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTransparentCube.java similarity index 90% rename from src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTransparentCube.java rename to src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTransparentCube.java index ee7c449..e369fdb 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTransparentCube.java +++ b/src/main/java/ru/windcorp/progressia/client/world/block/BlockRenderTransparentCube.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.block; import ru.windcorp.progressia.client.graphics.texture.Texture; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.common.world.block.BlockFace; public class BlockRenderTransparentCube extends BlockRenderTexturedCube { diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizer.java similarity index 82% rename from src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java rename to src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizer.java index 79153a2..50a25ec 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java +++ b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizer.java @@ -15,14 +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.client.world.renders.cro; +package ru.windcorp.progressia.client.world.cro; import glm.vec._3.i.Vec3i; import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.world.ChunkRender; -import ru.windcorp.progressia.client.world.renders.BlockRender; -import ru.windcorp.progressia.client.world.renders.TileRender; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.world.block.BlockRender; +import ru.windcorp.progressia.client.world.tile.TileRender; +import ru.windcorp.progressia.common.world.block.BlockFace; public abstract class ChunkRenderOptimizer { diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerCube.java similarity index 92% rename from src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java rename to src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerCube.java index a720d75..ab457c9 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java +++ b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerCube.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.cro; +package ru.windcorp.progressia.client.world.cro; -import static ru.windcorp.progressia.common.block.BlockFace.BLOCK_FACE_COUNT; import static ru.windcorp.progressia.common.world.ChunkData.BLOCKS_PER_CHUNK; import static ru.windcorp.progressia.common.world.ChunkData.TILES_PER_FACE; +import static ru.windcorp.progressia.common.world.block.BlockFace.BLOCK_FACE_COUNT; import java.util.ArrayList; import java.util.Collection; @@ -34,10 +34,10 @@ import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; import ru.windcorp.progressia.client.world.ChunkRender; -import ru.windcorp.progressia.client.world.renders.BlockRender; -import ru.windcorp.progressia.client.world.renders.TileRender; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.world.block.BlockRender; +import ru.windcorp.progressia.client.world.tile.TileRender; import ru.windcorp.progressia.common.util.Vectors; +import ru.windcorp.progressia.common.world.block.BlockFace; public class ChunkRenderOptimizerCube extends ChunkRenderOptimizer { diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerSupplier.java similarity index 93% rename from src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java rename to src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerSupplier.java index 0645496..a074c9f 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java +++ b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizerSupplier.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.cro; +package ru.windcorp.progressia.client.world.cro; import com.google.common.base.Supplier; diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizers.java similarity index 93% rename from src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java rename to src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizers.java index b7e542c..0447675 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java +++ b/src/main/java/ru/windcorp/progressia/client/world/cro/ChunkRenderOptimizers.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.cro; +package ru.windcorp.progressia.client.world.cro; import java.util.Collection; import java.util.HashMap; diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRender.java b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRender.java similarity index 63% rename from src/main/java/ru/windcorp/progressia/client/world/renders/TileRender.java rename to src/main/java/ru/windcorp/progressia/client/world/tile/TileRender.java index d7c5b5f..13f72a7 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRender.java +++ b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRender.java @@ -1,10 +1,10 @@ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.tile; import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.graphics.model.Renderable; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer; import ru.windcorp.progressia.common.util.Namespaced; +import ru.windcorp.progressia.common.world.block.BlockFace; public class TileRender extends Namespaced { @@ -18,7 +18,7 @@ public class TileRender extends Namespaced { ); } - public WorldRenderable createRenderable(BlockFace face) { + public Renderable createRenderable(BlockFace face) { return null; } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderGrass.java b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderGrass.java similarity index 79% rename from src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderGrass.java rename to src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderGrass.java index 05fbed0..a7be290 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderGrass.java +++ b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderGrass.java @@ -1,16 +1,16 @@ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.tile; import glm.vec._3.Vec3; import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile; import ru.windcorp.progressia.common.util.Vectors; +import ru.windcorp.progressia.common.world.block.BlockFace; public class TileRenderGrass extends TileRender implements OpaqueTile { @@ -37,7 +37,7 @@ public class TileRenderGrass extends TileRender implements OpaqueTile { } @Override - public WorldRenderable createRenderable(BlockFace face) { + public Renderable createRenderable(BlockFace face) { ShapeRenderProgram program = WorldRenderProgram.getDefault(); Vec3 color = Vectors.grab3().set(1, 1, 1); diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenders.java b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderRegistry.java similarity index 75% rename from src/main/java/ru/windcorp/progressia/client/world/renders/TileRenders.java rename to src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderRegistry.java index a02f55f..889ec5a 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenders.java +++ b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderRegistry.java @@ -15,33 +15,28 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders; - -import java.util.HashMap; -import java.util.Map; +package ru.windcorp.progressia.client.world.tile; import ru.windcorp.progressia.client.graphics.texture.Atlases; import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup; import ru.windcorp.progressia.client.graphics.texture.SimpleTexture; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.common.resource.ResourceManager; +import ru.windcorp.progressia.common.util.NamespacedRegistry; -public class TileRenders { +public class TileRenderRegistry extends NamespacedRegistry { - private static final Map TILE_RENDERS = - new HashMap<>(); + private static final TileRenderRegistry INSTANCE = new TileRenderRegistry(); private static final AtlasGroup TILES_ATLAS_GROUP = new AtlasGroup("Tiles", 1 << 12); - private TileRenders() {} - - public static TileRender get(String name) { - return TILE_RENDERS.get(name); + public static TileRenderRegistry getInstance() { + return INSTANCE; } - public static void register(TileRender tileRender) { - TILE_RENDERS.put(tileRender.getId(), tileRender); + public static AtlasGroup getTilesAtlasGroup() { + return TILES_ATLAS_GROUP; } public static Texture getTileTexture(String name) { diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderSimple.java b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderSimple.java similarity index 77% rename from src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderSimple.java rename to src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderSimple.java index 889be5b..32e4435 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/TileRenderSimple.java +++ b/src/main/java/ru/windcorp/progressia/client/world/tile/TileRenderSimple.java @@ -1,16 +1,16 @@ -package ru.windcorp.progressia.client.world.renders; +package ru.windcorp.progressia.client.world.tile; import glm.vec._3.Vec3; import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; -import ru.windcorp.progressia.client.graphics.model.WorldRenderable; +import ru.windcorp.progressia.client.graphics.model.Renderable; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; -import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile; -import ru.windcorp.progressia.common.block.BlockFace; +import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile; import ru.windcorp.progressia.common.util.Vectors; +import ru.windcorp.progressia.common.world.block.BlockFace; public class TileRenderSimple extends TileRender implements OpaqueTile { @@ -32,7 +32,7 @@ public class TileRenderSimple extends TileRender implements OpaqueTile { } @Override - public WorldRenderable createRenderable(BlockFace face) { + public Renderable createRenderable(BlockFace face) { ShapeRenderProgram program = WorldRenderProgram.getDefault(); Vec3 color = Vectors.grab3().set(1, 1, 1); diff --git a/src/main/java/ru/windcorp/progressia/common/world/ChunkData.java b/src/main/java/ru/windcorp/progressia/common/world/ChunkData.java index ba2ae79..64033a6 100644 --- a/src/main/java/ru/windcorp/progressia/common/world/ChunkData.java +++ b/src/main/java/ru/windcorp/progressia/common/world/ChunkData.java @@ -17,7 +17,7 @@ *******************************************************************************/ package ru.windcorp.progressia.common.world; -import static ru.windcorp.progressia.common.block.BlockFace.*; +import static ru.windcorp.progressia.common.world.block.BlockFace.*; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ import java.util.function.Consumer; import com.google.common.collect.Lists; import glm.vec._3.i.Vec3i; -import ru.windcorp.progressia.common.block.BlockData; -import ru.windcorp.progressia.common.block.BlockDataRegistry; -import ru.windcorp.progressia.common.block.BlockFace; -import ru.windcorp.progressia.common.block.TileData; -import ru.windcorp.progressia.common.block.TileDataRegistry; import ru.windcorp.progressia.common.util.SizeLimitedList; import ru.windcorp.progressia.common.util.VectorUtil; import ru.windcorp.progressia.common.util.Vectors; +import ru.windcorp.progressia.common.world.block.BlockData; +import ru.windcorp.progressia.common.world.block.BlockDataRegistry; +import ru.windcorp.progressia.common.world.block.BlockFace; +import ru.windcorp.progressia.common.world.tile.TileData; +import ru.windcorp.progressia.common.world.tile.TileDataRegistry; public class ChunkData { @@ -61,14 +61,14 @@ public class ChunkData { } private void tmp_generate() { - BlockData dirt = BlockDataRegistry.get("Test:Dirt"); - BlockData stone = BlockDataRegistry.get("Test:Stone"); - BlockData air = BlockDataRegistry.get("Test:Air"); + BlockData dirt = BlockDataRegistry.getInstance().get("Test:Dirt"); + BlockData stone = BlockDataRegistry.getInstance().get("Test:Stone"); + BlockData air = BlockDataRegistry.getInstance().get("Test:Air"); - TileData grass = TileDataRegistry.get("Test:Grass"); - TileData stones = TileDataRegistry.get("Test:Stones"); - TileData flowers = TileDataRegistry.get("Test:YellowFlowers"); - TileData sand = TileDataRegistry.get("Test:Sand"); + TileData grass = TileDataRegistry.getInstance().get("Test:Grass"); + TileData stones = TileDataRegistry.getInstance().get("Test:Stones"); + TileData flowers = TileDataRegistry.getInstance().get("Test:YellowFlowers"); + TileData sand = TileDataRegistry.getInstance().get("Test:Sand"); Vec3i aPoint = new Vec3i(5, 0, BLOCKS_PER_CHUNK + BLOCKS_PER_CHUNK/2); Vec3i pos = new Vec3i(); diff --git a/src/main/java/ru/windcorp/progressia/common/block/BlockData.java b/src/main/java/ru/windcorp/progressia/common/world/block/BlockData.java similarity index 93% rename from src/main/java/ru/windcorp/progressia/common/block/BlockData.java rename to src/main/java/ru/windcorp/progressia/common/world/block/BlockData.java index 0358260..5bcbd50 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/BlockData.java +++ b/src/main/java/ru/windcorp/progressia/common/world/block/BlockData.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.block; import ru.windcorp.progressia.common.util.Namespaced; diff --git a/src/main/java/ru/windcorp/progressia/common/block/BlockDataRegistry.java b/src/main/java/ru/windcorp/progressia/common/world/block/BlockDataRegistry.java similarity index 68% rename from src/main/java/ru/windcorp/progressia/common/block/BlockDataRegistry.java rename to src/main/java/ru/windcorp/progressia/common/world/block/BlockDataRegistry.java index 6bd57e6..6711b3a 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/BlockDataRegistry.java +++ b/src/main/java/ru/windcorp/progressia/common/world/block/BlockDataRegistry.java @@ -15,21 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.block; -import java.util.HashMap; -import java.util.Map; +import ru.windcorp.progressia.common.util.NamespacedRegistry; -public class BlockDataRegistry { +public class BlockDataRegistry extends NamespacedRegistry { - private static final Map REGISTRY = new HashMap<>(); + private static final BlockDataRegistry INSTANCE = new BlockDataRegistry(); - public static BlockData get(String name) { - return REGISTRY.get(name); - } - - public static void register(BlockData blockData) { - REGISTRY.put(blockData.getId(), blockData); + public static BlockDataRegistry getInstance() { + return INSTANCE; } } diff --git a/src/main/java/ru/windcorp/progressia/common/block/BlockFace.java b/src/main/java/ru/windcorp/progressia/common/world/block/BlockFace.java similarity index 94% rename from src/main/java/ru/windcorp/progressia/common/block/BlockFace.java rename to src/main/java/ru/windcorp/progressia/common/world/block/BlockFace.java index 2553f46..b9ed2cc 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/BlockFace.java +++ b/src/main/java/ru/windcorp/progressia/common/world/block/BlockFace.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.block; import com.google.common.collect.ImmutableList; diff --git a/src/main/java/ru/windcorp/progressia/common/block/BlockRelation.java b/src/main/java/ru/windcorp/progressia/common/world/block/BlockRelation.java similarity index 97% rename from src/main/java/ru/windcorp/progressia/common/block/BlockRelation.java rename to src/main/java/ru/windcorp/progressia/common/world/block/BlockRelation.java index 821cd35..06dd1c2 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/BlockRelation.java +++ b/src/main/java/ru/windcorp/progressia/common/world/block/BlockRelation.java @@ -1,4 +1,4 @@ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.block; import static java.lang.Math.abs; import static java.lang.Math.max; diff --git a/src/main/java/ru/windcorp/progressia/common/block/TileData.java b/src/main/java/ru/windcorp/progressia/common/world/tile/TileData.java similarity index 93% rename from src/main/java/ru/windcorp/progressia/common/block/TileData.java rename to src/main/java/ru/windcorp/progressia/common/world/tile/TileData.java index 8a68cca..7cbbded 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/TileData.java +++ b/src/main/java/ru/windcorp/progressia/common/world/tile/TileData.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.tile; import ru.windcorp.progressia.common.util.Namespaced; diff --git a/src/main/java/ru/windcorp/progressia/common/block/TileDataRegistry.java b/src/main/java/ru/windcorp/progressia/common/world/tile/TileDataRegistry.java similarity index 68% rename from src/main/java/ru/windcorp/progressia/common/block/TileDataRegistry.java rename to src/main/java/ru/windcorp/progressia/common/world/tile/TileDataRegistry.java index 42abceb..c19fb3d 100644 --- a/src/main/java/ru/windcorp/progressia/common/block/TileDataRegistry.java +++ b/src/main/java/ru/windcorp/progressia/common/world/tile/TileDataRegistry.java @@ -15,21 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.common.block; +package ru.windcorp.progressia.common.world.tile; -import java.util.HashMap; -import java.util.Map; +import ru.windcorp.progressia.common.util.NamespacedRegistry; -public class TileDataRegistry { +public class TileDataRegistry extends NamespacedRegistry { - private static final Map REGISTRY = new HashMap<>(); + private static final TileDataRegistry INSTANCE = new TileDataRegistry(); - public static TileData get(String name) { - return REGISTRY.get(name); - } - - public static void register(TileData tileData) { - REGISTRY.put(tileData.getId(), tileData); + public static TileDataRegistry getInstance() { + return INSTANCE; } } diff --git a/src/main/java/ru/windcorp/progressia/server/block/BlockLogicRegistry.java b/src/main/java/ru/windcorp/progressia/server/block/BlockLogicRegistry.java deleted file mode 100644 index 9a9c59d..0000000 --- a/src/main/java/ru/windcorp/progressia/server/block/BlockLogicRegistry.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.windcorp.progressia.server.block; - -import java.util.HashMap; -import java.util.Map; - -public class BlockLogicRegistry { - - private static final Map REGISTRY = new HashMap<>(); - - public static BlockLogic get(String name) { - return REGISTRY.get(name); - } - - public static void register(BlockLogic blockLogic) { - REGISTRY.put(blockLogic.getId(), blockLogic); - } - -} diff --git a/src/main/java/ru/windcorp/progressia/server/world/Changer.java b/src/main/java/ru/windcorp/progressia/server/world/Changer.java index 21baae5..3901bca 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/Changer.java +++ b/src/main/java/ru/windcorp/progressia/server/world/Changer.java @@ -1,9 +1,9 @@ package ru.windcorp.progressia.server.world; import glm.vec._3.i.Vec3i; -import ru.windcorp.progressia.common.block.BlockData; -import ru.windcorp.progressia.common.block.BlockFace; -import ru.windcorp.progressia.common.block.TileData; +import ru.windcorp.progressia.common.world.block.BlockData; +import ru.windcorp.progressia.common.world.block.BlockFace; +import ru.windcorp.progressia.common.world.tile.TileData; public interface Changer { diff --git a/src/main/java/ru/windcorp/progressia/server/world/ChunkLogic.java b/src/main/java/ru/windcorp/progressia/server/world/ChunkLogic.java index 58955b6..9b489a4 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/ChunkLogic.java +++ b/src/main/java/ru/windcorp/progressia/server/world/ChunkLogic.java @@ -6,9 +6,9 @@ import java.util.function.BiConsumer; import glm.vec._3.i.Vec3i; import ru.windcorp.progressia.common.world.ChunkData; -import ru.windcorp.progressia.server.block.BlockLogic; -import ru.windcorp.progressia.server.block.BlockLogicRegistry; -import ru.windcorp.progressia.server.block.Tickable; +import ru.windcorp.progressia.server.world.block.BlockLogic; +import ru.windcorp.progressia.server.world.block.BlockLogicRegistry; +import ru.windcorp.progressia.server.world.block.Tickable; public class ChunkLogic { @@ -63,7 +63,9 @@ public class ChunkLogic { } public BlockLogic getBlock(Vec3i blockInChunk) { - return BlockLogicRegistry.get(getData().getBlock(blockInChunk).getId()); + return BlockLogicRegistry.getInstance().get( + getData().getBlock(blockInChunk).getId() + ); } } diff --git a/src/main/java/ru/windcorp/progressia/server/world/ImplementedChangeTracker.java b/src/main/java/ru/windcorp/progressia/server/world/ImplementedChangeTracker.java index 2540a53..675befe 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/ImplementedChangeTracker.java +++ b/src/main/java/ru/windcorp/progressia/server/world/ImplementedChangeTracker.java @@ -5,15 +5,15 @@ import java.util.List; import java.util.Objects; import glm.vec._3.i.Vec3i; -import ru.windcorp.progressia.common.block.BlockData; -import ru.windcorp.progressia.common.block.BlockFace; -import ru.windcorp.progressia.common.block.TileData; import ru.windcorp.progressia.common.comms.packets.Packet; import ru.windcorp.progressia.common.comms.packets.PacketWorldChange; import ru.windcorp.progressia.common.util.LowOverheadCache; import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.world.Coordinates; import ru.windcorp.progressia.common.world.WorldData; +import ru.windcorp.progressia.common.world.block.BlockData; +import ru.windcorp.progressia.common.world.block.BlockFace; +import ru.windcorp.progressia.common.world.tile.TileData; import ru.windcorp.progressia.server.Server; public class ImplementedChangeTracker implements Changer { diff --git a/src/main/java/ru/windcorp/progressia/server/world/MutableBlockTickContext.java b/src/main/java/ru/windcorp/progressia/server/world/MutableBlockTickContext.java index 6b27f2b..0b03a5c 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/MutableBlockTickContext.java +++ b/src/main/java/ru/windcorp/progressia/server/world/MutableBlockTickContext.java @@ -4,7 +4,7 @@ import glm.vec._3.i.Vec3i; import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.world.Coordinates; import ru.windcorp.progressia.server.Server; -import ru.windcorp.progressia.server.block.BlockTickContext; +import ru.windcorp.progressia.server.world.block.BlockTickContext; public class MutableBlockTickContext implements BlockTickContext { diff --git a/src/main/java/ru/windcorp/progressia/server/world/Ticker.java b/src/main/java/ru/windcorp/progressia/server/world/Ticker.java index 478ab7a..975ddcb 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/Ticker.java +++ b/src/main/java/ru/windcorp/progressia/server/world/Ticker.java @@ -1,7 +1,7 @@ package ru.windcorp.progressia.server.world; import ru.windcorp.progressia.server.Server; -import ru.windcorp.progressia.server.block.Tickable; +import ru.windcorp.progressia.server.world.block.Tickable; public class Ticker implements Runnable { diff --git a/src/main/java/ru/windcorp/progressia/server/block/BlockLogic.java b/src/main/java/ru/windcorp/progressia/server/world/block/BlockLogic.java similarity index 75% rename from src/main/java/ru/windcorp/progressia/server/block/BlockLogic.java rename to src/main/java/ru/windcorp/progressia/server/world/block/BlockLogic.java index df52c73..a010749 100644 --- a/src/main/java/ru/windcorp/progressia/server/block/BlockLogic.java +++ b/src/main/java/ru/windcorp/progressia/server/world/block/BlockLogic.java @@ -1,4 +1,4 @@ -package ru.windcorp.progressia.server.block; +package ru.windcorp.progressia.server.world.block; import ru.windcorp.progressia.common.util.Namespaced; diff --git a/src/main/java/ru/windcorp/progressia/server/world/block/BlockLogicRegistry.java b/src/main/java/ru/windcorp/progressia/server/world/block/BlockLogicRegistry.java new file mode 100644 index 0000000..3666c5d --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/server/world/block/BlockLogicRegistry.java @@ -0,0 +1,13 @@ +package ru.windcorp.progressia.server.world.block; + +import ru.windcorp.progressia.common.util.NamespacedRegistry; + +public class BlockLogicRegistry extends NamespacedRegistry { + + private static final BlockLogicRegistry INSTANCE = new BlockLogicRegistry(); + + public static BlockLogicRegistry getInstance() { + return INSTANCE; + } + +} diff --git a/src/main/java/ru/windcorp/progressia/server/block/BlockTickContext.java b/src/main/java/ru/windcorp/progressia/server/world/block/BlockTickContext.java similarity index 81% rename from src/main/java/ru/windcorp/progressia/server/block/BlockTickContext.java rename to src/main/java/ru/windcorp/progressia/server/world/block/BlockTickContext.java index f5894ad..ded8e92 100644 --- a/src/main/java/ru/windcorp/progressia/server/block/BlockTickContext.java +++ b/src/main/java/ru/windcorp/progressia/server/world/block/BlockTickContext.java @@ -1,7 +1,7 @@ -package ru.windcorp.progressia.server.block; +package ru.windcorp.progressia.server.world.block; import glm.vec._3.i.Vec3i; -import ru.windcorp.progressia.common.block.BlockData; +import ru.windcorp.progressia.common.world.block.BlockData; import ru.windcorp.progressia.server.world.ChunkTickContext; public interface BlockTickContext extends ChunkTickContext { diff --git a/src/main/java/ru/windcorp/progressia/server/block/ForwardingBlockTickContext.java b/src/main/java/ru/windcorp/progressia/server/world/block/ForwardingBlockTickContext.java similarity index 88% rename from src/main/java/ru/windcorp/progressia/server/block/ForwardingBlockTickContext.java rename to src/main/java/ru/windcorp/progressia/server/world/block/ForwardingBlockTickContext.java index e6870c4..49bb42c 100644 --- a/src/main/java/ru/windcorp/progressia/server/block/ForwardingBlockTickContext.java +++ b/src/main/java/ru/windcorp/progressia/server/world/block/ForwardingBlockTickContext.java @@ -1,9 +1,9 @@ -package ru.windcorp.progressia.server.block; +package ru.windcorp.progressia.server.world.block; import glm.vec._3.i.Vec3i; -import ru.windcorp.progressia.common.block.BlockData; import ru.windcorp.progressia.common.world.ChunkData; import ru.windcorp.progressia.common.world.WorldData; +import ru.windcorp.progressia.common.world.block.BlockData; import ru.windcorp.progressia.server.Server; import ru.windcorp.progressia.server.world.ChunkLogic; import ru.windcorp.progressia.server.world.WorldLogic; diff --git a/src/main/java/ru/windcorp/progressia/server/block/Tickable.java b/src/main/java/ru/windcorp/progressia/server/world/block/Tickable.java similarity index 81% rename from src/main/java/ru/windcorp/progressia/server/block/Tickable.java rename to src/main/java/ru/windcorp/progressia/server/world/block/Tickable.java index 4d1be93..cb12d80 100644 --- a/src/main/java/ru/windcorp/progressia/server/block/Tickable.java +++ b/src/main/java/ru/windcorp/progressia/server/world/block/Tickable.java @@ -1,4 +1,4 @@ -package ru.windcorp.progressia.server.block; +package ru.windcorp.progressia.server.world.block; import ru.windcorp.progressia.server.world.Changer; diff --git a/src/main/java/ru/windcorp/progressia/server/block/Updatable.java b/src/main/java/ru/windcorp/progressia/server/world/block/Updatable.java similarity index 70% rename from src/main/java/ru/windcorp/progressia/server/block/Updatable.java rename to src/main/java/ru/windcorp/progressia/server/world/block/Updatable.java index e3ca677..ab13886 100644 --- a/src/main/java/ru/windcorp/progressia/server/block/Updatable.java +++ b/src/main/java/ru/windcorp/progressia/server/world/block/Updatable.java @@ -1,4 +1,4 @@ -package ru.windcorp.progressia.server.block; +package ru.windcorp.progressia.server.world.block; import ru.windcorp.progressia.server.world.Changer;