From 8c428d83833bb90a8abf70df4570e87fdf5ac087 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sat, 18 Nov 2023 15:31:39 +0100 Subject: [PATCH] add 1.21 entities and block states Fixes the loading of those versions Hacky added, but deprecated. todo --- .../minosoft/data/entities/entities/Breeze.kt | 33 +++++++++++++++++++ .../data/entities/entities/WindCharge.kt | 33 +++++++++++++++++++ .../entities/display/BlockDisplayEntity.kt | 1 + .../entities/display/DisplayEntity.kt | 1 + .../entities/display/ItemDisplayEntity.kt | 1 + .../entities/display/TextDisplayEntity.kt | 1 + .../blocks/properties/BlockProperties.kt | 2 ++ .../blocks/properties/TrialSpawnerStates.kt | 32 ++++++++++++++++++ .../entities/DefaultEntityFactories.kt | 1 + 9 files changed, 105 insertions(+) create mode 100644 src/main/java/de/bixilon/minosoft/data/entities/entities/Breeze.kt create mode 100644 src/main/java/de/bixilon/minosoft/data/entities/entities/WindCharge.kt create mode 100644 src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/TrialSpawnerStates.kt diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/Breeze.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/Breeze.kt new file mode 100644 index 000000000..976408b95 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/Breeze.kt @@ -0,0 +1,33 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 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.entities + +import de.bixilon.kotlinglm.vec3.Vec3d +import de.bixilon.minosoft.data.entities.EntityRotation +import de.bixilon.minosoft.data.entities.data.EntityData +import de.bixilon.minosoft.data.registries.entities.EntityFactory +import de.bixilon.minosoft.data.registries.entities.EntityType +import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection + +@Deprecated("TODO") +class Breeze(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : Entity(connection, entityType, data, position, rotation) { + + companion object : EntityFactory { + override val identifier = minecraft("breeze") + + override fun build(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation): Breeze { + return Breeze(connection, entityType, data, position, rotation) + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/WindCharge.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/WindCharge.kt new file mode 100644 index 000000000..37f4ee9dc --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/WindCharge.kt @@ -0,0 +1,33 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 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.entities + +import de.bixilon.kotlinglm.vec3.Vec3d +import de.bixilon.minosoft.data.entities.EntityRotation +import de.bixilon.minosoft.data.entities.data.EntityData +import de.bixilon.minosoft.data.registries.entities.EntityFactory +import de.bixilon.minosoft.data.registries.entities.EntityType +import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection + +@Deprecated("TODO") +class WindCharge(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : Entity(connection, entityType, data, position, rotation) { + + companion object : EntityFactory { + override val identifier = minecraft("wind_charge") + + override fun build(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation): WindCharge { + return WindCharge(connection, entityType, data, position, rotation) + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/BlockDisplayEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/BlockDisplayEntity.kt index bd1708b09..a1bdac03e 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/BlockDisplayEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/BlockDisplayEntity.kt @@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +@Deprecated("TODO") class BlockDisplayEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : DisplayEntity(connection, entityType, data, position, rotation) { companion object : EntityFactory { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/DisplayEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/DisplayEntity.kt index b35ee3050..4c2c7fe19 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/DisplayEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/DisplayEntity.kt @@ -20,6 +20,7 @@ import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.registries.entities.EntityType import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +@Deprecated("TODO") abstract class DisplayEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : Entity(connection, entityType, data, position, rotation) { private companion object { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/ItemDisplayEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/ItemDisplayEntity.kt index eff69d5df..b06ffe3ea 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/ItemDisplayEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/ItemDisplayEntity.kt @@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +@Deprecated("TODO") class ItemDisplayEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : DisplayEntity(connection, entityType, data, position, rotation) { companion object : EntityFactory { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/TextDisplayEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/TextDisplayEntity.kt index cde8d2afe..152cb6daa 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/display/TextDisplayEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/display/TextDisplayEntity.kt @@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +@Deprecated("TODO") class TextDisplayEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : DisplayEntity(connection, entityType, data, position, rotation) { companion object : EntityFactory { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt index 3c7b8ce3b..cc15bb26c 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/BlockProperties.kt @@ -147,6 +147,8 @@ object BlockProperties { val CRACKED = BooleanProperty("cracked").register() val CRAFTING = BooleanProperty("crafting").register() + val TRIAL_SPAWNER_STATE = EnumProperty("trial_spawner_state", TrialSpawnerStates).register() + @Deprecated("should not exist") fun > T.register(): T { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/TrialSpawnerStates.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/TrialSpawnerStates.kt new file mode 100644 index 000000000..858f4fea6 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/properties/TrialSpawnerStates.kt @@ -0,0 +1,32 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 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.registries.blocks.properties + +import de.bixilon.kutil.enums.EnumUtil +import de.bixilon.kutil.enums.ValuesEnum + +enum class TrialSpawnerStates { + ACTIVE, + COOLDOWN, + EJECTING_REWARD, + INACTIVE, + WAITING_FOR_PLAYERS, + WAITING_FOR_REWARD_EJECTION, + ; + + companion object : ValuesEnum { + override val VALUES: Array = values() + override val NAME_MAP: Map = EnumUtil.getEnumValues(VALUES) + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/entities/DefaultEntityFactories.kt b/src/main/java/de/bixilon/minosoft/data/registries/entities/DefaultEntityFactories.kt index 21ccea96f..dd4b91bac 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/entities/DefaultEntityFactories.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/entities/DefaultEntityFactories.kt @@ -182,6 +182,7 @@ object DefaultEntityFactories : DefaultFactory>( InteractionEntity, Sniffer, + Breeze, WindCharge, ) { fun buildEntity(factory: EntityFactory, connection: PlayConnection, position: Vec3d, rotation: EntityRotation, data: EntityData?, uuid: UUID?, versionId: Int): Entity? {