mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 09:56:37 -04:00
data: wip: Improve item storing
This commit is contained in:
parent
9780ac1d1a
commit
4e918d7c6f
@ -15,8 +15,8 @@ package de.bixilon.minosoft.data.entities.entities.animal.horse
|
|||||||
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
||||||
import de.bixilon.minosoft.data.entities.EntityRotation
|
import de.bixilon.minosoft.data.entities.EntityRotation
|
||||||
import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction
|
import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction
|
||||||
import de.bixilon.minosoft.data.mappings.Item
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.Item
|
||||||
import de.bixilon.minosoft.protocol.network.Connection
|
import de.bixilon.minosoft.protocol.network.Connection
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
||||||
import glm_.vec3.Vec3
|
import glm_.vec3.Vec3
|
||||||
|
@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.entities.EntityMetaDataFields;
|
|||||||
import de.bixilon.minosoft.data.entities.EntityRotation;
|
import de.bixilon.minosoft.data.entities.EntityRotation;
|
||||||
import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction;
|
import de.bixilon.minosoft.data.entities.entities.EntityMetaDataFunction;
|
||||||
import de.bixilon.minosoft.data.entities.entities.LivingEntity;
|
import de.bixilon.minosoft.data.entities.entities.LivingEntity;
|
||||||
import de.bixilon.minosoft.data.mappings.Item;
|
import de.bixilon.minosoft.data.mappings.items.Item;
|
||||||
import de.bixilon.minosoft.data.player.Hands;
|
import de.bixilon.minosoft.data.player.Hands;
|
||||||
import de.bixilon.minosoft.protocol.network.Connection;
|
import de.bixilon.minosoft.protocol.network.Connection;
|
||||||
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
|
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
|
||||||
@ -98,7 +98,7 @@ public class PlayerEntity extends LivingEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Gamemodes getGamemode() {
|
public Gamemodes getGamemode() {
|
||||||
return gamemode;
|
return this.gamemode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGamemode(Gamemodes gamemode) {
|
public void setGamemode(Gamemodes gamemode) {
|
||||||
|
@ -122,10 +122,21 @@ public class InventorySlots {
|
|||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static EntityInventorySlots get(String name) {
|
||||||
|
return switch (name) {
|
||||||
|
case "mainhand" -> MAIN_HAND;
|
||||||
|
case "offhand" -> OFF_HAND;
|
||||||
|
case "feet" -> BOOTS;
|
||||||
|
case "legs" -> LEGGINGS;
|
||||||
|
case "chest" -> CHESTPLATE;
|
||||||
|
case "head" -> HELMET;
|
||||||
|
default -> throw new IllegalArgumentException("Invalid equipment slot " + name);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface InventoryInterface {
|
public interface InventoryInterface {
|
||||||
int getId(int versionId);
|
int getId(int versionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
package de.bixilon.minosoft.data.inventory;
|
package de.bixilon.minosoft.data.inventory;
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.Enchantment;
|
import de.bixilon.minosoft.data.mappings.Enchantment;
|
||||||
import de.bixilon.minosoft.data.mappings.Item;
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation;
|
import de.bixilon.minosoft.data.mappings.ResourceLocation;
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.Item;
|
||||||
import de.bixilon.minosoft.data.mappings.versions.Version;
|
import de.bixilon.minosoft.data.mappings.versions.Version;
|
||||||
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
|
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
|
||||||
import de.bixilon.minosoft.data.text.ChatComponent;
|
import de.bixilon.minosoft.data.text.ChatComponent;
|
||||||
|
@ -13,10 +13,10 @@
|
|||||||
package de.bixilon.minosoft.data.mappings.blocks
|
package de.bixilon.minosoft.data.mappings.blocks
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import de.bixilon.minosoft.data.mappings.Item
|
|
||||||
import de.bixilon.minosoft.data.mappings.RegistryItem
|
import de.bixilon.minosoft.data.mappings.RegistryItem
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocationDeserializer
|
import de.bixilon.minosoft.data.mappings.ResourceLocationDeserializer
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.Item
|
||||||
import de.bixilon.minosoft.data.mappings.versions.VersionMapping
|
import de.bixilon.minosoft.data.mappings.versions.VersionMapping
|
||||||
import de.bixilon.minosoft.data.text.RGBColor
|
import de.bixilon.minosoft.data.text.RGBColor
|
||||||
import de.bixilon.minosoft.gui.rendering.TintColorCalculator
|
import de.bixilon.minosoft.gui.rendering.TintColorCalculator
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Minosoft
|
* Minosoft
|
||||||
* Copyright (C) 2020 Moritz Zwerger
|
* 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 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.
|
||||||
*
|
*
|
||||||
@ -10,31 +10,34 @@
|
|||||||
*
|
*
|
||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
*/
|
*/
|
||||||
package de.bixilon.minosoft.data.mappings
|
package de.bixilon.minosoft.data.mappings.items
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import de.bixilon.minosoft.data.Rarities
|
import de.bixilon.minosoft.data.Rarities
|
||||||
|
import de.bixilon.minosoft.data.mappings.RegistryItem
|
||||||
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.mappings.ResourceLocationDeserializer
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.armor.ArmorItem
|
||||||
import de.bixilon.minosoft.data.mappings.versions.VersionMapping
|
import de.bixilon.minosoft.data.mappings.versions.VersionMapping
|
||||||
|
|
||||||
data class Item(
|
open class Item(
|
||||||
override val resourceLocation: ResourceLocation,
|
override val resourceLocation: ResourceLocation,
|
||||||
val rarity: Rarities = Rarities.COMMON,
|
data: JsonObject,
|
||||||
val maxStackSize: Int = 64,
|
|
||||||
val maxDamage: Int = 0,
|
|
||||||
val isFireResistant: Boolean = false,
|
|
||||||
val descriptionId: String?,
|
|
||||||
) : RegistryItem {
|
) : RegistryItem {
|
||||||
|
val rarity: Rarities = data["rarity"]?.asInt?.let { Rarities.VALUES[it] } ?: Rarities.COMMON
|
||||||
|
val maxStackSize: Int = data["max_stack_size"]?.asInt ?: 64
|
||||||
|
val maxDamage: Int = data["max_damage"]?.asInt ?: 64
|
||||||
|
val isFireResistant: Boolean = data["is_fire_resistant"]?.asBoolean ?: false
|
||||||
|
val translationKey: String? = data["description_id"]?.asString
|
||||||
|
|
||||||
companion object : ResourceLocationDeserializer<Item> {
|
companion object : ResourceLocationDeserializer<Item> {
|
||||||
override fun deserialize(mappings: VersionMapping, resourceLocation: ResourceLocation, data: JsonObject): Item {
|
override fun deserialize(mappings: VersionMapping, resourceLocation: ResourceLocation, data: JsonObject): Item {
|
||||||
return Item(
|
return when (data["class"].asString) {
|
||||||
resourceLocation = resourceLocation,
|
"ArmorItem" -> ArmorItem(resourceLocation, data)
|
||||||
rarity = data["rarity"]?.asInt?.let { Rarities.VALUES[it] } ?: Rarities.COMMON,
|
// "Item" -> Item(resourceLocation, data)
|
||||||
maxStackSize = data["max_stack_size"]?.asInt ?: 64,
|
// else -> TODO("Can not find item class: ${data["class"].asString}")
|
||||||
maxDamage = data["max_damage"]?.asInt ?: 0,
|
else -> Item(resourceLocation, data)
|
||||||
isFireResistant = data["is_fire_resistant"]?.asBoolean ?: false,
|
}
|
||||||
descriptionId = data["description_id"]?.asString,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,7 +14,6 @@
|
|||||||
package de.bixilon.minosoft.data.mappings.items
|
package de.bixilon.minosoft.data.mappings.items
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import de.bixilon.minosoft.data.mappings.Item
|
|
||||||
import de.bixilon.minosoft.data.mappings.Registry
|
import de.bixilon.minosoft.data.mappings.Registry
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocationDeserializer
|
import de.bixilon.minosoft.data.mappings.ResourceLocationDeserializer
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* 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.mappings.items.armor
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject
|
||||||
|
import de.bixilon.minosoft.data.inventory.InventorySlots
|
||||||
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.Item
|
||||||
|
|
||||||
|
open class ArmorItem(resourceLocation: ResourceLocation, data: JsonObject) : Item(resourceLocation, data) {
|
||||||
|
val protection = data["defense"].asFloat
|
||||||
|
val toughness = data["toughness"].asFloat
|
||||||
|
val equipmentSlot = data["equipment_slot"].asString.let { InventorySlots.EntityInventorySlots.get(it) }
|
||||||
|
val knockbackResistance = data["knockback_resistance"]?.asFloat ?: 0.0f
|
||||||
|
}
|
@ -25,6 +25,7 @@ import de.bixilon.minosoft.data.mappings.biomes.BiomeCategory
|
|||||||
import de.bixilon.minosoft.data.mappings.biomes.BiomePrecipitation
|
import de.bixilon.minosoft.data.mappings.biomes.BiomePrecipitation
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.Block
|
import de.bixilon.minosoft.data.mappings.blocks.Block
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
import de.bixilon.minosoft.data.mappings.blocks.BlockState
|
||||||
|
import de.bixilon.minosoft.data.mappings.items.Item
|
||||||
import de.bixilon.minosoft.data.mappings.items.ItemRegistry
|
import de.bixilon.minosoft.data.mappings.items.ItemRegistry
|
||||||
import de.bixilon.minosoft.data.mappings.materials.Material
|
import de.bixilon.minosoft.data.mappings.materials.Material
|
||||||
import de.bixilon.minosoft.data.mappings.particle.Particle
|
import de.bixilon.minosoft.data.mappings.particle.Particle
|
||||||
|
@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.entities.EntityMetaData;
|
|||||||
import de.bixilon.minosoft.data.entities.EntityRotation;
|
import de.bixilon.minosoft.data.entities.EntityRotation;
|
||||||
import de.bixilon.minosoft.data.entities.Velocity;
|
import de.bixilon.minosoft.data.entities.Velocity;
|
||||||
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity;
|
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity;
|
||||||
import de.bixilon.minosoft.data.mappings.Item;
|
import de.bixilon.minosoft.data.mappings.items.Item;
|
||||||
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
|
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
|
||||||
import de.bixilon.minosoft.protocol.network.Connection;
|
import de.bixilon.minosoft.protocol.network.Connection;
|
||||||
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
|
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user