mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-13 09:26:11 -04:00
fix some bugs in tilling, stripping, flatting
This commit is contained in:
parent
cc909f8116
commit
5150df8dec
@ -21,10 +21,7 @@ import de.bixilon.minosoft.data.mappings.blocks.BlockUsages
|
|||||||
import de.bixilon.minosoft.data.mappings.inventory.CreativeModeTab
|
import de.bixilon.minosoft.data.mappings.inventory.CreativeModeTab
|
||||||
import de.bixilon.minosoft.data.mappings.items.armor.ArmorItem
|
import de.bixilon.minosoft.data.mappings.items.armor.ArmorItem
|
||||||
import de.bixilon.minosoft.data.mappings.items.armor.HorseArmorItem
|
import de.bixilon.minosoft.data.mappings.items.armor.HorseArmorItem
|
||||||
import de.bixilon.minosoft.data.mappings.items.tools.AxeItem
|
import de.bixilon.minosoft.data.mappings.items.tools.*
|
||||||
import de.bixilon.minosoft.data.mappings.items.tools.MiningToolItem
|
|
||||||
import de.bixilon.minosoft.data.mappings.items.tools.SwordItem
|
|
||||||
import de.bixilon.minosoft.data.mappings.items.tools.ToolItem
|
|
||||||
import de.bixilon.minosoft.data.mappings.registry.RegistryItem
|
import de.bixilon.minosoft.data.mappings.registry.RegistryItem
|
||||||
import de.bixilon.minosoft.data.mappings.registry.ResourceLocationDeserializer
|
import de.bixilon.minosoft.data.mappings.registry.ResourceLocationDeserializer
|
||||||
import de.bixilon.minosoft.data.mappings.registry.Translatable
|
import de.bixilon.minosoft.data.mappings.registry.Translatable
|
||||||
@ -69,6 +66,8 @@ open class Item(
|
|||||||
"HorseArmorItem" -> HorseArmorItem(resourceLocation, mappings, data)
|
"HorseArmorItem" -> HorseArmorItem(resourceLocation, mappings, data)
|
||||||
"SpawnEggItem" -> SpawnEggItem(resourceLocation, mappings, data)
|
"SpawnEggItem" -> SpawnEggItem(resourceLocation, mappings, data)
|
||||||
"MusicDiscItem" -> MusicDiscItem(resourceLocation, mappings, data)
|
"MusicDiscItem" -> MusicDiscItem(resourceLocation, mappings, data)
|
||||||
|
"ShovelItem" -> ShovelItem(resourceLocation, mappings, data)
|
||||||
|
"HoeItem" -> HoeItem(resourceLocation, mappings, data)
|
||||||
// "Item" -> Item(resourceLocation, data)
|
// "Item" -> Item(resourceLocation, data)
|
||||||
// else -> TODO("Can not find item class: ${data["class"].asString}")
|
// else -> TODO("Can not find item class: ${data["class"].asString}")
|
||||||
else -> Item(resourceLocation, mappings, data)
|
else -> Item(resourceLocation, mappings, data)
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.data.mappings.items.tools
|
package de.bixilon.minosoft.data.mappings.items.tools
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
|
import de.bixilon.minosoft.data.Directions
|
||||||
import de.bixilon.minosoft.data.inventory.ItemStack
|
import de.bixilon.minosoft.data.inventory.ItemStack
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
||||||
@ -22,6 +23,7 @@ import de.bixilon.minosoft.data.mappings.blocks.types.Block
|
|||||||
import de.bixilon.minosoft.data.mappings.versions.Registries
|
import de.bixilon.minosoft.data.mappings.versions.Registries
|
||||||
import de.bixilon.minosoft.data.player.Hands
|
import de.bixilon.minosoft.data.player.Hands
|
||||||
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
||||||
|
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 glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
@ -43,6 +45,9 @@ open class AxeItem(
|
|||||||
|
|
||||||
val target = strippableBlocks?.get(blockState.block) ?: return BlockUsages.PASS
|
val target = strippableBlocks?.get(blockState.block) ?: return BlockUsages.PASS
|
||||||
|
|
||||||
|
if (connection.world[blockPosition + Directions.UP] != null) {
|
||||||
|
return BlockUsages.PASS
|
||||||
|
}
|
||||||
|
|
||||||
connection.world[blockPosition] = target.withProperties(blockState.properties)
|
connection.world[blockPosition] = target.withProperties(blockState.properties)
|
||||||
return BlockUsages.SUCCESS
|
return BlockUsages.SUCCESS
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.data.mappings.items.tools
|
package de.bixilon.minosoft.data.mappings.items.tools
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
|
import de.bixilon.minosoft.data.Directions
|
||||||
import de.bixilon.minosoft.data.inventory.ItemStack
|
import de.bixilon.minosoft.data.inventory.ItemStack
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
||||||
@ -22,6 +23,7 @@ import de.bixilon.minosoft.data.mappings.blocks.types.Block
|
|||||||
import de.bixilon.minosoft.data.mappings.versions.Registries
|
import de.bixilon.minosoft.data.mappings.versions.Registries
|
||||||
import de.bixilon.minosoft.data.player.Hands
|
import de.bixilon.minosoft.data.player.Hands
|
||||||
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
||||||
|
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 glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
@ -41,7 +43,13 @@ open class HoeItem(
|
|||||||
override fun use(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i, raycastHit: RaycastHit, hands: Hands, itemStack: ItemStack): BlockUsages {
|
override fun use(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i, raycastHit: RaycastHit, hands: Hands, itemStack: ItemStack): BlockUsages {
|
||||||
// ToDo: Check tags (21w19a+)
|
// ToDo: Check tags (21w19a+)
|
||||||
|
|
||||||
connection.world[blockPosition] = tillableBlockStates?.get(blockState.block) ?: return BlockUsages.PASS
|
val nextState = tillableBlockStates?.get(blockState.block) ?: return BlockUsages.PASS
|
||||||
|
|
||||||
|
if (connection.world[blockPosition + Directions.UP] != null) {
|
||||||
|
return BlockUsages.PASS
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.world[blockPosition] = nextState
|
||||||
return BlockUsages.SUCCESS
|
return BlockUsages.SUCCESS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.data.mappings.items.tools
|
package de.bixilon.minosoft.data.mappings.items.tools
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
|
import de.bixilon.minosoft.data.Directions
|
||||||
import de.bixilon.minosoft.data.inventory.ItemStack
|
import de.bixilon.minosoft.data.inventory.ItemStack
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
||||||
@ -22,6 +23,7 @@ import de.bixilon.minosoft.data.mappings.blocks.types.Block
|
|||||||
import de.bixilon.minosoft.data.mappings.versions.Registries
|
import de.bixilon.minosoft.data.mappings.versions.Registries
|
||||||
import de.bixilon.minosoft.data.player.Hands
|
import de.bixilon.minosoft.data.player.Hands
|
||||||
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
import de.bixilon.minosoft.gui.rendering.input.camera.RaycastHit
|
||||||
|
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 glm_.vec3.Vec3i
|
import glm_.vec3.Vec3i
|
||||||
|
|
||||||
@ -42,7 +44,13 @@ open class ShovelItem(
|
|||||||
override fun use(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i, raycastHit: RaycastHit, hands: Hands, itemStack: ItemStack): BlockUsages {
|
override fun use(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i, raycastHit: RaycastHit, hands: Hands, itemStack: ItemStack): BlockUsages {
|
||||||
// ToDo: Check tags (21w19a+)
|
// ToDo: Check tags (21w19a+)
|
||||||
|
|
||||||
connection.world[blockPosition] = flattenableBlockStates?.get(blockState.block) ?: return BlockUsages.PASS
|
val nextState = flattenableBlockStates?.get(blockState.block) ?: return BlockUsages.PASS
|
||||||
|
|
||||||
|
if (connection.world[blockPosition + Directions.UP] != null) {
|
||||||
|
return BlockUsages.PASS
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.world[blockPosition] = nextState
|
||||||
return BlockUsages.SUCCESS
|
return BlockUsages.SUCCESS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,8 +146,16 @@ class InteractionHandler(
|
|||||||
|
|
||||||
when (itemInHand.item.use(connection, raycastHit.blockState, raycastHit.blockPosition, raycastHit, Hands.MAIN_HAND, itemInHand)) {
|
when (itemInHand.item.use(connection, raycastHit.blockState, raycastHit.blockPosition, raycastHit, Hands.MAIN_HAND, itemInHand)) {
|
||||||
BlockUsages.SUCCESS -> {
|
BlockUsages.SUCCESS -> {
|
||||||
// ToDo: Interact with block?
|
|
||||||
connection.sendPacket(ArmSwingC2SP(Hands.MAIN_HAND))
|
connection.sendPacket(ArmSwingC2SP(Hands.MAIN_HAND))
|
||||||
|
|
||||||
|
connection.sendPacket(BlockPlaceC2SP(
|
||||||
|
position = raycastHit.blockPosition,
|
||||||
|
direction = raycastHit.hitDirection,
|
||||||
|
cursorPosition = raycastHit.hitPosition,
|
||||||
|
item = connection.player.inventory.getHotbarSlot(),
|
||||||
|
hand = Hands.MAIN_HAND,
|
||||||
|
insideBlock = false, // ToDo
|
||||||
|
))
|
||||||
}
|
}
|
||||||
BlockUsages.PASS -> {
|
BlockUsages.PASS -> {
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user