feat: swarm projection basics
This commit is contained in:
parent
fa0403b3c8
commit
5b22f9087b
@ -10,6 +10,7 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import quaedam.projection.ProjectionEffectType
|
import quaedam.projection.ProjectionEffectType
|
||||||
import quaedam.projection.SkylightProjection
|
import quaedam.projection.SkylightProjection
|
||||||
|
import quaedam.projection.swarm.SwarmProjection
|
||||||
import quaedam.projector.Projector
|
import quaedam.projector.Projector
|
||||||
|
|
||||||
object Quaedam {
|
object Quaedam {
|
||||||
@ -31,6 +32,7 @@ object Quaedam {
|
|||||||
fun init() {
|
fun init() {
|
||||||
Projector
|
Projector
|
||||||
SkylightProjection
|
SkylightProjection
|
||||||
|
SwarmProjection
|
||||||
|
|
||||||
creativeModeTabs.register()
|
creativeModeTabs.register()
|
||||||
items.register()
|
items.register()
|
||||||
|
@ -11,6 +11,7 @@ import quaedam.Quaedam
|
|||||||
object SkylightProjection {
|
object SkylightProjection {
|
||||||
|
|
||||||
const val ID = "skylight_projection"
|
const val ID = "skylight_projection"
|
||||||
|
const val SHORT_ID = "skylight"
|
||||||
|
|
||||||
val block = Quaedam.blocks.register(ID) { SkylightProjectionBlock }!!
|
val block = Quaedam.blocks.register(ID) { SkylightProjectionBlock }!!
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ object SkylightProjection {
|
|||||||
)
|
)
|
||||||
}!!
|
}!!
|
||||||
|
|
||||||
val effect = Quaedam.projectionEffects.register(ID) {
|
val effect = Quaedam.projectionEffects.register(SHORT_ID) {
|
||||||
ProjectionEffectType { SkylightProjectionEffect() }
|
ProjectionEffectType { SkylightProjectionEffect() }
|
||||||
}!!
|
}!!
|
||||||
|
|
||||||
@ -39,15 +40,19 @@ object SkylightProjectionBlock : ProjectionBlock<SkylightProjectionEffect>(creat
|
|||||||
|
|
||||||
data class SkylightProjectionEffect(var factor: Double = 2.0) : ProjectionEffect() {
|
data class SkylightProjectionEffect(var factor: Double = 2.0) : ProjectionEffect() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG_FACTOR = "Factor"
|
||||||
|
}
|
||||||
|
|
||||||
override val type
|
override val type
|
||||||
get() = SkylightProjection.effect.get()!!
|
get() = SkylightProjection.effect.get()!!
|
||||||
|
|
||||||
override fun toNbt(tag: CompoundTag) {
|
override fun toNbt(tag: CompoundTag) {
|
||||||
tag.putDouble("Factor", factor)
|
tag.putDouble(TAG_FACTOR, factor)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun fromNbt(tag: CompoundTag) {
|
override fun fromNbt(tag: CompoundTag) {
|
||||||
factor = tag.getDouble("Factor")
|
factor = tag.getDouble(TAG_FACTOR)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package quaedam.projection.swarm
|
||||||
|
|
||||||
|
import net.minecraft.world.item.BlockItem
|
||||||
|
import net.minecraft.world.item.Item
|
||||||
|
import quaedam.Quaedam
|
||||||
|
import quaedam.projection.ProjectionEffectType
|
||||||
|
|
||||||
|
object SwarmProjection {
|
||||||
|
|
||||||
|
const val ID = "swarm_projection"
|
||||||
|
const val SHORT_ID = "swarm"
|
||||||
|
|
||||||
|
val block = Quaedam.blocks.register(ID) { SwarmProjectionBlock }!!
|
||||||
|
|
||||||
|
val item = Quaedam.items.register(ID) {
|
||||||
|
BlockItem(
|
||||||
|
SwarmProjectionBlock, Item.Properties()
|
||||||
|
.`arch$tab`(Quaedam.creativeModeTab)
|
||||||
|
)
|
||||||
|
}!!
|
||||||
|
|
||||||
|
val effect = Quaedam.projectionEffects.register(SHORT_ID) {
|
||||||
|
ProjectionEffectType { SwarmProjectionEffect() }
|
||||||
|
}!!
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package quaedam.projection.swarm
|
||||||
|
|
||||||
|
import net.minecraft.core.BlockPos
|
||||||
|
import net.minecraft.server.level.ServerLevel
|
||||||
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
|
import quaedam.projection.ProjectionBlock
|
||||||
|
|
||||||
|
object SwarmProjectionBlock : ProjectionBlock<SwarmProjectionEffect>() {
|
||||||
|
|
||||||
|
override fun createProjectionEffect(
|
||||||
|
level: ServerLevel,
|
||||||
|
state: BlockState,
|
||||||
|
pos: BlockPos
|
||||||
|
) = SwarmProjectionEffect()
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package quaedam.projection.swarm
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import quaedam.projection.ProjectionEffect
|
||||||
|
|
||||||
|
data class SwarmProjectionEffect(
|
||||||
|
var maxCount: Int = 10,
|
||||||
|
var withPlayer: Boolean = true,
|
||||||
|
var withVillager: Boolean = true
|
||||||
|
) : ProjectionEffect() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG_MAX_COUNT = "MaxCount"
|
||||||
|
const val TAG_WITH_PLAYER = "WithPlayer"
|
||||||
|
const val TAG_WITH_VILLAGER = "WithVillager"
|
||||||
|
}
|
||||||
|
|
||||||
|
override val type
|
||||||
|
get() = SwarmProjection.effect.get()!!
|
||||||
|
|
||||||
|
override fun toNbt(tag: CompoundTag) {
|
||||||
|
tag.putInt(TAG_MAX_COUNT, maxCount)
|
||||||
|
tag.putBoolean(TAG_WITH_PLAYER, withPlayer)
|
||||||
|
tag.putBoolean(TAG_WITH_VILLAGER, withVillager)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun fromNbt(tag: CompoundTag) {
|
||||||
|
maxCount = tag.getInt(TAG_MAX_COUNT)
|
||||||
|
withPlayer = tag.getBoolean(TAG_WITH_PLAYER)
|
||||||
|
withVillager = tag.getBoolean(TAG_WITH_VILLAGER)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "quaedam:block/swarm_projection"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
"category.quaedam": "Quaedam",
|
"category.quaedam": "Quaedam",
|
||||||
"block.quaedam.projector": "Projector"
|
"block.quaedam.projector": "Projector",
|
||||||
|
"block.quaedam.skylight_projection": "Skylight Projection",
|
||||||
|
"block.quaedam.swarm_projection": "Swarm Projection"
|
||||||
}
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "quaedam:block/projection",
|
||||||
|
"textures": {
|
||||||
|
"ext": "quaedam:block/swarm_projection"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"parent": "quaedam:block/swarm_projection"
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 400 B |
Loading…
Reference in New Issue
Block a user