From 369ae366a60cd3675f3378649e1c5aaab3e9b1df Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sat, 17 Apr 2021 14:00:11 +0200 Subject: [PATCH] add some abstraction layers to block entities --- .../DefaultBlockEntityMetaDataFactory.kt | 2 ++ .../BlastFurnaceBlockEntity.kt | 5 +++-- .../BrewingStandBlockEntity.kt | 5 +++-- .../block/container/ContainerBlockEntity.kt | 19 +++++++++++++++++++ .../{ => container}/DispenserBlockEntity.kt | 5 +++-- .../{ => container}/DropperBlockEntity.kt | 5 +++-- .../{ => container}/FurnaceBlockEntity.kt | 5 +++-- .../{ => container}/HopperBlockEntity.kt | 5 +++-- .../{ => container}/SmokerBlockEntity.kt | 5 +++-- .../storage}/BarrelBlockEntity.kt | 5 +++-- .../storage}/ChestBlockEntity.kt | 5 +++-- .../storage}/EnderChestBlockEntity.kt | 5 +++-- .../storage}/ShulkerBoxBlockEntity.kt | 5 +++-- .../container/storage/StorageBlockEntity.kt | 19 +++++++++++++++++++ .../storage}/TrappedChestBlockEntity.kt | 5 +++-- 15 files changed, 76 insertions(+), 24 deletions(-) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/BlastFurnaceBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/BrewingStandBlockEntity.kt (84%) create mode 100644 src/main/java/de/bixilon/minosoft/data/entities/block/container/ContainerBlockEntity.kt rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/DispenserBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/DropperBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/FurnaceBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/HopperBlockEntity.kt (85%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container}/SmokerBlockEntity.kt (85%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container/storage}/BarrelBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container/storage}/ChestBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container/storage}/EnderChestBlockEntity.kt (84%) rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container/storage}/ShulkerBoxBlockEntity.kt (84%) create mode 100644 src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/StorageBlockEntity.kt rename src/main/java/de/bixilon/minosoft/data/entities/block/{ => container/storage}/TrappedChestBlockEntity.kt (84%) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/DefaultBlockEntityMetaDataFactory.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/DefaultBlockEntityMetaDataFactory.kt index 01a9efedc..feca1d48e 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/DefaultBlockEntityMetaDataFactory.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/DefaultBlockEntityMetaDataFactory.kt @@ -13,6 +13,8 @@ package de.bixilon.minosoft.data.entities.block +import de.bixilon.minosoft.data.entities.block.container.* +import de.bixilon.minosoft.data.entities.block.container.storage.* import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/BlastFurnaceBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/BlastFurnaceBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/BlastFurnaceBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/BlastFurnaceBlockEntity.kt index c5f4c7695..a26c7b0e5 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/BlastFurnaceBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/BlastFurnaceBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class BlastFurnaceBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class BlastFurnaceBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:blast_furnace") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/BrewingStandBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/BrewingStandBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/BrewingStandBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/BrewingStandBlockEntity.kt index 7b7fe4843..41d6b5f64 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/BrewingStandBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/BrewingStandBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class BrewingStandBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class BrewingStandBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:brewing_stand") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/container/ContainerBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/ContainerBlockEntity.kt new file mode 100644 index 000000000..4d0b2cd03 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/ContainerBlockEntity.kt @@ -0,0 +1,19 @@ +/* + * 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 . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.entities.block.container + +import de.bixilon.minosoft.data.entities.block.BlockEntity +import de.bixilon.minosoft.protocol.network.connection.PlayConnection + +abstract class ContainerBlockEntity(connection: PlayConnection) : BlockEntity(connection) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/DispenserBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/DispenserBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/DispenserBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/DispenserBlockEntity.kt index 867e3f4c8..5849cb098 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/DispenserBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/DispenserBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class DispenserBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class DispenserBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:dispenser") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/DropperBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/DropperBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/DropperBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/DropperBlockEntity.kt index ddda8a645..b2b4578d9 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/DropperBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/DropperBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class DropperBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class DropperBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:dropper") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/FurnaceBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/FurnaceBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/FurnaceBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/FurnaceBlockEntity.kt index 48b7a74d8..8a76c1e62 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/FurnaceBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/FurnaceBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class FurnaceBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class FurnaceBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:furnace") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/HopperBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/HopperBlockEntity.kt similarity index 85% rename from src/main/java/de/bixilon/minosoft/data/entities/block/HopperBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/HopperBlockEntity.kt index 86dfae9fe..5e9f7f817 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/HopperBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/HopperBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class HopperBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class HopperBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/SmokerBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/SmokerBlockEntity.kt similarity index 85% rename from src/main/java/de/bixilon/minosoft/data/entities/block/SmokerBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/SmokerBlockEntity.kt index 82c5896cb..9ac9cd754 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/SmokerBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/SmokerBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class SmokerBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class SmokerBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:smoker") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/BarrelBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/BarrelBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/BarrelBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/BarrelBlockEntity.kt index 55dd3b5b7..16a77a840 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/BarrelBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/BarrelBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container.storage +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class BarrelBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class BarrelBlockEntity(connection: PlayConnection) : StorageBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:barrel") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/ChestBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/ChestBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt index ebd467134..dfdd9475c 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/ChestBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container.storage +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class ChestBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class ChestBlockEntity(connection: PlayConnection) : StorageBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:chest") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/EnderChestBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/EnderChestBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/EnderChestBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/EnderChestBlockEntity.kt index da7406def..1763d19ac 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/EnderChestBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/EnderChestBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container.storage +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class EnderChestBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class EnderChestBlockEntity(connection: PlayConnection) : StorageBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:ender_chest") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/ShulkerBoxBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ShulkerBoxBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/ShulkerBoxBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ShulkerBoxBlockEntity.kt index 945931e68..0edf78266 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/ShulkerBoxBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ShulkerBoxBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container.storage +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class ShulkerBoxBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class ShulkerBoxBlockEntity(connection: PlayConnection) : StorageBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:shulker_box") diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/StorageBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/StorageBlockEntity.kt new file mode 100644 index 000000000..2f433ba7c --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/StorageBlockEntity.kt @@ -0,0 +1,19 @@ +/* + * 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 . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.entities.block.container.storage + +import de.bixilon.minosoft.data.entities.block.container.ContainerBlockEntity +import de.bixilon.minosoft.protocol.network.connection.PlayConnection + +abstract class StorageBlockEntity(connection: PlayConnection) : ContainerBlockEntity(connection) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/TrappedChestBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/TrappedChestBlockEntity.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/data/entities/block/TrappedChestBlockEntity.kt rename to src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/TrappedChestBlockEntity.kt index 09221fdc1..d457357e2 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/TrappedChestBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/TrappedChestBlockEntity.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.block +package de.bixilon.minosoft.data.entities.block.container.storage +import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.PlayConnection -class TrappedChestBlockEntity(connection: PlayConnection) : BlockEntity(connection) { +class TrappedChestBlockEntity(connection: PlayConnection) : StorageBlockEntity(connection) { companion object : BlockEntityFactory { override val RESOURCE_LOCATION: ResourceLocation = ResourceLocation("minecraft:trapped_chest")