mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -04:00
fix sound loading bug, implement crop blocks #28
This commit is contained in:
parent
6e044a8146
commit
b5c2e9e5ca
@ -17,11 +17,14 @@ import de.bixilon.minosoft.data.registries.blocks.types.*
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.button.StoneButtonBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.button.WoodenButtonBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.leaves.LeavesBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.plant.CropBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.plant.PlantBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.portal.NetherPortalBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.redstone.ComparatorBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.redstone.RepeaterBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.wall.LeverBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.water.KelpBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.water.KelpPlantBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.water.SeagrassBlock
|
||||
import de.bixilon.minosoft.data.registries.factory.clazz.DefaultClassFactory
|
||||
|
||||
@ -42,8 +45,11 @@ object DefaultBlockFactories : DefaultClassFactory<BlockFactory<*>>(
|
||||
RedstoneTorchBlock,
|
||||
HoneyBlock,
|
||||
KelpBlock,
|
||||
KelpPlantBlock,
|
||||
SeagrassBlock,
|
||||
StoneButtonBlock,
|
||||
WoodenButtonBlock,
|
||||
LeavesBlock,
|
||||
PlantBlock,
|
||||
CropBlock,
|
||||
)
|
||||
|
@ -29,7 +29,6 @@ import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem
|
||||
import de.bixilon.minosoft.data.registries.registries.registry.ResourceLocationDeserializer
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||
import de.bixilon.minosoft.gui.rendering.tint.TintProvider
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
@ -76,7 +75,7 @@ open class Block(
|
||||
return resourceLocation.full
|
||||
}
|
||||
|
||||
open fun getPlacementState(connection: PlayConnection, raycastHit: RaycastHit): BlockState? = defaultState
|
||||
open fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? = defaultState
|
||||
|
||||
open fun onBreak(connection: PlayConnection, blockPosition: Vec3i, blockState: BlockState, blockEntity: BlockEntity?) = Unit
|
||||
|
||||
|
@ -22,13 +22,12 @@ import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
||||
import de.bixilon.minosoft.data.registries.materials.DefaultMaterials
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
|
||||
open class DoorBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : DoubleSizeBlock(resourceLocation, registries, data) {
|
||||
|
||||
override fun getPlacementState(connection: PlayConnection, raycastHit: RaycastHit): BlockState? {
|
||||
override fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? {
|
||||
TODO()
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.plant
|
||||
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockFactory
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||
import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
|
||||
open class CropBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : PlantBlock(resourceLocation, registries, data) {
|
||||
|
||||
override fun canPlaceOn(blockState: BlockState): Boolean {
|
||||
return blockState.block.resourceLocation == MinecraftBlocks.FARMLAND
|
||||
}
|
||||
|
||||
companion object : BlockFactory<CropBlock> {
|
||||
|
||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): CropBlock {
|
||||
return CropBlock(resourceLocation, registries, data)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.plant
|
||||
|
||||
import de.bixilon.minosoft.data.direction.Directions
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockFactory
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||
import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.Block
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
|
||||
open class PlantBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : Block(resourceLocation, registries, data) {
|
||||
|
||||
open fun canPlaceOn(blockState: BlockState): Boolean {
|
||||
return blockState.block.resourceLocation == MinecraftBlocks.DIRT || blockState.block.resourceLocation == MinecraftBlocks.FARMLAND
|
||||
}
|
||||
|
||||
override fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? {
|
||||
val below = connection.world[hit.blockPosition + hit.hitDirection + Directions.DOWN] ?: return null
|
||||
if (!canPlaceOn(below)) {
|
||||
return null
|
||||
}
|
||||
return super.getPlacementState(connection, hit)
|
||||
}
|
||||
|
||||
companion object : BlockFactory<PlantBlock> {
|
||||
|
||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): PlantBlock {
|
||||
return PlantBlock(resourceLocation, registries, data)
|
||||
}
|
||||
}
|
||||
}
|
@ -21,13 +21,12 @@ import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
|
||||
open class ComparatorBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : RedstoneGateBlock(resourceLocation, registries, data) {
|
||||
|
||||
override fun getPlacementState(connection: PlayConnection, raycastHit: RaycastHit): BlockState? {
|
||||
override fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? {
|
||||
TODO()
|
||||
}
|
||||
|
||||
|
@ -21,13 +21,12 @@ import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
|
||||
open class RepeaterBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : RedstoneGateBlock(resourceLocation, registries, data) {
|
||||
|
||||
override fun getPlacementState(connection: PlayConnection, raycastHit: RaycastHit): BlockState? {
|
||||
override fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? {
|
||||
TODO()
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,6 @@ import de.bixilon.minosoft.data.registries.particle.data.DustParticleData
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.data.text.Colors
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
|
||||
import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults
|
||||
import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.dust.DustParticle
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY
|
||||
@ -56,7 +55,7 @@ open class LeverBlock(resourceLocation: ResourceLocation, registries: Registries
|
||||
}
|
||||
}
|
||||
|
||||
override fun getPlacementState(connection: PlayConnection, raycastHit: RaycastHit): BlockState? {
|
||||
override fun getPlacementState(connection: PlayConnection, hit: BlockRaycastHit): BlockState? {
|
||||
TODO()
|
||||
}
|
||||
|
||||
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.water
|
||||
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockFactory
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.Block
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.FluidFillable
|
||||
import de.bixilon.minosoft.data.registries.fluid.DefaultFluids
|
||||
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
|
||||
open class KelpPlantBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : Block(resourceLocation, registries, data), FluidFillable {
|
||||
override val fluid: Fluid = registries.fluidRegistry[DefaultFluids.WATER]!!
|
||||
|
||||
companion object : BlockFactory<KelpPlantBlock> {
|
||||
|
||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): KelpPlantBlock {
|
||||
return KelpPlantBlock(resourceLocation, registries, data)
|
||||
}
|
||||
}
|
||||
}
|
@ -95,6 +95,7 @@ open class Item(
|
||||
}
|
||||
return when (val `class` = data["class"].unsafeCast<String>()) {
|
||||
"BlockItem" -> BlockItem(resourceLocation, registries, data)
|
||||
"AliasedBlockItem" -> AliasedBlockItem(resourceLocation, registries, data)
|
||||
"Item", "AirBlockItem" -> Item(resourceLocation, registries, data)
|
||||
"ArmorItem" -> ArmorItem(resourceLocation, registries, data)
|
||||
"SwordItem" -> SwordItem(resourceLocation, registries, data)
|
||||
@ -114,7 +115,6 @@ open class Item(
|
||||
"LilyPadItem" -> LilyPadItem(resourceLocation, registries, data)
|
||||
"CommandBlockItem" -> CommandBlockItem(resourceLocation, registries, data)
|
||||
"ScaffoldingItem" -> ScaffoldingItem(resourceLocation, registries, data)
|
||||
"AliasedBlockItem" -> AliasedBlockItem(resourceLocation, registries, data)
|
||||
"SaddleItem" -> SaddleItem(resourceLocation, registries, data)
|
||||
"MinecartItem" -> MinecartItem(resourceLocation, registries, data)
|
||||
"OnAStickItem" -> OnAStickItem(resourceLocation, registries, data)
|
||||
|
@ -81,7 +81,7 @@ data class Sound(
|
||||
|
||||
return Sound(
|
||||
soundEvent = soundEvent,
|
||||
path = data["name"].toResourceLocation(),
|
||||
path = data["name"].toResourceLocation().sound(),
|
||||
volume = data["volume"]?.toFloat() ?: 1.0f,
|
||||
pitch = data["pitch"]?.toFloat() ?: 1.0f,
|
||||
weight = data["weight"]?.toInt() ?: 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user