From 02f458cff599c67fe58cdbcb2b7d45666e6a5bc9 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 27 Jun 2021 19:08:30 +0200 Subject: [PATCH] even better fov multiplier --- .../java/de/bixilon/minosoft/data/Axes.kt | 1 + .../data/direction/AbstractDirection.kt | 24 ++++++++++++++ .../data/{ => direction}/Directions.kt | 14 +++++--- .../minosoft/data/direction/FakeDirection.kt | 33 +++++++++++++++++++ .../data/entities/EntityMetaDataFields.kt | 2 +- .../data/entities/block/BellBlockEntity.kt | 2 +- .../entities/block/CampfireBlockEntity.kt | 2 +- .../block/piston/PistonBlockEntity.kt | 2 +- .../entities/entities/decoration/ItemFrame.kt | 2 +- .../entities/entities/decoration/Painting.kt | 2 +- .../data/entities/entities/monster/Shulker.kt | 2 +- .../data/entities/meta/EntityMetaData.kt | 2 +- .../data/physics/CollisionDetector.kt | 2 +- .../minosoft/data/player/LocalPlayerEntity.kt | 2 +- .../blocks/properties/BlockProperties.kt | 2 +- .../blocks/types/DoubleSizeBlock.kt | 2 +- .../blocks/types/portal/NetherPortalBlock.kt | 2 +- .../blocks/types/wall/LeverBlock.kt | 2 +- .../blocks/types/wall/WallMountedBlock.kt | 2 +- .../data/registries/fluid/FlowableFluid.kt | 2 +- .../data/registries/fluid/lava/LavaFluid.kt | 2 +- .../data/registries/items/tools/HoeItem.kt | 2 +- .../data/registries/items/tools/ShovelItem.kt | 2 +- .../gui/rendering/chunk/VoxelShape.kt | 2 +- .../gui/rendering/chunk/WorldRenderer.kt | 32 +++++++++++------- .../gui/rendering/chunk/models/AABB.kt | 2 +- .../chunk/models/loading/BlockModelElement.kt | 3 +- .../chunk/models/loading/BlockModelFace.kt | 2 +- .../chunk/models/renderable/BlockRenderer.kt | 2 +- .../models/renderable/ElementRenderer.kt | 2 +- .../chunk/models/renderable/FluidRenderer.kt | 2 +- .../models/renderable/MultipartRenderer.kt | 2 +- .../hud/nodes/debug/HUDWorldDebugNode.kt | 2 +- .../gui/rendering/input/LeftClickHandler.kt | 2 +- .../input/camera/hit/BlockRaycastHit.kt | 2 +- .../input/camera/hit/EntityRaycastHit.kt | 2 +- .../input/camera/hit/FluidRaycastHit.kt | 2 +- .../rendering/input/camera/hit/RaycastHit.kt | 2 +- .../minosoft/gui/rendering/util/VecUtil.kt | 11 +++++-- .../packets/c2s/play/BlockBreakC2SP.kt | 2 +- .../packets/c2s/play/BlockPlaceC2SP.kt | 2 +- .../packets/s2c/play/PaintingSpawnS2CP.kt | 4 +-- .../protocol/protocol/InByteBuffer.kt | 2 +- 43 files changed, 134 insertions(+), 58 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/data/direction/AbstractDirection.kt rename src/main/java/de/bixilon/minosoft/data/{ => direction}/Directions.kt (94%) create mode 100644 src/main/java/de/bixilon/minosoft/data/direction/FakeDirection.kt diff --git a/src/main/java/de/bixilon/minosoft/data/Axes.kt b/src/main/java/de/bixilon/minosoft/data/Axes.kt index 5bb6dc51f..57fef3230 100644 --- a/src/main/java/de/bixilon/minosoft/data/Axes.kt +++ b/src/main/java/de/bixilon/minosoft/data/Axes.kt @@ -12,6 +12,7 @@ */ package de.bixilon.minosoft.data +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer import de.bixilon.minosoft.util.KUtil import de.bixilon.minosoft.util.enum.ValuesEnum diff --git a/src/main/java/de/bixilon/minosoft/data/direction/AbstractDirection.kt b/src/main/java/de/bixilon/minosoft/data/direction/AbstractDirection.kt new file mode 100644 index 000000000..2ee6c8204 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/direction/AbstractDirection.kt @@ -0,0 +1,24 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.direction + +import glm_.vec3.Vec3 +import glm_.vec3.Vec3d +import glm_.vec3.Vec3i + +interface AbstractDirection { + val vector: Vec3i + val vectorf: Vec3 + val vectord: Vec3d +} diff --git a/src/main/java/de/bixilon/minosoft/data/Directions.kt b/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt similarity index 94% rename from src/main/java/de/bixilon/minosoft/data/Directions.kt rename to src/main/java/de/bixilon/minosoft/data/direction/Directions.kt index 32b0d3104..441f95b8c 100644 --- a/src/main/java/de/bixilon/minosoft/data/Directions.kt +++ b/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2021 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -10,8 +10,9 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data +package de.bixilon.minosoft.data.direction +import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer import de.bixilon.minosoft.gui.rendering.chunk.models.FaceSize import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelElement @@ -24,7 +25,10 @@ import glm_.vec3.Vec3d import glm_.vec3.Vec3i import kotlin.math.abs -enum class Directions(val horizontalId: Int, val vector: Vec3i) { +enum class Directions( + val horizontalId: Int, + override val vector: Vec3i, +) : AbstractDirection { DOWN(-1, Vec3i(0, -1, 0)), UP(-1, Vec3i(0, 1, 0)), NORTH(2, Vec3i(0, 0, -1)), @@ -32,8 +36,8 @@ enum class Directions(val horizontalId: Int, val vector: Vec3i) { WEST(1, Vec3i(-1, 0, 0)), EAST(3, Vec3i(1, 0, 0)); - val vectorf = Vec3(vector) - val vectord = Vec3d(vector) + override val vectorf = Vec3(vector) + override val vectord = Vec3d(vector) val axis: Axes get() = Axes.byDirection(this) diff --git a/src/main/java/de/bixilon/minosoft/data/direction/FakeDirection.kt b/src/main/java/de/bixilon/minosoft/data/direction/FakeDirection.kt new file mode 100644 index 000000000..e59534375 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/direction/FakeDirection.kt @@ -0,0 +1,33 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.direction + +import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus +import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3 +import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d +import glm_.vec3.Vec3 +import glm_.vec3.Vec3d +import glm_.vec3.Vec3i + +class FakeDirection(override val vector: Vec3i) : AbstractDirection { + override val vectorf: Vec3 = vector.toVec3 + override val vectord: Vec3d = vector.toVec3d + + companion object { + val NORTH_WEST = FakeDirection(Directions.NORTH + Directions.WEST) + val NORTH_EAST = FakeDirection(Directions.NORTH + Directions.EAST) + val SOUTH_WEST = FakeDirection(Directions.SOUTH + Directions.WEST) + val SOUTH_EAST = FakeDirection(Directions.SOUTH + Directions.WEST) + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.kt b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.kt index 1064d0aa0..c84c00ddf 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.data.entities -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.entities.animal.Axolotl import de.bixilon.minosoft.data.entities.entities.npc.villager.data.VillagerData import de.bixilon.minosoft.data.entities.entities.npc.villager.data.VillagerLevels diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/BellBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/BellBlockEntity.kt index 8a9cc2af0..683cfc6c3 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/BellBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/BellBlockEntity.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.data.entities.block -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/CampfireBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/CampfireBlockEntity.kt index 6a073be07..b205d2f9c 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/CampfireBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/CampfireBlockEntity.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.data.entities.block -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/piston/PistonBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/piston/PistonBlockEntity.kt index 510cd766a..dc5078752 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/piston/PistonBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/piston/PistonBlockEntity.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.data.entities.block.piston -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.block.BlockActionEntity import de.bixilon.minosoft.data.entities.block.BlockEntity import de.bixilon.minosoft.data.entities.block.BlockEntityFactory diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.kt index 05790ec73..e2f2396ec 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.data.entities.entities.decoration -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.EntityMetaDataFields import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.kt index b3c1763c6..6027243cf 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.data.entities.entities.decoration -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Shulker.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Shulker.kt index 84ee62ee9..e058da8b2 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Shulker.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Shulker.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.data.entities.entities.monster -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.EntityMetaDataFields import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction diff --git a/src/main/java/de/bixilon/minosoft/data/entities/meta/EntityMetaData.kt b/src/main/java/de/bixilon/minosoft/data/entities/meta/EntityMetaData.kt index 98467cf89..430f7aa5b 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/meta/EntityMetaData.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/meta/EntityMetaData.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.data.entities.meta -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.EntityMetaDataFields import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.Poses diff --git a/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt b/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt index aceaaa0dc..7a1316475 100644 --- a/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt +++ b/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.physics import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.player.LocalPlayerEntity import de.bixilon.minosoft.gui.rendering.chunk.VoxelShape import de.bixilon.minosoft.gui.rendering.chunk.models.AABB diff --git a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt index 06723d357..666b34634 100644 --- a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt @@ -14,10 +14,10 @@ package de.bixilon.minosoft.data.player import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.abilities.ItemCooldown import de.bixilon.minosoft.data.accounts.Account +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity import de.bixilon.minosoft.data.entities.entities.player.RemotePlayerEntity diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt index 659e6e6bc..51985d1b3 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.blocks.properties import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BooleanBlockPropertiesSerializer import de.bixilon.minosoft.data.registries.blocks.properties.serializer.IntBlockPropertiesSerializer diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/DoubleSizeBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/DoubleSizeBlock.kt index 385eff419..8d4b553e1 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/DoubleSizeBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/DoubleSizeBlock.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.blocks.types import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.block.BlockEntity import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/portal/NetherPortalBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/portal/NetherPortalBlock.kt index 013c44d0a..325fd481b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/portal/NetherPortalBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/portal/NetherPortalBlock.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.blocks.types.portal import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.types.Block diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt index bb26ab09d..73c2ed41d 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.blocks.types.wall import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.player.Hands import de.bixilon.minosoft.data.registries.ResourceLocation diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/WallMountedBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/WallMountedBlock.kt index 994ed44d4..e3bb303a4 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/WallMountedBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/WallMountedBlock.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.blocks.types.wall import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.properties.Attachments diff --git a/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt b/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt index 770782d7b..84f81681b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.data.registries.fluid import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock diff --git a/src/main/java/de/bixilon/minosoft/data/registries/fluid/lava/LavaFluid.kt b/src/main/java/de/bixilon/minosoft/data/registries/fluid/lava/LavaFluid.kt index 257d38a83..5d005f4ef 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/fluid/lava/LavaFluid.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/fluid/lava/LavaFluid.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.data.registries.fluid.lava import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.fluid.FlowableFluid diff --git a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/HoeItem.kt b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/HoeItem.kt index 19d1ec414..b229ecbb5 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/HoeItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/HoeItem.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.data.registries.items.tools import com.google.gson.JsonObject import de.bixilon.minosoft.Minosoft -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.player.Hands import de.bixilon.minosoft.data.registries.ResourceLocation diff --git a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/ShovelItem.kt b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/ShovelItem.kt index dbf29a1ca..deb0429eb 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/ShovelItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/ShovelItem.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.data.registries.items.tools import com.google.gson.JsonObject import de.bixilon.minosoft.Minosoft -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.player.Hands import de.bixilon.minosoft.data.registries.ResourceLocation diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/VoxelShape.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/VoxelShape.kt index 621985eb3..771ad944d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/VoxelShape.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/VoxelShape.kt @@ -4,7 +4,7 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonPrimitive import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.gui.rendering.chunk.models.AABB import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/WorldRenderer.kt index 536caa32e..f2507b222 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/WorldRenderer.kt @@ -15,7 +15,8 @@ package de.bixilon.minosoft.gui.rendering.chunk import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions +import de.bixilon.minosoft.data.direction.FakeDirection import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties @@ -243,8 +244,8 @@ class WorldRenderer( } // ensure all neighbor chunks are loaded - for (direction in Directions.SIDES) { - val neighborChunk = world.chunks[chunkPosition + direction] + for (neighbourPosition in chunkPosition.neighbourPositions) { + val neighborChunk = world.chunks[neighbourPosition] if (neighborChunk == null || !neighborChunk.isFullyLoaded) { // neighbors not loaded, doing later queuedChunks.add(chunkPosition) @@ -270,17 +271,10 @@ class WorldRenderer( } private fun checkNeighbours(chunkPosition: Vec2i) { - val neighborsPositions: Array = arrayOf( - chunkPosition + Directions.NORTH, - chunkPosition + Directions.SOUTH, - chunkPosition + Directions.WEST, - chunkPosition + Directions.EAST, - ) - - checkQueuedChunks(neighborsPositions) + checkQueuedChunks(chunkPosition.neighbourPositions) } - private fun checkQueuedChunks(chunkPositions: Array) { + private fun checkQueuedChunks(chunkPositions: List) { for (position in chunkPositions) { if (queuedChunks.contains(position)) { prepareChunk(position, checkQueued = false) @@ -470,5 +464,19 @@ class WorldRenderer( private operator fun Int.plus(upOrDown: Directions): Int { return this + upOrDown.vector.y } + + val Vec2i.neighbourPositions: List + get() { + return listOf( + this + Directions.NORTH, + this + Directions.SOUTH, + this + Directions.WEST, + this + Directions.EAST, + this + FakeDirection.NORTH_WEST, + this + FakeDirection.NORTH_EAST, + this + FakeDirection.SOUTH_WEST, + this + FakeDirection.SOUTH_EAST, + ) + } } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/AABB.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/AABB.kt index d54647362..171d9eda9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/AABB.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/AABB.kt @@ -2,7 +2,7 @@ package de.bixilon.minosoft.gui.rendering.chunk.models import com.google.gson.JsonObject import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE import de.bixilon.minosoft.gui.rendering.util.VecUtil.get diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelElement.kt index dfc5c3af7..3277ae30f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelElement.kt @@ -15,7 +15,8 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.loading import com.google.gson.JsonObject import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions +import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.rotate import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3 import glm_.func.rad diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt index 0267ae4c5..ad92d7ccd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.loading import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.gui.rendering.chunk.models.AABB import de.bixilon.minosoft.gui.rendering.util.VecUtil import de.bixilon.minosoft.gui.rendering.util.VecUtil.readUV diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/BlockRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/BlockRenderer.kt index 63f9b145b..afd7867f1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/BlockRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/BlockRenderer.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.renderable import com.google.common.collect.HashBiMap import com.google.gson.JsonObject -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.text.RGBColor diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/ElementRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/ElementRenderer.kt index e0314be10..f1ec60565 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/ElementRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/ElementRenderer.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.renderable import com.google.common.collect.HashBiMap import com.google.gson.JsonObject import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.chunk.ChunkMeshCollection import de.bixilon.minosoft.gui.rendering.chunk.SectionArrayMesh diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt index 1ef2bbd9a..e7bb861e3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt @@ -1,6 +1,6 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.renderable -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.blocks.BlockState diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/MultipartRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/MultipartRenderer.kt index 1e84d185a..3b39b3631 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/MultipartRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/MultipartRenderer.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.gui.rendering.chunk.models.renderable -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.gui.rendering.chunk.models.FaceSize import de.bixilon.minosoft.gui.rendering.textures.Texture diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/HUDWorldDebugNode.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/HUDWorldDebugNode.kt index 4c3635af0..25b2fdb41 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/HUDWorldDebugNode.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/HUDWorldDebugNode.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.gui.rendering.hud.nodes.debug import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.gui.rendering.chunk.WorldRenderer import de.bixilon.minosoft.gui.rendering.hud.HUDElementProperties diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/LeftClickHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/LeftClickHandler.kt index 9dce77555..20149c5fd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/LeftClickHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/LeftClickHandler.kt @@ -14,8 +14,8 @@ package de.bixilon.minosoft.gui.rendering.input import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames -import de.bixilon.minosoft.data.Directions import de.bixilon.minosoft.data.abilities.Gamemodes +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.player.Hands import de.bixilon.minosoft.data.registries.blocks.BlockState diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/BlockRaycastHit.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/BlockRaycastHit.kt index c92696385..579c5d7fc 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/BlockRaycastHit.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/BlockRaycastHit.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.gui.rendering.input.camera.hit -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.util.KUtil.format import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/EntityRaycastHit.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/EntityRaycastHit.kt index f56ba7352..73b29c38d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/EntityRaycastHit.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/EntityRaycastHit.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.gui.rendering.input.camera.hit -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.entities.Entity import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/FluidRaycastHit.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/FluidRaycastHit.kt index 3d22389c1..76df701cd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/FluidRaycastHit.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/FluidRaycastHit.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.gui.rendering.input.camera.hit -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties import de.bixilon.minosoft.data.registries.fluid.Fluid diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/RaycastHit.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/RaycastHit.kt index 1b779fc99..79e9b40f9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/RaycastHit.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/hit/RaycastHit.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.gui.rendering.input.camera.hit -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import glm_.vec3.Vec3d abstract class RaycastHit( diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt index 7d87dd5a0..9490289ed 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt @@ -19,7 +19,8 @@ import com.google.gson.JsonObject import com.google.gson.JsonPrimitive import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.AbstractDirection +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.blocks.RandomOffsetTypes import de.bixilon.minosoft.data.registries.blocks.types.Block import de.bixilon.minosoft.gui.rendering.chunk.models.AABB @@ -265,7 +266,7 @@ object VecUtil { return Vec3i((x + vec2.x), y, (z + vec2.y)) } - infix operator fun Vec3i.plus(direction: Directions?): Vec3i { + infix operator fun Vec3i.plus(direction: AbstractDirection?): Vec3i { return this + direction?.vector } @@ -277,7 +278,7 @@ object VecUtil { return Vec2i(x + vec3.x, y + vec3.z) } - infix operator fun Vec2i.plus(direction: Directions): Vec2i { + infix operator fun Vec2i.plus(direction: AbstractDirection): Vec2i { return this + direction.vector } @@ -465,4 +466,8 @@ object VecUtil { z = 0.0 } } + + operator fun AbstractDirection.plus(direction: AbstractDirection): Vec3i { + return this.vector + direction.vector + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockBreakC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockBreakC2SP.kt index 47e439711..46a16dbcc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockBreakC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockBreakC2SP.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.protocol.packets.c2s.play -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket import de.bixilon.minosoft.protocol.protocol.PlayOutByteBuffer import de.bixilon.minosoft.protocol.protocol.ProtocolVersions diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockPlaceC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockPlaceC2SP.kt index c26c80959..3e0490ac6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockPlaceC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BlockPlaceC2SP.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.protocol.packets.c2s.play -import de.bixilon.minosoft.data.Directions +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.player.Hands import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PaintingSpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PaintingSpawnS2CP.kt index 1adcf4ba8..b26e07d3a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PaintingSpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PaintingSpawnS2CP.kt @@ -12,8 +12,8 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.data.Directions -import de.bixilon.minosoft.data.Directions.Companion.byId +import de.bixilon.minosoft.data.direction.Directions +import de.bixilon.minosoft.data.direction.Directions.Companion.byId import de.bixilon.minosoft.data.entities.entities.decoration.Painting import de.bixilon.minosoft.data.registries.Motive import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt index e0c2a87d0..37a107f57 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt @@ -14,11 +14,11 @@ package de.bixilon.minosoft.protocol.protocol import com.google.gson.JsonObject import com.google.gson.JsonParser -import de.bixilon.minosoft.data.Directions import de.bixilon.minosoft.data.commands.CommandArgumentNode import de.bixilon.minosoft.data.commands.CommandLiteralNode import de.bixilon.minosoft.data.commands.CommandNode import de.bixilon.minosoft.data.commands.CommandRootNode +import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.Poses import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.tags.Tag