From 6c34d24b8c0f329e4059df85993078daa46f419f Mon Sep 17 00:00:00 2001 From: Sen Date: Sun, 7 Sep 2025 10:20:32 +0200 Subject: [PATCH] class cleanup --- client/src/main/java/client/Client.java | 5 +- .../java/client/network/ClientPlayer.java | 2 +- .../main/java/client/renderer/Renderer.java | 2 +- .../java/client/renderer/ShaderContext.java | 6 +- .../client/renderer/blockmodel/BlockPart.java | 2 +- .../blockmodel/BlockPartRotation.java | 2 +- .../renderer/blockmodel/FaceBakery.java | 74 +++++++++++++++++-- .../renderer/blockmodel/ModelBakery.java | 2 +- .../renderer/blockmodel/ModelBlock.java | 2 +- .../renderer/blockmodel/ModelGenerator.java | 2 +- .../src/main/java/client}/util/Matrix4f.java | 2 +- .../src/main/java/client}/util/Vector.java | 2 +- .../src/main/java/client}/util/Vector3f.java | 2 +- .../src/main/java/client}/util/Vector4f.java | 2 +- .../main/java/client/world/ChunkClient.java | 1 - .../main/java/common/model/ModelRotation.java | 62 ++-------------- .../src/main/java/common/network/IPlayer.java | 3 +- .../packet/SPacketMultiBlockChange.java | 29 +++++--- common/src/main/java/common/vars/Vars.java | 2 +- common/src/main/java/common/world/World.java | 23 ------ .../src/main/java/server/network/Player.java | 2 +- .../src/main/java/server}/util/ChunkPos.java | 2 +- server/src/main/java/server/vars/SVars.java | 2 +- .../src/main/java/server/world/Spawner.java | 2 +- .../main/java/server/world/WorldServer.java | 21 ++++-- .../worldgen/structure/MapGenStructure.java | 2 +- .../worldgen/structure/StructureStart.java | 3 +- 27 files changed, 132 insertions(+), 129 deletions(-) rename {common/src/main/java/common => client/src/main/java/client}/util/Matrix4f.java (99%) rename {common/src/main/java/common => client/src/main/java/client}/util/Vector.java (99%) rename {common/src/main/java/common => client/src/main/java/client}/util/Vector3f.java (99%) rename {common/src/main/java/common => client/src/main/java/client}/util/Vector4f.java (99%) rename {common/src/main/java/common => server/src/main/java/server}/util/ChunkPos.java (96%) diff --git a/client/src/main/java/client/Client.java b/client/src/main/java/client/Client.java index ff5e7cc3..402137db 100755 --- a/client/src/main/java/client/Client.java +++ b/client/src/main/java/client/Client.java @@ -173,7 +173,6 @@ import common.tileentity.TileEntity; import common.util.LocalPos; import common.util.BoundingBox; import common.util.CharValidator; -import common.util.ChunkPos; import common.util.ExtMath; import common.util.HitPosition; import common.util.IntHashMap; @@ -577,13 +576,13 @@ public class Client implements IThreadListener { private IntHashMap entityIds; - @Variable(name = "chunk_view_distance", category = CVarCategory.RENDER, min = 2, max = 64, callback = DistanceFunction.class, display = "Sichtweite", unit = "Chunks") + @Variable(name = "chunk_view_distance", category = CVarCategory.RENDER, min = 2, max = 32, callback = DistanceFunction.class, display = "Sichtweite", unit = "Chunks") public int renderDistance = 8; @Variable(name = "chunk_build_time", category = CVarCategory.RENDER, min = 1, max = 100, display = "Zeit für Chunk-Bau", unit = "ms") public int maxBuildTime = 8; @Variable(name = "chunk_light_updates", category = CVarCategory.RENDER, min = 0, max = 10000, display = "Licht-Updates / Frame") private int lightUpdates = 150; - @Variable(name = "chunk_light_range", category = CVarCategory.RENDER, min = 5, max = 1024, display = "Radius Licht-Updates") + @Variable(name = "chunk_light_range", category = CVarCategory.RENDER, min = 5, max = 512, display = "Radius Licht-Updates") private int lightRange = 32; @Variable(name = "draw_fov", category = CVarCategory.RENDER, min = 20.0f, max = 160.0f, display = "Sichtfeld (FOV)", unit = "°", precision = 1) public float fov = 70.0f; diff --git a/client/src/main/java/client/network/ClientPlayer.java b/client/src/main/java/client/network/ClientPlayer.java index 56c29649..724bcf74 100755 --- a/client/src/main/java/client/network/ClientPlayer.java +++ b/client/src/main/java/client/network/ClientPlayer.java @@ -720,7 +720,7 @@ public class ClientPlayer implements IClientPlayer for (SPacketMultiBlockChange.BlockUpdateData update : packetIn.getChangedBlocks()) { - this.world.setState(SPacketMultiBlockChange.getPos(packetIn.getChunkPos(), update.getRawPos()), update.getBlockState()); + this.world.setState(SPacketMultiBlockChange.getPos(packetIn.getChunkPosX(), packetIn.getChunkPosZ(), update.getRawPos()), update.getBlockState()); } } diff --git a/client/src/main/java/client/renderer/Renderer.java b/client/src/main/java/client/renderer/Renderer.java index c84cf0dd..33d9aa49 100755 --- a/client/src/main/java/client/renderer/Renderer.java +++ b/client/src/main/java/client/renderer/Renderer.java @@ -34,6 +34,7 @@ import client.renderer.texture.Sprite; import client.renderer.texture.TextureManager; import client.renderer.texture.TextureMap; import client.renderer.tileentity.SpecialRenderer; +import client.util.Vector3f; import client.world.ChunkClient; import common.block.Block; import common.block.Material; @@ -73,7 +74,6 @@ import common.util.ParticleType; import common.util.Util; import common.util.Vec3; import common.util.Vec3i; -import common.util.Vector3f; import common.world.IBlockAccess; import common.world.IWorldAccess; import common.world.State; diff --git a/client/src/main/java/client/renderer/ShaderContext.java b/client/src/main/java/client/renderer/ShaderContext.java index f810bec1..8b430297 100644 --- a/client/src/main/java/client/renderer/ShaderContext.java +++ b/client/src/main/java/client/renderer/ShaderContext.java @@ -8,12 +8,12 @@ import java.nio.FloatBuffer; import org.lwjgl.opengl.GL20; import client.util.FileUtils; +import client.util.Matrix4f; +import client.util.Vector3f; +import client.util.Vector4f; import common.dimension.Shader; import common.log.Log; -import common.util.Matrix4f; import common.util.Vec3; -import common.util.Vector3f; -import common.util.Vector4f; public class ShaderContext { private static final FloatBuffer BUFFER = ByteBuffer.allocateDirect(16 << 2).order(ByteOrder.nativeOrder()).asFloatBuffer(); diff --git a/client/src/main/java/client/renderer/blockmodel/BlockPart.java b/client/src/main/java/client/renderer/blockmodel/BlockPart.java index 830f4917..5a8ed293 100755 --- a/client/src/main/java/client/renderer/blockmodel/BlockPart.java +++ b/client/src/main/java/client/renderer/blockmodel/BlockPart.java @@ -2,8 +2,8 @@ package client.renderer.blockmodel; import java.util.Map; +import client.util.Vector3f; import common.util.Facing; -import common.util.Vector3f; public class BlockPart { diff --git a/client/src/main/java/client/renderer/blockmodel/BlockPartRotation.java b/client/src/main/java/client/renderer/blockmodel/BlockPartRotation.java index 7bde7ede..8f8d1c3e 100755 --- a/client/src/main/java/client/renderer/blockmodel/BlockPartRotation.java +++ b/client/src/main/java/client/renderer/blockmodel/BlockPartRotation.java @@ -1,7 +1,7 @@ package client.renderer.blockmodel; +import client.util.Vector3f; import common.util.Facing; -import common.util.Vector3f; public class BlockPartRotation { public final Vector3f origin; diff --git a/client/src/main/java/client/renderer/blockmodel/FaceBakery.java b/client/src/main/java/client/renderer/blockmodel/FaceBakery.java index 99dfaecd..d89231b9 100755 --- a/client/src/main/java/client/renderer/blockmodel/FaceBakery.java +++ b/client/src/main/java/client/renderer/blockmodel/FaceBakery.java @@ -1,13 +1,13 @@ package client.renderer.blockmodel; import client.renderer.texture.Sprite; +import client.util.Matrix4f; +import client.util.Vector3f; +import client.util.Vector4f; import common.model.ModelRotation; import common.util.ExtMath; import common.util.Facing; -import common.util.Matrix4f; import common.util.Vec3i; -import common.util.Vector3f; -import common.util.Vector4f; public class FaceBakery { @@ -64,6 +64,10 @@ public class FaceBakery private static final float SCALE_ROTATION_22_5 = 1.0F / (float)Math.cos(0.39269909262657166D) - 1.0F; private static final float SCALE_ROTATION_GENERAL = 1.0F / (float)Math.cos((Math.PI / 4D)) - 1.0F; + private static final Matrix4f[] MATRICES = new Matrix4f[ModelRotation.values().length]; + private static final int[] QUARTERS_X = new int[ModelRotation.values().length]; + private static final int[] QUARTERS_Y = new int[ModelRotation.values().length]; + static { FACINGS[Constants.DOWN_INDEX] = EnumFaceDirection.DOWN; FACINGS[Constants.UP_INDEX] = EnumFaceDirection.UP; @@ -71,6 +75,64 @@ public class FaceBakery FACINGS[Constants.SOUTH_INDEX] = EnumFaceDirection.SOUTH; FACINGS[Constants.WEST_INDEX] = EnumFaceDirection.WEST; FACINGS[Constants.EAST_INDEX] = EnumFaceDirection.EAST; + + for(int z = 0; z < ModelRotation.values().length; z++) { + ModelRotation rot = ModelRotation.values()[z]; + MATRICES[z] = new Matrix4f(); + Matrix4f mat1 = new Matrix4f(); + mat1.setIdentity(); + Matrix4f.rotate((float)(-rot.rotX) * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), mat1, mat1); + QUARTERS_X[z] = ExtMath.absi(rot.rotX / 90); + Matrix4f mat2 = new Matrix4f(); + mat2.setIdentity(); + Matrix4f.rotate((float)(-rot.rotY) * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), mat2, mat2); + QUARTERS_Y[z] = ExtMath.absi(rot.rotY / 90); + Matrix4f.mul(mat2, mat1, MATRICES[z]); + } + } + + private static Matrix4f getMatrix4d(ModelRotation rot) { + return MATRICES[rot.ordinal()]; + } + + public static Facing rotateFace(ModelRotation rot, Facing face) { + Facing dir = face; + int qx = QUARTERS_X[rot.ordinal()]; + int qy = QUARTERS_Y[rot.ordinal()]; + + for(int i = 0; i < qx; ++i) { + dir = dir.rotateAround(Facing.Axis.X); + } + + if(dir.getAxis() != Facing.Axis.Y) { + for(int j = 0; j < qy; ++j) { + dir = dir.rotateAround(Facing.Axis.Y); + } + } + + return dir; + } + + private static int rotateVertex(ModelRotation rot, Facing face, int index) { + int idx = index; + int qx = QUARTERS_X[rot.ordinal()]; + int qy = QUARTERS_Y[rot.ordinal()]; + + if(face.getAxis() == Facing.Axis.X) { + idx = (index + qx) % 4; + } + + Facing dir = face; + + for(int j = 0; j < qx; ++j) { + dir = dir.rotateAround(Facing.Axis.X); + } + + if(dir.getAxis() == Facing.Axis.Y) { + idx = (idx + qy) % 4; + } + + return idx; } public BakedQuad makeBakedQuad(Vector3f posFrom, Vector3f posTo, BlockPartFace face, Sprite sprite, Facing facing, ModelRotation modelRotationIn, BlockPartRotation partRotation, boolean uvLocked, boolean shade) @@ -147,7 +209,7 @@ public class FaceBakery private void fillVertexData(int[] faceData, int vertexIndex, Facing facing, BlockPartFace partFace, float[] p_178402_5_, Sprite sprite, ModelRotation modelRotationIn, BlockPartRotation partRotation, boolean uvLocked, boolean shade) { - Facing enumfacing = modelRotationIn.rotateFace(facing); + Facing enumfacing = rotateFace(modelRotationIn, facing); int color = shade ? getFaceShadeColor(enumfacing) : 0xffffffff; VertexInformation enumfacedirection$vertexinformation = EnumFaceDirection.getFacing(facing).getVertexInformation(vertexIndex); Vector3f vector3f = new Vector3f(p_178402_5_[enumfacedirection$vertexinformation.xIndex], p_178402_5_[enumfacedirection$vertexinformation.yIndex], p_178402_5_[enumfacedirection$vertexinformation.zIndex]); @@ -221,8 +283,8 @@ public class FaceBakery } else { - this.rotateScale(position, new Vector3f(0.5F, 0.5F, 0.5F), modelRotationIn.getMatrix4d(), new Vector3f(1.0F, 1.0F, 1.0F)); - return modelRotationIn.rotateVertex(facing, vertexIndex); + this.rotateScale(position, new Vector3f(0.5F, 0.5F, 0.5F), getMatrix4d(modelRotationIn), new Vector3f(1.0F, 1.0F, 1.0F)); + return rotateVertex(modelRotationIn, facing, vertexIndex); } } diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java index e6f7bcf4..b4698f5c 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java @@ -233,7 +233,7 @@ public abstract class ModelBakery if (face.cull == null) builder.addGeneralQuad(faceBakery.makeBakedQuad(blockpart.positionFrom, blockpart.positionTo, face, sprite, enumfacing, modelRotationIn, blockpart.partRotation, uvLocked, blockpart.shade)); else - builder.addFaceQuad(modelRotationIn.rotateFace(face.cull), faceBakery.makeBakedQuad(blockpart.positionFrom, blockpart.positionTo, face, sprite, enumfacing, modelRotationIn, blockpart.partRotation, uvLocked, blockpart.shade)); + builder.addFaceQuad(FaceBakery.rotateFace(modelRotationIn, face.cull), faceBakery.makeBakedQuad(blockpart.positionFrom, blockpart.positionTo, face, sprite, enumfacing, modelRotationIn, blockpart.partRotation, uvLocked, blockpart.shade)); } } return builder.makeBakedModel(); diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBlock.java b/client/src/main/java/client/renderer/blockmodel/ModelBlock.java index e4bc904c..bded385a 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBlock.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBlock.java @@ -3,13 +3,13 @@ package client.renderer.blockmodel; import java.util.List; import client.renderer.texture.TextureMap; +import client.util.Vector3f; import common.collect.Lists; import common.collect.Maps; import common.model.Model; import common.model.ModelRotation; import common.model.GuiPosition; import common.util.Facing; -import common.util.Vector3f; public class ModelBlock extends Model { private final List elements; diff --git a/client/src/main/java/client/renderer/blockmodel/ModelGenerator.java b/client/src/main/java/client/renderer/blockmodel/ModelGenerator.java index 2fefcfa6..011a121c 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelGenerator.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelGenerator.java @@ -8,11 +8,11 @@ import client.renderer.model.ModelBox; import client.renderer.texture.Sprite; import client.renderer.texture.TextureMap; import client.renderer.texture.TextureUtil; +import client.util.Vector3f; import common.collect.Lists; import common.collect.Maps; import common.log.Log; import common.util.Facing; -import common.util.Vector3f; public abstract class ModelGenerator { public static List bakeModel(String textureLocation, int tx, int ty, int tw, int th, float x, float y, float z, int w, int h, int d) diff --git a/common/src/main/java/common/util/Matrix4f.java b/client/src/main/java/client/util/Matrix4f.java similarity index 99% rename from common/src/main/java/common/util/Matrix4f.java rename to client/src/main/java/client/util/Matrix4f.java index 8e61925f..06856962 100644 --- a/common/src/main/java/common/util/Matrix4f.java +++ b/client/src/main/java/client/util/Matrix4f.java @@ -29,7 +29,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package common.util; +package client.util; import java.io.Serializable; import java.nio.FloatBuffer; diff --git a/common/src/main/java/common/util/Vector.java b/client/src/main/java/client/util/Vector.java similarity index 99% rename from common/src/main/java/common/util/Vector.java rename to client/src/main/java/client/util/Vector.java index 2388ca6e..ef36c97a 100644 --- a/common/src/main/java/common/util/Vector.java +++ b/client/src/main/java/client/util/Vector.java @@ -29,7 +29,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package common.util; +package client.util; import java.io.Serializable; import java.nio.FloatBuffer; diff --git a/common/src/main/java/common/util/Vector3f.java b/client/src/main/java/client/util/Vector3f.java similarity index 99% rename from common/src/main/java/common/util/Vector3f.java rename to client/src/main/java/client/util/Vector3f.java index 5416ce58..6c85bf6c 100644 --- a/common/src/main/java/common/util/Vector3f.java +++ b/client/src/main/java/client/util/Vector3f.java @@ -29,7 +29,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package common.util; +package client.util; import java.io.Serializable; import java.nio.FloatBuffer; diff --git a/common/src/main/java/common/util/Vector4f.java b/client/src/main/java/client/util/Vector4f.java similarity index 99% rename from common/src/main/java/common/util/Vector4f.java rename to client/src/main/java/client/util/Vector4f.java index ce150375..d9b06dd2 100644 --- a/common/src/main/java/common/util/Vector4f.java +++ b/client/src/main/java/client/util/Vector4f.java @@ -29,7 +29,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package common.util; +package client.util; import java.io.Serializable; import java.nio.FloatBuffer; diff --git a/client/src/main/java/client/world/ChunkClient.java b/client/src/main/java/client/world/ChunkClient.java index c379649e..3a6650cc 100644 --- a/client/src/main/java/client/world/ChunkClient.java +++ b/client/src/main/java/client/world/ChunkClient.java @@ -3,7 +3,6 @@ package client.world; import common.block.Block; import common.init.Blocks; import common.tileentity.TileEntity; -import common.util.Facing; import common.util.LocalPos; import common.world.BlockArray; import common.world.Chunk; diff --git a/common/src/main/java/common/model/ModelRotation.java b/common/src/main/java/common/model/ModelRotation.java index a181151c..2f3f0274 100755 --- a/common/src/main/java/common/model/ModelRotation.java +++ b/common/src/main/java/common/model/ModelRotation.java @@ -1,9 +1,6 @@ package common.model; -import common.util.ExtMath; import common.util.Facing; -import common.util.Matrix4f; -import common.util.Vector3f; public enum ModelRotation { X0_Y0(0, 0), @@ -22,62 +19,13 @@ public enum ModelRotation { X270_Y90(270, 90), X270_Y180(270, 180), X270_Y270(270, 270); - - private final Matrix4f matrix4d; - private final int quartersX; - private final int quartersY; + + public final int rotX; + public final int rotY; private ModelRotation(int x, int y) { - this.matrix4d = new Matrix4f(); - Matrix4f mat1 = new Matrix4f(); - mat1.setIdentity(); - Matrix4f.rotate((float)(-x) * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), mat1, mat1); - this.quartersX = ExtMath.absi(x / 90); - Matrix4f mat2 = new Matrix4f(); - mat2.setIdentity(); - Matrix4f.rotate((float)(-y) * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), mat2, mat2); - this.quartersY = ExtMath.absi(y / 90); - Matrix4f.mul(mat2, mat1, this.matrix4d); - } - - public Matrix4f getMatrix4d() { - return this.matrix4d; - } - - public Facing rotateFace(Facing face) { - Facing dir = face; - - for(int i = 0; i < this.quartersX; ++i) { - dir = dir.rotateAround(Facing.Axis.X); - } - - if(dir.getAxis() != Facing.Axis.Y) { - for(int j = 0; j < this.quartersY; ++j) { - dir = dir.rotateAround(Facing.Axis.Y); - } - } - - return dir; - } - - public int rotateVertex(Facing face, int index) { - int idx = index; - - if(face.getAxis() == Facing.Axis.X) { - idx = (index + this.quartersX) % 4; - } - - Facing dir = face; - - for(int j = 0; j < this.quartersX; ++j) { - dir = dir.rotateAround(Facing.Axis.X); - } - - if(dir.getAxis() == Facing.Axis.Y) { - idx = (idx + this.quartersY) % 4; - } - - return idx; + this.rotX = x; + this.rotY = y; } public static ModelRotation getNorthRot(Facing face) { diff --git a/common/src/main/java/common/network/IPlayer.java b/common/src/main/java/common/network/IPlayer.java index 709b29f4..2ece7069 100644 --- a/common/src/main/java/common/network/IPlayer.java +++ b/common/src/main/java/common/network/IPlayer.java @@ -25,7 +25,6 @@ import common.packet.CPacketSign; import common.packet.CPacketSkin; import common.util.LocalPos; import common.util.CharValidator; -import common.util.ChunkPos; import common.util.PortalType; public interface IPlayer extends NetHandler { @@ -91,7 +90,7 @@ public interface IPlayer extends NetHandler { void setSelectMode(); void sendPacket(Packet packet); void setPlayerLocation(double x, double y, double z, float yaw, float pitch); - List getLoadedChunkList(); + List getLoadedChunkList(); double getManagedX(); double getManagedZ(); void setManagedPos(double x, double z); diff --git a/common/src/main/java/common/packet/SPacketMultiBlockChange.java b/common/src/main/java/common/packet/SPacketMultiBlockChange.java index 86dcbd2c..bb7ed0f4 100755 --- a/common/src/main/java/common/packet/SPacketMultiBlockChange.java +++ b/common/src/main/java/common/packet/SPacketMultiBlockChange.java @@ -7,25 +7,26 @@ import common.network.IClientPlayer; import common.network.Packet; import common.network.PacketBuffer; import common.util.LocalPos; -import common.util.ChunkPos; import common.world.State; public class SPacketMultiBlockChange implements Packet { - private ChunkPos chunkPosCoord; + private int chunkPosCoordX; + private int chunkPosCoordZ; private SPacketMultiBlockChange.BlockUpdateData[] changedBlocks; - public static LocalPos getPos(ChunkPos pos, long position) + public static LocalPos getPos(int posX, int posZ, long position) { - return new LocalPos(new LocalPos((pos.x << 4) + (int)(position >> 36 & 15L), (int)(position & 4294967295L), (pos.z << 4) + (int)(position >> 32 & 15L))); + return new LocalPos(new LocalPos((posX << 4) + (int)(position >> 36 & 15L), (int)(position & 4294967295L), (posZ << 4) + (int)(position >> 32 & 15L))); } public SPacketMultiBlockChange() { } - public SPacketMultiBlockChange(ChunkPos pos, SPacketMultiBlockChange.BlockUpdateData[] changes) { - this.chunkPosCoord = pos; + public SPacketMultiBlockChange(int posX, int posZ, SPacketMultiBlockChange.BlockUpdateData[] changes) { + this.chunkPosCoordX = posX; + this.chunkPosCoordZ = posZ; this.changedBlocks = changes; } @@ -34,7 +35,8 @@ public class SPacketMultiBlockChange implements Packet */ public void readPacketData(PacketBuffer buf) throws IOException { - this.chunkPosCoord = new ChunkPos(buf.readInt(), buf.readInt()); + this.chunkPosCoordX = buf.readInt(); + this.chunkPosCoordZ = buf.readInt(); this.changedBlocks = new SPacketMultiBlockChange.BlockUpdateData[buf.readVarInt()]; for (int i = 0; i < this.changedBlocks.length; ++i) @@ -48,8 +50,8 @@ public class SPacketMultiBlockChange implements Packet */ public void writePacketData(PacketBuffer buf) throws IOException { - buf.writeInt(this.chunkPosCoord.x); - buf.writeInt(this.chunkPosCoord.z); + buf.writeInt(this.chunkPosCoordX); + buf.writeInt(this.chunkPosCoordZ); buf.writeVarInt(this.changedBlocks.length); for (SPacketMultiBlockChange.BlockUpdateData s22packetmultiblockchange$blockupdatedata : this.changedBlocks) @@ -72,9 +74,14 @@ public class SPacketMultiBlockChange implements Packet return this.changedBlocks; } - public ChunkPos getChunkPos() + public int getChunkPosX() { - return this.chunkPosCoord; + return this.chunkPosCoordX; + } + + public int getChunkPosZ() + { + return this.chunkPosCoordZ; } public static class BlockUpdateData diff --git a/common/src/main/java/common/vars/Vars.java b/common/src/main/java/common/vars/Vars.java index dc8060dd..2c9cbb13 100755 --- a/common/src/main/java/common/vars/Vars.java +++ b/common/src/main/java/common/vars/Vars.java @@ -265,7 +265,7 @@ public abstract class Vars { public static int spawnMoreZombie = 25; @Var(name = "explosionBlocksPerTick", min = 100, max = 10000000) public static int maxExplosionIters = 1000000; - @Var(name = "viewDistance", min = 2, max = 64) + @Var(name = "viewDistance", min = 2, max = 32) public static int distance = 8; @Var(name = "timeFlow", min = 0) public static int timeFlow = 1; diff --git a/common/src/main/java/common/world/World.java b/common/src/main/java/common/world/World.java index 97b573cf..760f0a5a 100755 --- a/common/src/main/java/common/world/World.java +++ b/common/src/main/java/common/world/World.java @@ -3,7 +3,6 @@ package common.world; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.Set; import java.util.function.Predicate; import common.block.Block; @@ -16,7 +15,6 @@ import common.block.natural.BlockSnow; import common.block.tech.BlockAnvil; import common.block.tech.BlockPipe; import common.collect.Lists; -import common.collect.Sets; import common.dimension.DimType; import common.dimension.Dimension; import common.entity.Entity; @@ -31,7 +29,6 @@ import common.tileentity.ITickable; import common.tileentity.TileEntity; import common.util.LocalPos; import common.util.BoundingBox; -import common.util.ChunkPos; import common.util.ExtMath; import common.util.Facing; import common.util.HitPosition; @@ -58,7 +55,6 @@ public abstract class World implements IWorldAccess { public final List players = Lists.newArrayList(); public final List effects = Lists.newArrayList(); public final IntHashMap entityIds = new IntHashMap(); - protected final Set active = Sets.newHashSet(); public final Dimension dimension; protected double gravity = 1.0; @@ -1158,25 +1154,6 @@ public abstract class World implements IWorldAccess { this.temp = this.getBaseTemperature() + this.weather.getTemperature(); } - public Set setActiveChunks(int radius) { - this.active.clear(); - for(int n = 0; n < this.players.size(); ++n) { - EntityNPC player = (EntityNPC)this.players.get(n); - int x = ExtMath.floord(player.posX / 16.0D); - int z = ExtMath.floord(player.posZ / 16.0D); - for(int cx = -radius; cx <= radius; cx++) { - for(int cz = -radius; cz <= radius; cz++) { - this.active.add(new ChunkPos(cx + x, cz + z)); - } - } - } - return this.active; - } - - public Set getActiveChunks() { - return this.active; - } - public float getTempOffset() { return this.temp; } diff --git a/server/src/main/java/server/network/Player.java b/server/src/main/java/server/network/Player.java index 804ff266..8899bd65 100755 --- a/server/src/main/java/server/network/Player.java +++ b/server/src/main/java/server/network/Player.java @@ -110,7 +110,6 @@ import common.tileentity.Device; import common.tileentity.TileEntitySign; import common.util.LocalPos; import common.util.BoundingBox; -import common.util.ChunkPos; import common.util.ExtMath; import common.util.Facing; import common.util.IntHashMap; @@ -134,6 +133,7 @@ import server.clipboard.RotationRegistry; import server.clipboard.RotationValue; import server.command.Executor; import server.init.UniverseRegistry; +import server.util.ChunkPos; import server.util.Form; import server.vars.SVars; import server.world.ChunkServer; diff --git a/common/src/main/java/common/util/ChunkPos.java b/server/src/main/java/server/util/ChunkPos.java similarity index 96% rename from common/src/main/java/common/util/ChunkPos.java rename to server/src/main/java/server/util/ChunkPos.java index 32a1c8e2..578ee57a 100755 --- a/common/src/main/java/common/util/ChunkPos.java +++ b/server/src/main/java/server/util/ChunkPos.java @@ -1,4 +1,4 @@ -package common.util; +package server.util; public class ChunkPos { public final int x; diff --git a/server/src/main/java/server/vars/SVars.java b/server/src/main/java/server/vars/SVars.java index 1aeeb73a..853eab29 100644 --- a/server/src/main/java/server/vars/SVars.java +++ b/server/src/main/java/server/vars/SVars.java @@ -81,7 +81,7 @@ public abstract class SVars { public static int spawnDungeonMobs = 4; @Var(name = "chunksPerTick", min = 5, max = 1024) public static int chunksPerTick = 10; - @Var(name = "updateDistance", min = 2, max = 64) + @Var(name = "updateDistance", min = 2, max = 32) public static int updateDistance = 8; @Var(name = "password", nonDefault = true) diff --git a/server/src/main/java/server/world/Spawner.java b/server/src/main/java/server/world/Spawner.java index 90ea0d07..8898d831 100755 --- a/server/src/main/java/server/world/Spawner.java +++ b/server/src/main/java/server/world/Spawner.java @@ -11,9 +11,9 @@ import common.init.Blocks; import common.rng.Random; import common.rng.WeightedList; import common.util.LocalPos; -import common.util.ChunkPos; import common.util.ExtMath; import common.world.World; +import server.util.ChunkPos; import server.vars.SVars; import server.worldgen.RngSpawn; diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index 2eaac109..ab74c571 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -59,7 +59,6 @@ import common.tags.TagObject; import common.tileentity.TileEntity; import common.util.LocalPos; import common.util.BoundingBox; -import common.util.ChunkPos; import common.util.ExtMath; import common.util.IntHashMap; import common.util.LongHashMap; @@ -83,6 +82,7 @@ import server.init.TeleportRegistry; import server.init.UniverseRegistry; import server.network.Player; import server.rng.PerlinGen; +import server.util.ChunkPos; import server.vars.SVars; import server.village.VillageCollection; import server.worldgen.ChunkPrimer; @@ -142,6 +142,7 @@ public final class WorldServer extends AWorldServer { private final Server server; private final File chunkDir; private final Random grng; + private final Set active = Sets.newHashSet(); private final Set ticks = Sets.newHashSet(); private final TreeSet ticksNext = new TreeSet(); private final List ticksNow = Lists.newArrayList(); @@ -447,7 +448,18 @@ public final class WorldServer extends AWorldServer { } protected void updateBlocks() { - this.setActiveChunks(SVars.updateDistance); + this.active.clear(); + int radius = SVars.updateDistance; + for(int n = 0; n < this.players.size(); ++n) { + EntityNPC player = (EntityNPC)this.players.get(n); + int x = ExtMath.floord(player.posX / 16.0D); + int z = ExtMath.floord(player.posZ / 16.0D); + for(int cx = -radius; cx <= radius; cx++) { + for(int cz = -radius; cz <= radius; cz++) { + this.active.add(new ChunkPos(cx + x, cz + z)); + } + } + } int dtics = 0; int rtics = 0; @@ -2590,12 +2602,11 @@ public final class WorldServer extends AWorldServer { } private static SPacketMultiBlockChange getPacket(int amount, long[] list, ChunkServer chunk) { - ChunkPos pos = new ChunkPos(chunk.xPos, chunk.zPos); SPacketMultiBlockChange.BlockUpdateData[] changes = new SPacketMultiBlockChange.BlockUpdateData[amount]; for(int z = 0; z < changes.length; z++) { - changes[z] = new SPacketMultiBlockChange.BlockUpdateData(list[z], chunk.getState(SPacketMultiBlockChange.getPos(pos, list[z]))); + changes[z] = new SPacketMultiBlockChange.BlockUpdateData(list[z], chunk.getState(SPacketMultiBlockChange.getPos(chunk.xPos, chunk.zPos, list[z]))); } - return new SPacketMultiBlockChange(pos, changes); + return new SPacketMultiBlockChange(chunk.xPos, chunk.zPos, changes); } public boolean generateBigMushroom(LocalPos pos, State state, Random rand) diff --git a/server/src/main/java/server/worldgen/structure/MapGenStructure.java b/server/src/main/java/server/worldgen/structure/MapGenStructure.java index 9a5e94ee..5f030b2a 100755 --- a/server/src/main/java/server/worldgen/structure/MapGenStructure.java +++ b/server/src/main/java/server/worldgen/structure/MapGenStructure.java @@ -7,9 +7,9 @@ import common.collect.Maps; import common.rng.Random; import common.tags.TagObject; import common.util.LocalPos; -import common.util.ChunkPos; import common.util.LongHashMap; import common.world.World; +import server.util.ChunkPos; import server.world.WorldServer; import server.world.WorldServer.WorldSavedData; import server.worldgen.ChunkPrimer; diff --git a/server/src/main/java/server/worldgen/structure/StructureStart.java b/server/src/main/java/server/worldgen/structure/StructureStart.java index ecb455dd..cc737e40 100755 --- a/server/src/main/java/server/worldgen/structure/StructureStart.java +++ b/server/src/main/java/server/worldgen/structure/StructureStart.java @@ -7,7 +7,8 @@ import common.collect.Lists; import common.rng.Random; import common.tags.TagObject; import java.util.List; -import common.util.ChunkPos; + +import server.util.ChunkPos; import server.world.WorldServer; public abstract class StructureStart