mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 19:05:02 -04:00
item registry: buckets
This commit is contained in:
parent
8c772f0c18
commit
e4798f5ba4
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.data.registries.integrated
|
package de.bixilon.minosoft.data.registries.integrated
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.registries.enchantment.tool.WeaponEnchantment
|
import de.bixilon.minosoft.data.registries.enchantment.tool.WeaponEnchantment
|
||||||
|
import de.bixilon.minosoft.data.registries.item.items.food.AppleItem
|
||||||
import de.bixilon.minosoft.test.IT
|
import de.bixilon.minosoft.test.IT
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import org.testng.Assert
|
import org.testng.Assert
|
||||||
@ -27,4 +28,11 @@ class IntegratedRegistryIT {
|
|||||||
val current = IT.VERSION.registries!!.enchantmentRegistry["minecraft:sharpness".toResourceLocation()]
|
val current = IT.VERSION.registries!!.enchantmentRegistry["minecraft:sharpness".toResourceLocation()]
|
||||||
Assert.assertSame(current, expected)
|
Assert.assertSame(current, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun goldenApple() {
|
||||||
|
val current = IT.VERSION.registries!!.itemRegistry["minecraft:golden_apple".toResourceLocation()]
|
||||||
|
if (current !is AppleItem.GoldenAppleItem) {
|
||||||
|
Assert.fail("Not an golden apple: $current")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,19 +14,20 @@
|
|||||||
package de.bixilon.minosoft.data.registries.items
|
package de.bixilon.minosoft.data.registries.items
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.item.MinecraftItems
|
import de.bixilon.minosoft.data.registries.item.items.food.AppleItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.Item
|
import org.testng.Assert
|
||||||
import org.testng.annotations.Test
|
import org.testng.annotations.Test
|
||||||
|
|
||||||
@Test(groups = ["item"])
|
@Test(groups = ["item"])
|
||||||
class AppleTest : ItemTest<Item>() {
|
class AppleTest : ItemTest<AppleItem>() {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
AppleTestO = this
|
AppleTestO = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getApple() {
|
fun getApple() {
|
||||||
super.retrieveItem(MinecraftItems.APPLE)
|
super.retrieveItem(AppleItem)
|
||||||
|
Assert.assertTrue(this.item is AppleItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ package de.bixilon.minosoft.data.registries.items
|
|||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.registries.item.factory.ItemFactory
|
||||||
import de.bixilon.minosoft.data.registries.item.items.Item
|
import de.bixilon.minosoft.data.registries.item.items.Item
|
||||||
import de.bixilon.minosoft.test.IT
|
import de.bixilon.minosoft.test.IT
|
||||||
import de.bixilon.minosoft.test.IT.reference
|
import de.bixilon.minosoft.test.IT.reference
|
||||||
@ -36,4 +37,12 @@ abstract class ItemTest<T : Item> {
|
|||||||
assertEquals(item.resourceLocation, name)
|
assertEquals(item.resourceLocation, name)
|
||||||
this.item = item.unsafeCast()
|
this.item = item.unsafeCast()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun retrieveItem(factory: ItemFactory<T>) {
|
||||||
|
val item = IT.VERSION.registries!!.itemRegistry[factory]
|
||||||
|
Assert.assertNotNull(item)
|
||||||
|
item!!
|
||||||
|
assertEquals(item.resourceLocation, factory.resourceLocation)
|
||||||
|
this.item = item
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,20 +15,20 @@ package de.bixilon.minosoft.data.registries.items
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.fluid.lava.LavaFluid
|
import de.bixilon.minosoft.data.registries.fluid.lava.LavaFluid
|
||||||
import de.bixilon.minosoft.data.registries.item.MinecraftItems
|
import de.bixilon.minosoft.data.registries.item.items.bucket.FilledBucketItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.bucket.BucketItem
|
|
||||||
import org.testng.Assert.assertTrue
|
import org.testng.Assert.assertTrue
|
||||||
import org.testng.annotations.Test
|
import org.testng.annotations.Test
|
||||||
|
|
||||||
@Test(groups = ["item"])
|
@Test(groups = ["item"])
|
||||||
class LavaBucketTest : ItemTest<BucketItem>() {
|
class LavaBucketTest : ItemTest<FilledBucketItem.LavaBucketItem>() {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
LavaBucketTest0 = this
|
LavaBucketTest0 = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLava() {
|
fun getLava() {
|
||||||
super.retrieveItem(MinecraftItems.LAVA_BUCKET)
|
super.retrieveItem(FilledBucketItem.LavaBucketItem)
|
||||||
|
assertTrue(item is FilledBucketItem.LavaBucketItem)
|
||||||
assertTrue(item.fluid is LavaFluid)
|
assertTrue(item.fluid is LavaFluid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,20 +15,20 @@ package de.bixilon.minosoft.data.registries.items
|
|||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||||
import de.bixilon.minosoft.data.registries.fluid.water.WaterFluid
|
import de.bixilon.minosoft.data.registries.fluid.water.WaterFluid
|
||||||
import de.bixilon.minosoft.data.registries.item.MinecraftItems
|
import de.bixilon.minosoft.data.registries.item.items.bucket.FilledBucketItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.bucket.BucketItem
|
|
||||||
import org.testng.Assert.assertTrue
|
import org.testng.Assert.assertTrue
|
||||||
import org.testng.annotations.Test
|
import org.testng.annotations.Test
|
||||||
|
|
||||||
@Test(groups = ["item"])
|
@Test(groups = ["item"])
|
||||||
class WaterBucketTest : ItemTest<BucketItem>() {
|
class WaterBucketTest : ItemTest<FilledBucketItem.WaterBucketItem>() {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
WaterBucketTest0 = this
|
WaterBucketTest0 = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getWater() {
|
fun getWater() {
|
||||||
super.retrieveItem(MinecraftItems.WATER_BUCKET)
|
super.retrieveItem(FilledBucketItem.WaterBucketItem)
|
||||||
|
assertTrue(item is FilledBucketItem.WaterBucketItem)
|
||||||
assertTrue(item.fluid is WaterFluid)
|
assertTrue(item.fluid is WaterFluid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,15 +15,14 @@ package de.bixilon.minosoft.data.container.slots
|
|||||||
|
|
||||||
import de.bixilon.minosoft.data.container.Container
|
import de.bixilon.minosoft.data.container.Container
|
||||||
import de.bixilon.minosoft.data.container.stack.ItemStack
|
import de.bixilon.minosoft.data.container.stack.ItemStack
|
||||||
import de.bixilon.minosoft.data.registries.fluid.lava.LavaFluid
|
import de.bixilon.minosoft.data.registries.item.items.bucket.FilledBucketItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.bucket.BucketItem
|
|
||||||
|
|
||||||
object FuelSlotType : SlotType {
|
object FuelSlotType : SlotType {
|
||||||
|
|
||||||
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean {
|
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean {
|
||||||
val item = stack.item.item
|
val item = stack.item.item
|
||||||
|
|
||||||
if (item is BucketItem && item.fluid is LavaFluid) {
|
if (item is FilledBucketItem.LavaBucketItem) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
val fuelTime = container.connection.registries.misc.getFuelTime(item)
|
val fuelTime = container.connection.registries.misc.getFuelTime(item)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Minosoft
|
* Minosoft
|
||||||
* Copyright (C) 2021 Moritz Zwerger
|
* Copyright (C) 2020-2022 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 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.
|
||||||
*
|
*
|
||||||
@ -17,6 +17,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
|||||||
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||||
import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock
|
import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
|
import de.bixilon.minosoft.util.KUtil.minecraft
|
||||||
|
|
||||||
class EmptyFluid(
|
class EmptyFluid(
|
||||||
resourceLocation: ResourceLocation,
|
resourceLocation: ResourceLocation,
|
||||||
@ -37,6 +38,7 @@ class EmptyFluid(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object : FluidFactory<EmptyFluid> {
|
companion object : FluidFactory<EmptyFluid> {
|
||||||
|
override val resourceLocation = minecraft("empty")
|
||||||
|
|
||||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): EmptyFluid {
|
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): EmptyFluid {
|
||||||
return EmptyFluid(resourceLocation, registries, data)
|
return EmptyFluid(resourceLocation, registries, data)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Minosoft
|
* Minosoft
|
||||||
* Copyright (C) 2021 Moritz Zwerger
|
* Copyright (C) 2020-2022 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 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.
|
||||||
*
|
*
|
||||||
@ -14,9 +14,10 @@
|
|||||||
package de.bixilon.minosoft.data.registries.fluid
|
package de.bixilon.minosoft.data.registries.fluid
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.registries.ResourceLocationAble
|
||||||
import de.bixilon.minosoft.data.registries.factory.clazz.ClassFactory
|
import de.bixilon.minosoft.data.registries.factory.clazz.ClassFactory
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
|
|
||||||
interface FluidFactory<T : Fluid> : ClassFactory<T> {
|
interface FluidFactory<T : Fluid> : ClassFactory<T>, ResourceLocationAble {
|
||||||
fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): T
|
fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): T
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.horizontal
|
|||||||
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.toVec3d
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
|
import de.bixilon.minosoft.util.KUtil
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -95,6 +96,7 @@ class LavaFluid(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object : FluidFactory<LavaFluid>, MultiClassFactory<LavaFluid> {
|
companion object : FluidFactory<LavaFluid>, MultiClassFactory<LavaFluid> {
|
||||||
|
override val resourceLocation = KUtil.minecraft("lava")
|
||||||
override val ALIASES: Set<String> = setOf("LavaFluid\$Flowing", "LavaFluid\$Still")
|
override val ALIASES: Set<String> = setOf("LavaFluid\$Flowing", "LavaFluid\$Still")
|
||||||
|
|
||||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): LavaFluid {
|
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): LavaFluid {
|
||||||
|
@ -34,6 +34,7 @@ import de.bixilon.minosoft.gui.rendering.tint.WaterTintProvider
|
|||||||
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.toVec3d
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
|
import de.bixilon.minosoft.util.KUtil.minecraft
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
@ -128,6 +129,7 @@ class WaterFluid(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object : FluidFactory<WaterFluid>, MultiClassFactory<WaterFluid> {
|
companion object : FluidFactory<WaterFluid>, MultiClassFactory<WaterFluid> {
|
||||||
|
override val resourceLocation = minecraft("water")
|
||||||
private const val VELOCITY_MULTIPLIER = 0.014
|
private const val VELOCITY_MULTIPLIER = 0.014
|
||||||
override val ALIASES: Set<String> = setOf("WaterFluid\$Flowing", "WaterFluid\$Still")
|
override val ALIASES: Set<String> = setOf("WaterFluid\$Flowing", "WaterFluid\$Still")
|
||||||
|
|
||||||
|
@ -13,7 +13,9 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries.item
|
package de.bixilon.minosoft.data.registries.item
|
||||||
|
|
||||||
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
import de.bixilon.minosoft.data.registries.item.factory.ItemFactories
|
import de.bixilon.minosoft.data.registries.item.factory.ItemFactories
|
||||||
|
import de.bixilon.minosoft.data.registries.item.factory.ItemFactory
|
||||||
import de.bixilon.minosoft.data.registries.item.items.Item
|
import de.bixilon.minosoft.data.registries.item.items.Item
|
||||||
import de.bixilon.minosoft.data.registries.item.items.PixLyzerItem
|
import de.bixilon.minosoft.data.registries.item.items.PixLyzerItem
|
||||||
import de.bixilon.minosoft.data.registries.registries.registry.MetaTypes
|
import de.bixilon.minosoft.data.registries.registries.registry.MetaTypes
|
||||||
@ -38,4 +40,9 @@ class ItemRegistry(
|
|||||||
super.getOrNull(id)
|
super.getOrNull(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
operator fun <T : Item> get(factory: ItemFactory<T>): T? {
|
||||||
|
val item = this[factory.resourceLocation] ?: return null
|
||||||
|
return item.unsafeCast()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,6 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
|||||||
object MinecraftItems {
|
object MinecraftItems {
|
||||||
val LEATHER_BOOTS = "minecraft:leather_boots".toResourceLocation()
|
val LEATHER_BOOTS = "minecraft:leather_boots".toResourceLocation()
|
||||||
val LAPISLAZULI = "minecraft:lapis_lazuli".toResourceLocation()
|
val LAPISLAZULI = "minecraft:lapis_lazuli".toResourceLocation()
|
||||||
val APPLE = "minecraft:apple".toResourceLocation()
|
|
||||||
val EGG = "minecraft:egg".toResourceLocation()
|
val EGG = "minecraft:egg".toResourceLocation()
|
||||||
val LAVA_BUCKET = "minecraft:lava_bucket".toResourceLocation()
|
|
||||||
val WATER_BUCKET = "minecraft:water_bucket".toResourceLocation()
|
|
||||||
val COAL = "minecraft:coal".toResourceLocation()
|
val COAL = "minecraft:coal".toResourceLocation()
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
|||||||
import de.bixilon.minosoft.data.registries.factory.DefaultFactory
|
import de.bixilon.minosoft.data.registries.factory.DefaultFactory
|
||||||
import de.bixilon.minosoft.data.registries.integrated.IntegratedRegistry
|
import de.bixilon.minosoft.data.registries.integrated.IntegratedRegistry
|
||||||
import de.bixilon.minosoft.data.registries.item.items.Item
|
import de.bixilon.minosoft.data.registries.item.items.Item
|
||||||
|
import de.bixilon.minosoft.data.registries.item.items.bucket.BucketItem
|
||||||
|
import de.bixilon.minosoft.data.registries.item.items.bucket.FilledBucketItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.food.AppleItem
|
import de.bixilon.minosoft.data.registries.item.items.food.AppleItem
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
|
|
||||||
@ -24,6 +26,10 @@ object ItemFactories : DefaultFactory<ItemFactory<*>>(
|
|||||||
AppleItem,
|
AppleItem,
|
||||||
AppleItem.GoldenAppleItem,
|
AppleItem.GoldenAppleItem,
|
||||||
AppleItem.EnchantedGoldenAppleItem,
|
AppleItem.EnchantedGoldenAppleItem,
|
||||||
|
|
||||||
|
BucketItem.EmptyBucketItem,
|
||||||
|
FilledBucketItem.LavaBucketItem,
|
||||||
|
FilledBucketItem.WaterBucketItem,
|
||||||
), IntegratedRegistry<Item> {
|
), IntegratedRegistry<Item> {
|
||||||
|
|
||||||
override fun build(name: ResourceLocation, registries: Registries): Item? {
|
override fun build(name: ResourceLocation, registries: Registries): Item? {
|
||||||
|
@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.registries.factory.clazz.DefaultClassFactory
|
|||||||
import de.bixilon.minosoft.data.registries.item.items.*
|
import de.bixilon.minosoft.data.registries.item.items.*
|
||||||
import de.bixilon.minosoft.data.registries.item.items.armor.*
|
import de.bixilon.minosoft.data.registries.item.items.armor.*
|
||||||
import de.bixilon.minosoft.data.registries.item.items.block.*
|
import de.bixilon.minosoft.data.registries.item.items.block.*
|
||||||
import de.bixilon.minosoft.data.registries.item.items.bucket.BucketItem
|
|
||||||
import de.bixilon.minosoft.data.registries.item.items.throwable.*
|
import de.bixilon.minosoft.data.registries.item.items.throwable.*
|
||||||
import de.bixilon.minosoft.data.registries.item.items.throwable.potion.LingeringPotionItem
|
import de.bixilon.minosoft.data.registries.item.items.throwable.potion.LingeringPotionItem
|
||||||
import de.bixilon.minosoft.data.registries.item.items.throwable.potion.PotionItem
|
import de.bixilon.minosoft.data.registries.item.items.throwable.potion.PotionItem
|
||||||
@ -33,7 +32,6 @@ object PixLyzerItemFactories : DefaultClassFactory<PixLyzerItemFactory<*>>(
|
|||||||
ScaffoldingItem,
|
ScaffoldingItem,
|
||||||
|
|
||||||
SpawnEggItem,
|
SpawnEggItem,
|
||||||
BucketItem,
|
|
||||||
DyeItem,
|
DyeItem,
|
||||||
HorseArmorItem,
|
HorseArmorItem,
|
||||||
ShieldItem,
|
ShieldItem,
|
||||||
|
@ -13,29 +13,24 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.data.registries.item.items.bucket
|
package de.bixilon.minosoft.data.registries.item.items.bucket
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
import de.bixilon.minosoft.data.registries.item.factory.ItemFactory
|
||||||
import de.bixilon.minosoft.data.registries.item.factory.PixLyzerItemFactory
|
import de.bixilon.minosoft.data.registries.item.items.Item
|
||||||
import de.bixilon.minosoft.data.registries.item.items.PixLyzerItem
|
import de.bixilon.minosoft.data.registries.item.items.fluid.FluidDrainable
|
||||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
|
import de.bixilon.minosoft.util.KUtil.minecraft
|
||||||
|
|
||||||
|
|
||||||
open class BucketItem(
|
abstract class BucketItem(
|
||||||
resourceLocation: ResourceLocation,
|
resourceLocation: ResourceLocation,
|
||||||
registries: Registries,
|
) : Item(resourceLocation) {
|
||||||
data: Map<String, Any>,
|
|
||||||
) : PixLyzerItem(resourceLocation, registries, data) {
|
|
||||||
val fluid: Fluid = unsafeNull()
|
|
||||||
|
|
||||||
init {
|
open class EmptyBucketItem(resourceLocation: ResourceLocation = this.resourceLocation) : BucketItem(resourceLocation), FluidDrainable {
|
||||||
this::fluid.inject(data["bucked_fluid_type"])
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object : PixLyzerItemFactory<BucketItem> {
|
companion object : ItemFactory<BucketItem> {
|
||||||
|
override val resourceLocation = minecraft("bucket")
|
||||||
|
|
||||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): BucketItem {
|
override fun build(registries: Registries) = EmptyBucketItem()
|
||||||
return BucketItem(resourceLocation, registries, data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2020-2022 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.item.items.bucket
|
||||||
|
|
||||||
|
import de.bixilon.kutil.cast.CastUtil
|
||||||
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
||||||
|
import de.bixilon.minosoft.data.registries.fluid.FluidFactory
|
||||||
|
import de.bixilon.minosoft.data.registries.fluid.lava.LavaFluid
|
||||||
|
import de.bixilon.minosoft.data.registries.fluid.water.WaterFluid
|
||||||
|
import de.bixilon.minosoft.data.registries.item.factory.ItemFactory
|
||||||
|
import de.bixilon.minosoft.data.registries.item.items.fluid.FluidItem
|
||||||
|
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||||
|
import de.bixilon.minosoft.util.KUtil.minecraft
|
||||||
|
|
||||||
|
open class FilledBucketItem<T : Fluid>(
|
||||||
|
resourceLocation: ResourceLocation,
|
||||||
|
factory: FluidFactory<T>,
|
||||||
|
) : BucketItem(resourceLocation), FluidItem {
|
||||||
|
override val fluid: Fluid = CastUtil.unsafeNull()
|
||||||
|
|
||||||
|
init {
|
||||||
|
this::fluid.inject(factory.resourceLocation)
|
||||||
|
}
|
||||||
|
|
||||||
|
open class LavaBucketItem(resourceLocation: ResourceLocation = this.resourceLocation) : FilledBucketItem<LavaFluid>(resourceLocation, LavaFluid) {
|
||||||
|
|
||||||
|
companion object : ItemFactory<LavaBucketItem> {
|
||||||
|
override val resourceLocation = minecraft("lava_bucket")
|
||||||
|
|
||||||
|
override fun build(registries: Registries) = LavaBucketItem()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open class WaterBucketItem(resourceLocation: ResourceLocation = this.resourceLocation) : FilledBucketItem<WaterFluid>(resourceLocation, WaterFluid) {
|
||||||
|
|
||||||
|
companion object : ItemFactory<WaterBucketItem> {
|
||||||
|
override val resourceLocation = minecraft("water_bucket")
|
||||||
|
|
||||||
|
override fun build(registries: Registries) = WaterBucketItem()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2020-2022 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.item.items.fluid
|
||||||
|
|
||||||
|
interface FluidDrainable
|
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2020-2022 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.item.items.fluid
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
||||||
|
|
||||||
|
interface FluidItem {
|
||||||
|
val fluid: Fluid
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user