mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -04:00
remove VecUtil.EMPTY_VEC3, replace with Vec3.EMPTY
This commit is contained in:
parent
61a72961f5
commit
8eee74df5d
@ -19,10 +19,11 @@ import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity
|
|||||||
import de.bixilon.minosoft.data.mappings.items.Item
|
import de.bixilon.minosoft.data.mappings.items.Item
|
||||||
import de.bixilon.minosoft.data.mappings.other.containers.Container
|
import de.bixilon.minosoft.data.mappings.other.containers.Container
|
||||||
import de.bixilon.minosoft.data.mappings.other.containers.PlayerInventory
|
import de.bixilon.minosoft.data.mappings.other.containers.PlayerInventory
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.util.KUtil.synchronizedMapOf
|
import de.bixilon.minosoft.util.KUtil.synchronizedMapOf
|
||||||
|
import glm_.vec3.Vec3
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
class Player(
|
class Player(
|
||||||
@ -31,8 +32,8 @@ class Player(
|
|||||||
) {
|
) {
|
||||||
val healthCondition = PlayerHealthCondition()
|
val healthCondition = PlayerHealthCondition()
|
||||||
val experienceCondition = PlayerExperienceCondition()
|
val experienceCondition = PlayerExperienceCondition()
|
||||||
var spawnPosition: Vec3i = VecUtil.EMPTY_VEC3I
|
var spawnPosition: Vec3i = Vec3i.EMPTY
|
||||||
val entity: PlayerEntity = PlayerEntity(connection, connection.registries.entityTypeRegistry[PlayerEntity.RESOURCE_LOCATION]!!, VecUtil.EMPTY_VEC3, EntityRotation(0.0, 0.0), account.username)
|
val entity: PlayerEntity = PlayerEntity(connection, connection.registries.entityTypeRegistry[PlayerEntity.RESOURCE_LOCATION]!!, Vec3.EMPTY, EntityRotation(0.0, 0.0), account.username)
|
||||||
|
|
||||||
@Deprecated(message = "Will be replaced with some kind of teleport manager, ...")
|
@Deprecated(message = "Will be replaced with some kind of teleport manager, ...")
|
||||||
var isSpawnConfirmed = false
|
var isSpawnConfirmed = false
|
||||||
|
@ -6,7 +6,8 @@ import com.google.gson.JsonPrimitive
|
|||||||
import de.bixilon.minosoft.data.Axes
|
import de.bixilon.minosoft.data.Axes
|
||||||
import de.bixilon.minosoft.data.Directions
|
import de.bixilon.minosoft.data.Directions
|
||||||
import de.bixilon.minosoft.gui.rendering.chunk.models.AABB
|
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.EMPTY
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.getMinDistanceDirection
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.getMinDistanceDirection
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
@ -99,7 +100,7 @@ class VoxelShape(private val aabbs: MutableList<AABB> = mutableListOf()) : Itera
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val EMPTY = VoxelShape()
|
val EMPTY = VoxelShape()
|
||||||
val FULL = VoxelShape(mutableListOf(AABB(VecUtil.EMPTY_VEC3, VecUtil.ONES_VEC3)))
|
val FULL = VoxelShape(mutableListOf(AABB(Vec3.EMPTY, Vec3.ONE)))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun iterator(): Iterator<AABB> {
|
override fun iterator(): Iterator<AABB> {
|
||||||
|
@ -24,7 +24,7 @@ import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|||||||
import de.bixilon.minosoft.gui.rendering.chunk.VoxelShape
|
import de.bixilon.minosoft.gui.rendering.chunk.VoxelShape
|
||||||
import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.ElementRenderer
|
import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.ElementRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.shader.Shader
|
import de.bixilon.minosoft.gui.rendering.shader.Shader
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.getWorldOffset
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.getWorldOffset
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
@ -55,7 +55,7 @@ class BlockOutlineRenderer(
|
|||||||
private fun drawLine(start: Vec3, end: Vec3, mesh: BlockOutlineMesh) {
|
private fun drawLine(start: Vec3, end: Vec3, mesh: BlockOutlineMesh) {
|
||||||
val direction = (end - start).normalize()
|
val direction = (end - start).normalize()
|
||||||
val normal1 = Vec3(direction.z, direction.z, direction.x - direction.y)
|
val normal1 = Vec3(direction.z, direction.z, direction.x - direction.y)
|
||||||
if (normal1 == VecUtil.EMPTY_VEC3) {
|
if (normal1 == Vec3.EMPTY) {
|
||||||
normal1.x = normal1.z
|
normal1.x = normal1.z
|
||||||
normal1.z = direction.z
|
normal1.z = direction.z
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,8 @@ import com.google.gson.JsonArray
|
|||||||
import com.google.gson.JsonElement
|
import com.google.gson.JsonElement
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import de.bixilon.minosoft.data.Axes
|
import de.bixilon.minosoft.data.Axes
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
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
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.get
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
||||||
import glm_.Java.Companion.glm
|
import glm_.Java.Companion.glm
|
||||||
@ -17,8 +18,8 @@ class AABB {
|
|||||||
val max: Vec3
|
val max: Vec3
|
||||||
|
|
||||||
constructor(jsonData: JsonObject) {
|
constructor(jsonData: JsonObject) {
|
||||||
min = readPositionFromJson(jsonData["from"], VecUtil.EMPTY_VEC3)
|
min = readPositionFromJson(jsonData["from"], Vec3.EMPTY)
|
||||||
max = readPositionFromJson(jsonData["to"], VecUtil.ONES_VEC3)
|
max = readPositionFromJson(jsonData["to"], Vec3.ONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun readPositionFromJson(jsonData: JsonElement, default: Vec3): Vec3 {
|
private fun readPositionFromJson(jsonData: JsonElement, default: Vec3): Vec3 {
|
||||||
@ -139,7 +140,7 @@ class AABB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun raycast(position: Vec3, direction: Vec3): Float {
|
fun raycast(position: Vec3, direction: Vec3): Float {
|
||||||
if (max - min == VecUtil.ONES_VEC3 || position in this) {
|
if (max - min == Vec3.ONE || position in this) {
|
||||||
return 0f
|
return 0f
|
||||||
}
|
}
|
||||||
var tMin = 0f
|
var tMin = 0f
|
||||||
|
@ -26,7 +26,7 @@ import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelElement
|
|||||||
import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelFace
|
import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelFace
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.TextureTransparencies
|
import de.bixilon.minosoft.gui.rendering.textures.TextureTransparencies
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.rotate
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.rotate
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
|
||||||
@ -129,7 +129,7 @@ class ElementRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getRotatedDirection(rotation: Vec3, direction: Directions): Directions {
|
fun getRotatedDirection(rotation: Vec3, direction: Directions): Directions {
|
||||||
if (rotation == VecUtil.EMPTY_VEC3) {
|
if (rotation == Vec3.EMPTY) {
|
||||||
return direction
|
return direction
|
||||||
}
|
}
|
||||||
var rotatedDirectionVector = direction.floatDirectionVector.rotate(-rotation.x, Axes.X)
|
var rotatedDirectionVector = direction.floatDirectionVector.rotate(-rotation.x, Axes.X)
|
||||||
@ -138,12 +138,12 @@ class ElementRenderer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun rotatePositionsAxes(positions: Array<Vec3>, angles: Vec3, rescale: Boolean) {
|
fun rotatePositionsAxes(positions: Array<Vec3>, angles: Vec3, rescale: Boolean) {
|
||||||
if (angles == VecUtil.EMPTY_VEC3) {
|
if (angles == Vec3.EMPTY) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
BlockModelElement.rotatePositions(positions, Axes.X, -angles.x, VecUtil.EMPTY_VEC3, rescale)
|
BlockModelElement.rotatePositions(positions, Axes.X, -angles.x, Vec3.EMPTY, rescale)
|
||||||
BlockModelElement.rotatePositions(positions, Axes.Y, angles.y, VecUtil.EMPTY_VEC3, rescale)
|
BlockModelElement.rotatePositions(positions, Axes.Y, angles.y, Vec3.EMPTY, rescale)
|
||||||
BlockModelElement.rotatePositions(positions, Axes.Z, -angles.z, VecUtil.EMPTY_VEC3, rescale)
|
BlockModelElement.rotatePositions(positions, Axes.Z, -angles.z, Vec3.EMPTY, rescale)
|
||||||
}
|
}
|
||||||
|
|
||||||
val POSITION_1 = Vec3(-0.5f, -0.5f, -0.5f)
|
val POSITION_1 = Vec3(-0.5f, -0.5f, -0.5f)
|
||||||
|
@ -26,6 +26,7 @@ import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
|
|||||||
import de.bixilon.minosoft.gui.rendering.modding.events.ScreenResizeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.ScreenResizeEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
|
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.blockPosition
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.blockPosition
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.floor
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.floor
|
||||||
@ -250,7 +251,7 @@ class Camera(
|
|||||||
if (renderWindow.inputHandler.isKeyBindingDown(KeyBindingsNames.MOVE_RIGHT)) {
|
if (renderWindow.inputHandler.isKeyBindingDown(KeyBindingsNames.MOVE_RIGHT)) {
|
||||||
movementDirection += cameraRight
|
movementDirection += cameraRight
|
||||||
}
|
}
|
||||||
val deltaMovement = if (movementDirection != VecUtil.EMPTY_VEC3) {
|
val deltaMovement = if (movementDirection != Vec3.EMPTY) {
|
||||||
movementDirection.normalize() * cameraSpeed
|
movementDirection.normalize() * cameraSpeed
|
||||||
} else {
|
} else {
|
||||||
movementDirection
|
movementDirection
|
||||||
@ -267,7 +268,7 @@ class Camera(
|
|||||||
playerEntity.velocity.y += 0.75f * ProtocolDefinition.GRAVITY
|
playerEntity.velocity.y += 0.75f * ProtocolDefinition.GRAVITY
|
||||||
playerEntity.onGround = false
|
playerEntity.onGround = false
|
||||||
}
|
}
|
||||||
if (deltaMovement != VecUtil.EMPTY_VEC3) {
|
if (deltaMovement != Vec3.EMPTY) {
|
||||||
playerEntity.move(deltaMovement, false)
|
playerEntity.move(deltaMovement, false)
|
||||||
recalculateViewProjectionMatrix()
|
recalculateViewProjectionMatrix()
|
||||||
currentPositionSent = false
|
currentPositionSent = false
|
||||||
|
@ -21,10 +21,16 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE
|
|||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.clear
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.clear
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
|
import de.bixilon.minosoft.util.KUtil.millis
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
abstract class Particle(protected val connection: PlayConnection, protected val particleRenderer: ParticleRenderer, protected val position: Vec3, protected val data: ParticleData) {
|
abstract class Particle(
|
||||||
|
protected val connection: PlayConnection,
|
||||||
|
protected val particleRenderer: ParticleRenderer,
|
||||||
|
protected val position: Vec3,
|
||||||
|
protected val data: ParticleData,
|
||||||
|
) {
|
||||||
protected val random = Random
|
protected val random = Random
|
||||||
private var lastTickTime = -1L
|
private var lastTickTime = -1L
|
||||||
|
|
||||||
@ -33,21 +39,7 @@ abstract class Particle(protected val connection: PlayConnection, protected val
|
|||||||
var dead = false
|
var dead = false
|
||||||
var age: Int = 0
|
var age: Int = 0
|
||||||
protected set
|
protected set
|
||||||
var tickAge: Int
|
var maxAge: Int = (4.0f / (random.nextFloat() * 0.9f + 0.1f)).millis
|
||||||
get() = age / ProtocolDefinition.TICK_TIME
|
|
||||||
set(value) {
|
|
||||||
age = value * ProtocolDefinition.TICK_TIME
|
|
||||||
}
|
|
||||||
var maxAge: Int = Integer.MAX_VALUE
|
|
||||||
var maxTickAge: Int
|
|
||||||
get() = maxAge / ProtocolDefinition.TICK_TIME
|
|
||||||
set(value) {
|
|
||||||
maxAge = value * ProtocolDefinition.TICK_TIME
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
maxTickAge = (4.0f / (random.nextFloat() * 0.9f + 0.1f)).toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
// moving
|
// moving
|
||||||
val friction = Vec3.EMPTY
|
val friction = Vec3.EMPTY
|
||||||
|
@ -21,13 +21,15 @@ import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.Ex
|
|||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
||||||
|
import de.bixilon.minosoft.util.KUtil.millis
|
||||||
|
import de.bixilon.minosoft.util.KUtil.ticks
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
|
|
||||||
class ExplosionEmitterParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData) : NoRenderParticle(connection, particleRenderer, position, data) {
|
class ExplosionEmitterParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData) : NoRenderParticle(connection, particleRenderer, position, data) {
|
||||||
private val explosionParticleType = connection.registries.particleTypeRegistry[ExplosionParticle]!!
|
private val explosionParticleType = connection.registries.particleTypeRegistry[ExplosionParticle]!!
|
||||||
|
|
||||||
init {
|
init {
|
||||||
maxTickAge = 8
|
maxAge = 8.millis
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -36,7 +38,7 @@ class ExplosionEmitterParticle(connection: PlayConnection, particleRenderer: Par
|
|||||||
for (i in 0 until 6) {
|
for (i in 0 until 6) {
|
||||||
val position = position + { (random.nextFloat() - random.nextFloat()) * 4.0f }
|
val position = position + { (random.nextFloat() - random.nextFloat()) * 4.0f }
|
||||||
|
|
||||||
particleRenderer.add(ExplosionParticle(connection, particleRenderer, position, explosionParticleType.simple(), (tickAge.toFloat() / maxTickAge)))
|
particleRenderer.add(ExplosionParticle(connection, particleRenderer, position, explosionParticleType.simple(), (age.ticks.toFloat() / maxAge.ticks)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,12 +20,13 @@ import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory
|
|||||||
import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer
|
import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
||||||
|
import de.bixilon.minosoft.util.KUtil.ticks
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
|
|
||||||
class ExplosionParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData, val power: Float = 1.0f) : SimpleTextureParticle(connection, particleRenderer, position, data) {
|
class ExplosionParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData, val power: Float = 1.0f) : SimpleTextureParticle(connection, particleRenderer, position, data) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
maxTickAge = 6 + random.nextInt(4)
|
maxAge = (6 + random.nextInt(4)).ticks
|
||||||
val gray = random.nextFloat() * 0.6f + 0.4f
|
val gray = random.nextFloat() * 0.6f + 0.4f
|
||||||
color = gray.asGray()
|
color = gray.asGray()
|
||||||
scale = 2.0f * (power - gray * 0.5f)
|
scale = 2.0f * (power - gray * 0.5f)
|
||||||
|
@ -37,15 +37,14 @@ import glm_.vec3.Vec3
|
|||||||
import glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
object VecUtil {
|
object VecUtil {
|
||||||
val EMPTY_VEC3 = Vec3(0, 0, 0)
|
|
||||||
val EMPTY_VEC3I = Vec3i(0, 0, 0)
|
|
||||||
val ONES_VEC3 = Vec3(1)
|
|
||||||
|
|
||||||
val Vec3.Companion.EMPTY: Vec3
|
val Vec3.Companion.EMPTY: Vec3
|
||||||
get() = Vec3(EMPTY_VEC3)
|
get() = Vec3(0, 0, 0)
|
||||||
|
|
||||||
|
val Vec3i.Companion.EMPTY: Vec3i
|
||||||
|
get() = Vec3i(0, 0, 0)
|
||||||
|
|
||||||
val Vec3.Companion.ONE: Vec3
|
val Vec3.Companion.ONE: Vec3
|
||||||
get() = Vec3(ONES_VEC3)
|
get() = Vec3(1, 1, 1)
|
||||||
|
|
||||||
fun JsonElement.toVec3(): Vec3 {
|
fun JsonElement.toVec3(): Vec3 {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
@ -221,7 +220,7 @@ object VecUtil {
|
|||||||
|
|
||||||
fun Vec3i.getWorldOffset(block: Block): Vec3 {
|
fun Vec3i.getWorldOffset(block: Block): Vec3 {
|
||||||
if (block.randomOffsetType == null || !Minosoft.config.config.game.other.flowerRandomOffset) {
|
if (block.randomOffsetType == null || !Minosoft.config.config.game.other.flowerRandomOffset) {
|
||||||
return EMPTY_VEC3
|
return Vec3.EMPTY
|
||||||
}
|
}
|
||||||
|
|
||||||
val positionHash = generatePositionHash(x, 0, z)
|
val positionHash = generatePositionHash(x, 0, z)
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.util
|
package de.bixilon.minosoft.util
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.util.enum.AliasableEnum
|
import de.bixilon.minosoft.util.enum.AliasableEnum
|
||||||
import sun.misc.Unsafe
|
import sun.misc.Unsafe
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -113,4 +114,16 @@ object KUtil {
|
|||||||
fun Random.nextFloat(min: Float = Float.MIN_VALUE, max: Float = Float.MAX_VALUE): Float {
|
fun Random.nextFloat(min: Float = Float.MIN_VALUE, max: Float = Float.MAX_VALUE): Float {
|
||||||
return min + this.nextFloat() * (max - min)
|
return min + this.nextFloat() * (max - min)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts millis to ticks
|
||||||
|
*/
|
||||||
|
val Number.ticks: Int
|
||||||
|
get() = this.toInt() / ProtocolDefinition.TICK_TIME
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts ticks to millis
|
||||||
|
*/
|
||||||
|
val Number.millis: Int
|
||||||
|
get() = this.toInt() * ProtocolDefinition.TICK_TIME
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user