Skip to content

Commit

Permalink
remove bad code
Browse files Browse the repository at this point in the history
  • Loading branch information
mrsterner committed Sep 17, 2024
1 parent 30b0510 commit 070d3d6
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 233 deletions.
133 changes: 0 additions & 133 deletions src/main/kotlin/dev/sterner/api/util/VoidBoundBlockUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,125 +17,6 @@ import kotlin.math.abs

object VoidBoundBlockUtils {

private var lastPos: BlockPos? = null
private var lastDistance: Double = 0.0

/**
* Finds and breaks the furthest log block in a connected set.
*/
fun breakFurthestLog(level: Level, pos: BlockPos, blockState: BlockState, player: Player): Boolean {
lastPos = pos
lastDistance = 0.0

val reachDistance = if (level.getBlockState(pos).`is`(BlockTags.LOGS)) 2 else 1
searchForBlocks(level, pos, blockState, reachDistance)

val blockBroken = breakBlock(level, player, lastPos!!)
level.markAndNotifyBlock(pos, level.getChunkAt(pos), blockState, blockState, 3, 20)

if (blockBroken && level.getBlockState(pos).`is`(BlockTags.LOGS)) {
level.markAndNotifyBlock(pos, level.getChunkAt(pos), blockState, blockState, 3, 20)

for (xOffset in -3..3) {
for (yOffset in -3..3) {
for (zOffset in -3..3) {
val offsetPos = lastPos!!.offset(xOffset, yOffset, zOffset)
level.scheduleTick(offsetPos, level.getBlockState(offsetPos).block, 20)
}
}
}
}

return blockBroken
}

/**
* Handles breaking the block, applying any tool enchantments or player abilities.
*/
private fun breakBlock(level: Level, player: Player, pos: BlockPos): Boolean {
if (player is ServerPlayer) {
val blockState = level.getBlockState(pos)
val blockEntity = level.getBlockEntity(pos)

val successfulBreak: Boolean = if (player.abilities.instabuild) {
removeBlock(player, pos)
} else {
val itemStack = player.mainHandItem
val canDestroy = blockState.canEntityDestroy(level, pos, player)
val isRemoved = removeBlock(player, pos, canDestroy)

if (isRemoved && canDestroy) {
val enchantedStack = applyFortune(itemStack)
blockState.block.playerDestroy(level, player, pos, blockState, blockEntity, enchantedStack)
}

isRemoved
}

return successfulBreak
}

return false
}

/**
* Removes the block and applies any block-breaking logic.
*/
private fun removeBlock(player: Player, pos: BlockPos, canHarvest: Boolean = false): Boolean {
val blockState = player.level().getBlockState(pos)

return blockState.onDestroyedByPlayer(player.level(), pos, player, canHarvest, blockState.fluidState)
.also { flag ->
if (flag) {
blockState.block.destroy(player.level(), pos, blockState)
}
}
}

/**
* Recursively searches for the furthest block within the given reach.
*/
private fun searchForBlocks(level: Level, pos: BlockPos, blockState: BlockState, reach: Int) {
for (xOffset in -reach..reach) {
for (yOffset in reach downTo -reach) {
for (zOffset in -reach..reach) {
if (isOutOfBounds(pos, xOffset, yOffset, zOffset)) return

val currentPos = lastPos!!.offset(xOffset, yOffset, zOffset)
val currentState = level.getBlockState(currentPos)

if (currentState.block == blockState.block && currentState.block.properties.destroyTime >= 0.0f) {
val distance = calculateDistance(pos, xOffset, yOffset, zOffset)
if (distance > lastDistance) {
lastDistance = distance
lastPos = currentPos
searchForBlocks(level, pos, blockState, reach)
return
}
}
}
}
}
}

/**
* Calculates the squared distance for optimization purposes.
*/
private fun calculateDistance(pos: BlockPos, xOffset: Int, yOffset: Int, zOffset: Int): Double {
val xd = lastPos!!.x + xOffset - pos.x
val yd = lastPos!!.y + yOffset - pos.y
val zd = lastPos!!.z + zOffset - pos.z
return (xd * xd + yd * yd + zd * zd).toDouble()
}

/**
* Checks if the position is out of bounds for searching.
*/
private fun isOutOfBounds(pos: BlockPos, xOffset: Int, yOffset: Int, zOffset: Int): Boolean {
return abs(lastPos!!.x + xOffset - pos.x) > 24 ||
abs(lastPos!!.y + yOffset - pos.y) > 48 ||
abs(lastPos!!.z + zOffset - pos.z) > 24
}

/**
* Recursively gathers all connected log blocks of the same type.
Expand Down Expand Up @@ -181,20 +62,6 @@ object VoidBoundBlockUtils {
log2.defaultBlockState().`is`(BlockRegistry.EXPOSED_SOULWOOD_LOG.get())
}

/**
* Applies fortune enchantments to the item stack used for block breaking.
*/
private fun applyFortune(itemStack: ItemStack): ItemStack {
val enchantments = EnchantmentHelper.getEnchantments(itemStack).toMutableMap()
val fortuneLevel = enchantments[Enchantments.BLOCK_FORTUNE] ?: 0

if (fortuneLevel > 0) {
enchantments[Enchantments.BLOCK_FORTUNE] = fortuneLevel
}

return itemStack.copy().also { EnchantmentHelper.setEnchantments(enchantments, it) }
}

/**
* Returns false if the block being broken is warded by any player
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,61 +56,7 @@ open class GalesEdgeItem(
companion object {

fun ascend(player: LivingEntity, stack: ItemStack, ticks: Int) {
var newMotionY = player.deltaMovement.y

if (newMotionY < 0.0) {
newMotionY /= 1.2
player.fallDistance /= 1.2f
}

newMotionY += 0.08
if (newMotionY > 0.5) {
newMotionY = 0.2
}

player.deltaMovement = Vec3(player.deltaMovement.x, newMotionY, player.deltaMovement.z)

val targets: List<*> =
player.level().getEntities(player, player.boundingBox.inflate(2.5, 2.5, 2.5))
var miny: Int
if (targets.isNotEmpty()) {
miny = 0
while (miny < targets.size) {
val entity: Entity = targets[miny] as Entity
if (entity !is Player && entity is LivingEntity && !entity.isDeadOrDying && (player.passengers == null || player.passengers !== entity)) {
val p = Vec3(player.x, player.y, player.z)
val t = Vec3(entity.x, entity.y, entity.z)
val distance: Double = p.distanceTo(t) + 0.1
val r = Vec3(t.x - p.x, t.y - p.y, t.z - p.z)

val prevDeltaMovement = entity.deltaMovement
entity.deltaMovement = Vec3(
prevDeltaMovement.x + r.x / 2.5 / distance,
prevDeltaMovement.y + r.y / 2.5 / distance,
prevDeltaMovement.z + r.z / 2.5 / distance
)

}
++miny
}
}

if (player.level().isClientSide) {
for (i in 1..4) {
genParticleOrbit(player.level(), player.position(), 4, i)
}
}

if (ticks % 20 == 0) {

stack.hurtAndBreak(
1, player
) { _: LivingEntity ->
player.broadcastBreakEvent(
player.usedItemHand
)
}
}
//TODO
}

fun genParticleOrbit(level: Level, pos: Vec3, range: Int, direction: Int) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,50 +60,7 @@ open class TidecutterItem(
val stuff = level.getEntitiesOfClass(ItemEntity::class.java, livingEntity.boundingBox.inflate(10.0))

if (stuff != null && stuff.isNotEmpty()) {
val iterator = stuff.iterator()
while (iterator.hasNext()) {
val e: ItemEntity = iterator.next() as ItemEntity
if (!e.isRemoved) {
val direction = Vec3(
livingEntity.x - e.x,
(livingEntity.y + livingEntity.bbHeight / 2.0) - (e.y + e.bbHeight / 2.0),
livingEntity.z - e.z
).normalize()

val speedFactor = 0.045

val newMotion = direction.scale(speedFactor)

val clampedMotion = Vec3(
newMotion.x.coerceIn(-0.25, 0.25),
newMotion.y.coerceIn(-0.25, 0.25),
newMotion.z.coerceIn(-0.25, 0.25)
)

e.deltaMovement = e.deltaMovement.add(clampedMotion)

if (!level.isClientSide) {
for (player in PlayerLookup.tracking(e)) {
for (i in 0..5) {
val pos = Vector3f(
e.x.toFloat() + (level.random.nextFloat() - level.random.nextFloat()) * 0.2f,
e.y.toFloat() + e.bbHeight + (level.random.nextFloat() - level.random.nextFloat()) * 0.2f,
e.z.toFloat() + (level.random.nextFloat() - level.random.nextFloat()) * 0.2f
)
VoidBoundPacketRegistry.VOID_BOUND_CHANNEL.sendToClient(
BubbleParticlePacket(
Vector3f(
clampedMotion.x.toFloat(),
clampedMotion.y.toFloat(),
clampedMotion.z.toFloat()
), pos
), player
)
}
}
}
}
}
//TODO
}

super.onUseTick(level, livingEntity, stack, remainingUseDuration)
Expand Down Expand Up @@ -166,7 +123,7 @@ open class TidecutterItem(
}
}

VoidBoundBlockUtils.breakFurthestLog(level, pos, block, player)
//TODO break furthest block
breakEvent.isCanceled = true
}
}
Expand Down

0 comments on commit 070d3d6

Please sign in to comment.