Skip to content

Commit 26a2120

Browse files
committed
Added most of ItemDataComponent converter entries.
1 parent 072e1b5 commit 26a2120

File tree

16 files changed

+202
-147
lines changed

16 files changed

+202
-147
lines changed

common/src/main/java/generations/gg/generations/core/generationscore/common/client/screen/mails/MailEditScreen.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ package generations.gg.generations.core.generationscore.common.client.screen.mai
33
import com.cobblemon.mod.common.Cobblemon
44
import com.google.common.collect.Lists
55
import com.mojang.blaze3d.systems.RenderSystem
6-
import com.mojang.blaze3d.vertex.*
76
import generations.gg.generations.core.generationscore.common.network.packets.C2SEditMailPacket
87
import generations.gg.generations.core.generationscore.common.world.item.MailItem
9-
import generations.gg.generations.core.generationscore.common.world.item.components.GenerationsDataComponents.SEALED_MAIL_DATA
8+
import generations.gg.generations.core.generationscore.common.world.item.components.GenerationsDataComponents.MAIL_DATA
109
import generations.gg.generations.core.generationscore.common.world.item.components.MailContent
1110
import it.unimi.dsi.fastutil.ints.IntArrayList
1211
import net.fabricmc.api.EnvType
@@ -70,7 +69,7 @@ class MailEditScreen(private val owner: Player, private val book: ItemStack, pri
7069
private var displayCache: DisplayCache? = DisplayCache.EMPTY
7170

7271
init {
73-
val mailContent: MailContent? = book.get(SEALED_MAIL_DATA.value())
72+
val mailContent: MailContent? = book.get(MAIL_DATA.value())
7473
if (mailContent != null) {
7574
contents = mailContent.content
7675
}
@@ -140,7 +139,7 @@ class MailEditScreen(private val owner: Player, private val book: ItemStack, pri
140139
}
141140

142141
private fun updateLocalCopy(sign: Boolean) {
143-
val mailContent: MailContent = book.getOrDefault(SEALED_MAIL_DATA.value(), MailContent())
142+
val mailContent: MailContent = book.getOrDefault(MAIL_DATA.value(), MailContent())
144143

145144
if (contents.isNotEmpty()) {
146145
mailContent.content = this.contents

common/src/main/java/generations/gg/generations/core/generationscore/common/client/screen/mails/MailViewScreen.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import generations.gg.generations.core.generationscore.common.tags.GenerationsIt
55
import generations.gg.generations.core.generationscore.common.world.item.ClosedMailItem
66
import generations.gg.generations.core.generationscore.common.world.item.MailType
77
import generations.gg.generations.core.generationscore.common.world.item.MailTypes
8-
import generations.gg.generations.core.generationscore.common.world.item.components.GenerationsDataComponents.SEALED_MAIL_DATA
8+
import generations.gg.generations.core.generationscore.common.world.item.components.GenerationsDataComponents.MAIL_DATA
99
import net.fabricmc.api.EnvType
1010
import net.fabricmc.api.Environment
1111
import net.minecraft.ChatFormatting
@@ -15,7 +15,6 @@ import net.minecraft.client.gui.GuiGraphics
1515
import net.minecraft.client.gui.components.Button
1616
import net.minecraft.client.gui.screens.Screen
1717
import net.minecraft.locale.Language
18-
import net.minecraft.nbt.CompoundTag
1918
import net.minecraft.network.chat.*
2019
import net.minecraft.resources.ResourceLocation
2120
import net.minecraft.util.FormattedCharSequence
@@ -175,7 +174,7 @@ class MailViewScreen private constructor(arg: MailAccess, bl: Boolean) : Screen(
175174
private val type: MailType
176175

177176
init {
178-
val mail = arg.get(SEALED_MAIL_DATA.value())
177+
val mail = arg.get(MAIL_DATA.value())
179178

180179
this.contents = mail?.content ?: ""
181180
this.type = (arg.item as ClosedMailItem).type
@@ -199,7 +198,7 @@ class MailViewScreen private constructor(arg: MailAccess, bl: Boolean) : Screen(
199198
private val type: MailType
200199

201200
init {
202-
val mail = arg.get(SEALED_MAIL_DATA.value())
201+
val mail = arg.get(MAIL_DATA.value())
203202

204203
this.contents = mail?.content ?: Component.translatable("book.invalid.tag").withStyle(ChatFormatting.DARK_RED).string
205204
this.author = mail?.author ?: ""
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package generations.gg.generations.core.generationscore.common.mixin.datafix;
2+
3+
import com.cobblemon.mod.common.pokemon.Pokemon;
4+
import com.mojang.serialization.DataResult;
5+
import com.mojang.serialization.Dynamic;
6+
import net.minecraft.util.datafix.fixes.ItemStackComponentizationFix;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
11+
12+
import java.util.Set;
13+
import java.util.function.Consumer;
14+
15+
@Mixin({ItemStackComponentizationFix.class})
16+
public class ItemStackComponentizationFixMixin {
17+
18+
@Inject(
19+
method = {"fixItemStack(Lnet/minecraft/util/datafix/fixes/ItemStackComponentizationFix$ItemStackData;Lcom/mojang/serialization/Dynamic;)V"},
20+
at = {@At("TAIL")})
21+
private static void fixItemStack(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic, CallbackInfo ci) {
22+
if(itemStackData.item.startsWith("generationscore:pokemail_")) {
23+
fixMail(itemStackData, dynamic);
24+
}
25+
26+
if(itemStackData.is("generations_core:ruby_rod")) {
27+
itemStackData.moveTagToComponent("fished_shards", "generations_core:fished_shards");
28+
}
29+
30+
if(itemStackData.is(Set.of("generations_core:wonder_egg", "generations_core_phione_egg"))) {
31+
itemStackData.moveTagToComponent("Distance", "generations_core:distance");
32+
}
33+
34+
if(itemStackData.is(Set.of("generations_core:time_capsule", "generations_core:dna_splicer", "generations_core:reins_of_unity"))) {
35+
itemStackData.moveTagToComponent("pokemon", "generations_core:embedded_pokemon");
36+
}
37+
38+
if(itemStackData.is("generations_core_tm")) {
39+
fixTM(itemStackData, dynamic);
40+
}
41+
42+
if(itemStackData.is("generations_core:red_chain")) {
43+
itemStackData.moveTagToComponent("uses", "generations_core:uses");
44+
itemStackData.moveTagToComponent("enchanted", "generations_core:enchanted");
45+
}
46+
47+
if(itemStackData.is("generations_core:meteorite")) {
48+
itemStackData.moveTagToComponent("used", "generations_core:used");
49+
itemStackData.moveTagToComponent("enchanted", "generations_core:enchanted");
50+
}
51+
52+
if(itemStackData.is("generations_core:curry")) {
53+
fixCurry(itemStackData, dynamic);
54+
}
55+
}
56+
57+
private static void fixCurry(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic) {
58+
// TODO: FINISH this
59+
}
60+
61+
private static void fixTM(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic) {
62+
var tmDetails = dynamic.emptyMap();
63+
tmDetails = tmDetails.set("move", dynamic.createString(itemStackData.removeTag("move").asString("")));
64+
tmDetails = tmDetails.set("number", dynamic.createInt(itemStackData.removeTag("number").asInt(0)));
65+
itemStackData.setComponent("generations_core:tm_details", tmDetails);
66+
}
67+
68+
private static void fixMail(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic) {
69+
var mailData = dynamic.emptyMap();
70+
71+
mailData = mailData.set("contents", dynamic.createString(itemStackData.removeTag("contents").asString("")));
72+
mailData = mailData.set("author", dynamic.createString(itemStackData.removeTag("author").asString("")));
73+
mailData = mailData.set("title", dynamic.createString(""));
74+
75+
itemStackData.setComponent("generations_core:mail_data", mailData);
76+
}
77+
}

common/src/main/java/generations/gg/generations/core/generationscore/common/network/packets/C2SEditMailHandler.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ package generations.gg.generations.core.generationscore.common.network.packets
22

33
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
44
import generations.gg.generations.core.generationscore.common.tags.GenerationsItemTags
5-
import generations.gg.generations.core.generationscore.common.util.extensions.get
65
import generations.gg.generations.core.generationscore.common.world.item.MailItem
76
import generations.gg.generations.core.generationscore.common.world.item.components.GenerationsDataComponents
87
import generations.gg.generations.core.generationscore.common.world.item.components.MailContent
9-
import net.minecraft.core.component.DataComponents
10-
import net.minecraft.nbt.StringTag
118
import net.minecraft.server.MinecraftServer
129
import net.minecraft.server.level.ServerPlayer
1310
import net.minecraft.world.entity.player.Inventory
@@ -43,7 +40,7 @@ object C2SEditMailHandler : ServerNetworkPacketHandler<C2SEditMailPacket> {
4340
private fun updateMailContents(sender: ServerPlayer, slot: Int, contents: String) {
4441
val itemStack = sender.inventory.getItem(slot)
4542
if (itemStack.`is`(GenerationsItemTags.POKEMAIL)) {
46-
itemStack.update(GenerationsDataComponents.SEALED_MAIL_DATA.get(), MailContent()) {
43+
itemStack.update(GenerationsDataComponents.MAIL_DATA.get(), MailContent()) {
4744
it.content = contents
4845
return@update it
4946
}
@@ -55,7 +52,7 @@ object C2SEditMailHandler : ServerNetworkPacketHandler<C2SEditMailPacket> {
5552
if (itemStack.`is`(GenerationsItemTags.POKEMAIL)) {
5653
val stack = MailItem.getSealed(itemStack.item)
5754

58-
stack.update(GenerationsDataComponents.SEALED_MAIL_DATA.get(), MailContent()) {
55+
stack.update(GenerationsDataComponents.MAIL_DATA.get(), MailContent()) {
5956
it.content = contents
6057
it.author = sender.name.string
6158
it.title = title

common/src/main/java/generations/gg/generations/core/generationscore/common/util/PokemonFunctions.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,18 @@ fun MutableList<Component>.add(pokemon: Pokemon) {
115115

116116
fun ItemStack.savePokemon(poke: Pokemon) {
117117
set(GenerationsDataComponents.EMBEDDED_POKEMON, poke)
118-
set(GenerationsDataComponents.CLIENT_POKEMON_DATA, poke.asRenderablePokemon())
119118
}
120119

121120
fun ItemStack.removePokemon() {
122121
remove(GenerationsDataComponents.EMBEDDED_POKEMON)
123-
remove(GenerationsDataComponents.CLIENT_POKEMON_DATA)
124122
}
125123

126124
fun ItemStack.getRenderablePokemon(): RenderablePokemon? {
127125
if(item is StatueSpawnerItem) {
128126
return (item as StatueSpawnerItem).pokemon?.asRenderablePokemon() //TODO: See if this explodes.
129127
}
130128

131-
return get(GenerationsDataComponents.CLIENT_POKEMON_DATA)
129+
return get(GenerationsDataComponents.EMBEDDED_POKEMON)?.asRenderablePokemon()
132130
}
133131

134132
fun ItemStack.getPokemon(): Pokemon? {

common/src/main/java/generations/gg/generations/core/generationscore/common/util/StreamCodecs.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package generations.gg.generations.core.generationscore.common.util
22

3+
import com.cobblemon.mod.common.api.berry.Flavor
34
import dev.architectury.registry.registries.Registrar
5+
import generations.gg.generations.core.generationscore.common.util.StreamCodecs.asRegistryFriendly
46
import io.netty.buffer.ByteBuf
57
import net.minecraft.core.NonNullList
68
import net.minecraft.network.FriendlyByteBuf
@@ -76,4 +78,5 @@ object StreamCodecs {
7678
}
7779
}
7880

81+
val FLAVOR_STREAM_CODEC: StreamCodec<RegistryFriendlyByteBuf, Flavor> = ByteBufCodecs.STRING_UTF8.map(String::uppercase, String::lowercase).map(Flavor::valueOf, Flavor::name).asRegistryFriendly()
7982
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/item/ClosedMailItem.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package generations.gg.generations.core.generationscore.common.world.item
22

33
import com.cobblemon.mod.common.Cobblemon.implementation
4-
import com.cobblemon.mod.common.api.text.text
54
import generations.gg.generations.core.generationscore.common.network.packets.S2COpenMailPacket
65
import generations.gg.generations.core.generationscore.common.tags.GenerationsItemTags
76
import generations.gg.generations.core.generationscore.common.util.extensions.get
@@ -36,7 +35,7 @@ class ClosedMailItem(@JvmField val type: MailType, arg: Properties) : Item(arg)
3635
tooltipComponents: MutableList<Component>,
3736
isAdvanced: TooltipFlag
3837
) {
39-
val sealedMailData = stack.get(GenerationsDataComponents.SEALED_MAIL_DATA)
38+
val sealedMailData = stack.get(GenerationsDataComponents.MAIL_DATA)
4039

4140
if (sealedMailData != null) {
4241
val string = sealedMailData.author
@@ -79,7 +78,7 @@ class ClosedMailItem(@JvmField val type: MailType, arg: Properties) : Item(arg)
7978
resolvingSource: CommandSourceStack?,
8079
resolvingPlayer: Player?
8180
): Boolean {
82-
val sealedMailData = stack.get(GenerationsDataComponents.SEALED_MAIL_DATA)
81+
val sealedMailData = stack.get(GenerationsDataComponents.MAIL_DATA)
8382
if (sealedMailData == null || sealedMailData.resolved) {
8483
return false
8584
}
@@ -91,7 +90,7 @@ class ClosedMailItem(@JvmField val type: MailType, arg: Properties) : Item(arg)
9190

9291
sealedMailData.content = string
9392

94-
stack.set(GenerationsDataComponents.SEALED_MAIL_DATA, sealedMailData)
93+
stack.set(GenerationsDataComponents.MAIL_DATA, sealedMailData)
9594

9695
return true
9796
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/item/components/GenerationsDataComponents.kt

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,11 @@ object GenerationsDataComponents {
4040
StreamCodec.of(ByteBufCodecs.BOOL::encode, ByteBufCodecs.BOOL::decode)
4141
)
4242

43-
val CURRY_DATA = register("curry_data", CurryData.CODEC)
43+
val CURRY_DATA = register("curry_data", CurryData.CODEC, CurryData.STREAM_CODEC)
4444
val TM_DETAILS = register("tm_details", TmDetails.CODEC, TmDetails.STREAM_CODEC)
45-
val EMBEDDED_POKEMON = register("pokemon", Pokemon.CODEC)
45+
val EMBEDDED_POKEMON = register("embedded_pokemon", Pokemon.CODEC, Pokemon.S2C_CODEC)
4646

47-
val CLIENT_POKEMON_DATA: RegistrySupplier<DataComponentType<RenderablePokemon>> = register(DataKeys.CLIENT_POKEMON_DATA, RecordCodecBuilder.create {
48-
49-
it.group(
50-
Species.BY_IDENTIFIER_CODEC.fieldOf("species").forGetter(RenderablePokemon::species),
51-
Codec.STRING.listOf().xmap({ it.toSet() }, { it.toList()}).fieldOf("aspects").forGetter(RenderablePokemon::aspects)
52-
).apply(it, ::RenderablePokemon)
53-
}, object : StreamCodec<RegistryFriendlyByteBuf, RenderablePokemon> {
54-
override fun decode(`object`: RegistryFriendlyByteBuf): RenderablePokemon {
55-
return RenderablePokemon.loadFromBuffer(`object`)
56-
}
57-
58-
override fun encode(`object`: RegistryFriendlyByteBuf, object2: RenderablePokemon) {
59-
object2.saveToBuffer(`object`)
60-
}
61-
62-
})
63-
val SEALED_MAIL_DATA = register("mail_data", MailContent.CODEC, MailContent.STREAM_CODEC)
47+
val MAIL_DATA = register("mail_data", MailContent.CODEC, MailContent.STREAM_CODEC)
6448
val WALKMON_DATA = register("walkmon_data", WalkmonItem.WalkmonData.CODEC, WalkmonItem.WalkmonData.STREAM_CODEC)
6549
val FISHED_SHARDS = register("fished_shards", RubyRodItem.FishedShards.CODEC)
6650

0 commit comments

Comments
 (0)