mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-13 17:37:58 -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.EntityRotation
|
||||
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.items.Item
|
||||
import de.bixilon.minosoft.protocol.network.Connection
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
||||
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.entities.EntityMetaDataFunction;
|
||||
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.protocol.network.Connection;
|
||||
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
|
||||
@ -98,7 +98,7 @@ public class PlayerEntity extends LivingEntity {
|
||||
}
|
||||
|
||||
public Gamemodes getGamemode() {
|
||||
return gamemode;
|
||||
return this.gamemode;
|
||||
}
|
||||
|
||||
public void setGamemode(Gamemodes gamemode) {
|
||||
|
@ -122,10 +122,21 @@ public class InventorySlots {
|
||||
}
|
||||
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 {
|
||||
int getId(int versionId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -14,8 +14,8 @@
|
||||
package de.bixilon.minosoft.data.inventory;
|
||||
|
||||
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.items.Item;
|
||||
import de.bixilon.minosoft.data.mappings.versions.Version;
|
||||
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
|
||||
import de.bixilon.minosoft.data.text.ChatComponent;
|
||||
|
@ -13,10 +13,10 @@
|
||||
package de.bixilon.minosoft.data.mappings.blocks
|
||||
|
||||
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.ResourceLocation
|
||||
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.text.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.TintColorCalculator
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
@ -10,31 +10,34 @@
|
||||
*
|
||||
* 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 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
|
||||
|
||||
data class Item(
|
||||
open class Item(
|
||||
override val resourceLocation: ResourceLocation,
|
||||
val rarity: Rarities = Rarities.COMMON,
|
||||
val maxStackSize: Int = 64,
|
||||
val maxDamage: Int = 0,
|
||||
val isFireResistant: Boolean = false,
|
||||
val descriptionId: String?,
|
||||
data: JsonObject,
|
||||
) : 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> {
|
||||
override fun deserialize(mappings: VersionMapping, resourceLocation: ResourceLocation, data: JsonObject): Item {
|
||||
return Item(
|
||||
resourceLocation = resourceLocation,
|
||||
rarity = data["rarity"]?.asInt?.let { Rarities.VALUES[it] } ?: Rarities.COMMON,
|
||||
maxStackSize = data["max_stack_size"]?.asInt ?: 64,
|
||||
maxDamage = data["max_damage"]?.asInt ?: 0,
|
||||
isFireResistant = data["is_fire_resistant"]?.asBoolean ?: false,
|
||||
descriptionId = data["description_id"]?.asString,
|
||||
)
|
||||
return when (data["class"].asString) {
|
||||
"ArmorItem" -> ArmorItem(resourceLocation, data)
|
||||
// "Item" -> Item(resourceLocation, data)
|
||||
// else -> TODO("Can not find item class: ${data["class"].asString}")
|
||||
else -> Item(resourceLocation, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -14,7 +14,6 @@
|
||||
package de.bixilon.minosoft.data.mappings.items
|
||||
|
||||
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.ResourceLocation
|
||||
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.blocks.Block
|
||||
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.materials.Material
|
||||
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.Velocity;
|
||||
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.protocol.network.Connection;
|
||||
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
|
||||
|
Loading…
x
Reference in New Issue
Block a user