Skip to content

Commit 60b5e27

Browse files
committed
Finished stablizing multiblocks hopefully and tweak curry data. Also added curry data conversion entry.
1 parent 26a2120 commit 60b5e27

11 files changed

Lines changed: 57 additions & 96 deletions

File tree

common/src/main/java/generations/gg/generations/core/generationscore/common/GenerationsCore.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ object GenerationsCore {
122122
)
123123

124124
GenerationsDataComponents.init()
125-
125+
GenerationsStorage.init()
126126
GenerationsCoreEntityDataSerializers.init()
127127
GenerationsSounds.init()
128128
GenerationsBlocks.init()

common/src/main/java/generations/gg/generations/core/generationscore/common/GenerationsStorage.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ object GenerationsStorage {
99
val ITEM_CONTENTS = registry.builder(ItemStorageData.DEFAULT).serialize(ItemStorageData.CODEC).withDataComponent().buildAndRegister("inventory")
1010
val IMBUED = registry.builder(ItemStorageData.DEFAULT).serialize(ItemStorageData.CODEC).withDataComponent().buildAndRegister("imbued")
1111

12-
12+
fun init() {
13+
registry.init()
14+
}
1315
}

common/src/main/java/generations/gg/generations/core/generationscore/common/mixin/datafix/ItemStackComponentizationFixMixin.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package generations.gg.generations.core.generationscore.common.mixin.datafix;
22

3+
import com.cobblemon.mod.common.api.berry.Flavor;
34
import com.cobblemon.mod.common.pokemon.Pokemon;
45
import com.mojang.serialization.DataResult;
56
import com.mojang.serialization.Dynamic;
7+
import generations.gg.generations.core.generationscore.common.world.item.curry.CurryTasteRating;
8+
import generations.gg.generations.core.generationscore.common.world.item.curry.CurryType;
69
import net.minecraft.util.datafix.fixes.ItemStackComponentizationFix;
710
import org.spongepowered.asm.mixin.Mixin;
811
import org.spongepowered.asm.mixin.injection.At;
@@ -55,7 +58,17 @@ private static void fixItemStack(ItemStackComponentizationFix.ItemStackData item
5558
}
5659

5760
private static void fixCurry(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic) {
58-
// TODO: FINISH this
61+
var curryData = dynamic.emptyMap();
62+
var flavorInt = itemStackData.removeTag("flavor").asInt(-1);
63+
if(flavorInt > -1) curryData = curryData.set("flavor", dynamic.createString(Flavor.values()[flavorInt].name().toLowerCase()));
64+
curryData = curryData.set("type", dynamic.createString(CurryType.getEntries().get(itemStackData.removeTag("type").asInt(0)).getSerializedName()));
65+
curryData = curryData.set("experience", dynamic.createInt(itemStackData.removeTag("experience").asInt(0)));
66+
curryData = curryData.set("health_percentage", dynamic.createDouble(itemStackData.removeTag("healthPercentage").asDouble(0.0)));
67+
curryData = curryData.set("heal_status", dynamic.createBoolean(itemStackData.removeTag("canHealStatus").asBoolean(false)));
68+
curryData = curryData.set("restore_pp", dynamic.createBoolean(itemStackData.removeTag("canRestorePP").asBoolean(false)));
69+
curryData = curryData.set("friendship", dynamic.createInt(itemStackData.removeTag("friendship").asInt(0)));
70+
curryData = curryData.set("rating", dynamic.createString(CurryTasteRating.getEntries().get(itemStackData.removeTag("rating").asInt(0)).getSerializedName()));
71+
itemStackData.setComponent("generations_core:curry_data", curryData);
5972
}
6073

6174
private static void fixTM(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic) {
Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
package generations.gg.generations.core.generationscore.common.network.packets
22

33
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
4+
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.instanceOrNull
45
import generations.gg.generations.core.generationscore.common.world.level.block.entities.Toggleable
56
import net.minecraft.server.MinecraftServer
67
import net.minecraft.server.level.ServerPlayer
78

89
object C2SToggleHandler : ServerNetworkPacketHandler<C2STogglePacket> {
910
override fun handle(packet: C2STogglePacket, minecraftServer: MinecraftServer, player: ServerPlayer) {
10-
var toggleable: Toggleable? = null
11-
12-
if (packet.pos != null && player.level().getBlockEntity(packet.pos) is Toggleable) {
13-
toggleable = player.level().getBlockEntity(packet.pos) as Toggleable
14-
} else if (player.containerMenu is Toggleable) {
15-
toggleable = player.containerMenu as Toggleable
16-
}
17-
18-
if (toggleable != null) toggleable.isToggled = !toggleable.isToggled
11+
player.containerMenu.instanceOrNull<Toggleable>()?.run { isToggled = !isToggled }
1912
}
2013
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/container/CookingPotContainer.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import earth.terrarium.common_storage_lib.storage.util.MenuStorageSlot
77
import generations.gg.generations.core.generationscore.common.world.container.slots.CurryResultSlot
88
import generations.gg.generations.core.generationscore.common.world.item.GenerationsItems
99
import generations.gg.generations.core.generationscore.common.world.item.curry.CurryIngredient
10+
import generations.gg.generations.core.generationscore.common.world.level.block.entities.Toggleable
1011
import net.minecraft.tags.ItemTags
1112
import net.minecraft.world.entity.player.Inventory
1213
import net.minecraft.world.entity.player.Player
@@ -22,9 +23,8 @@ class CookingPotContainer @JvmOverloads constructor(
2223
id: Int,
2324
playerInventory: Inventory,
2425
storage: SimpleItemStorage = SimpleItemStorage(14),
25-
data: ContainerData = SimpleContainerData(4)
26-
) :
27-
AbstractContainerMenu(GenerationsContainers.COOKING_POT.get(), id) {
26+
val data: ContainerData = SimpleContainerData(4)
27+
) : AbstractContainerMenu(GenerationsContainers.COOKING_POT.get(), id), Toggleable {
2828
init {
2929
addSlot(MenuStorageSlot(storage, 0, 26, 8 + 11))
3030
addSlot(MenuStorageSlot(storage, 1, 44, 8 + 11))
@@ -118,10 +118,14 @@ class CookingPotContainer @JvmOverloads constructor(
118118
}
119119

120120
val isCooking: Boolean
121-
get() = false
121+
get() = data[1] == 1
122122

123123
val cookTime: Int
124-
get() = 0
124+
get() = data[0]
125+
126+
override var isToggled: Boolean
127+
get() = data[2] == 1
128+
set(value) { setData(2, if (value) 1 else 0) }
125129

126130
companion object {
127131
fun isBowl(obj: Any): Boolean {

common/src/main/java/generations/gg/generations/core/generationscore/common/world/container/RksMachineContainer.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ class RksMachineContainer @JvmOverloads constructor(
2222
protected var playerInventory: Inventory,
2323
protected var rksMachine: Container = SimpleContainer(10),
2424
private val data: ContainerData = SimpleContainerData(4)
25-
) :
26-
AbstractContainerMenu(GenerationsContainers.RKS_MACHINE.get(), id), Toggleable {
25+
) : AbstractContainerMenu(GenerationsContainers.RKS_MACHINE.get(), id), Toggleable {
2726
init {
2827
rksMachine.instanceOrNull<RksMachineBlockEntity>()?.addMenu(this)
2928

@@ -104,7 +103,7 @@ class RksMachineContainer @JvmOverloads constructor(
104103

105104
override var isToggled: Boolean
106105
get() = data[2] == 1
107-
set(value) { data[2] = if (value) 1 else 0 }
106+
set(value) { setData(2, if (value) 1 else 0) }
108107

109108
val isPokemonPresent: Boolean
110109
get() = data[3] == 1
@@ -162,4 +161,6 @@ class RksMachineContainer @JvmOverloads constructor(
162161
const val DATA_WEAVE_TIME_TOAL: Int = 1
163162
const val NUM_DATA_VALUES: Int = 2
164163
}
164+
165+
165166
}

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

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -102,33 +102,18 @@ data class CurryData(
102102
val resourceLocation: ResourceLocation
103103
get() = curryType.resourceLocation
104104

105-
fun toNbt(): Tag {
106-
val nbt = CompoundTag()
107-
nbt.putInt("flavor", flavor?.ordinal ?: -1)
108-
nbt.putInt("type", curryType.ordinal)
109-
nbt.putInt("rating", rating.ordinal)
110-
nbt.putInt("experience", experience)
111-
nbt.putDouble("healthPercentage", healthPercentage)
112-
nbt.putBoolean("canHealStatus", canHealStatus)
113-
nbt.putBoolean("canRestorePP", canRestorePP)
114-
nbt.putInt("friendship", friendship)
115-
116-
return nbt
117-
}
118-
119105
companion object {
120106
val CODEC: Codec<CurryData> = RecordCodecBuilder.create {
121107
it.group(
122108
Codecs.enumCodec(Flavor::class.java).optionalFieldOf("flavor").forGetter { Optional.ofNullable(it.flavor) },
123109
CurryType.CODEC.fieldOf("type").forGetter { it.curryType },
124110
Codec.INT.fieldOf("experience").forGetter { it.experience },
125-
Codec.DOUBLE.fieldOf("healthPercentage").forGetter { it.healthPercentage },
126-
Codec.BOOL.fieldOf("canHealStatus").forGetter { it.canHealStatus },
127-
Codec.BOOL.fieldOf("canRestorePP").forGetter { it.canRestorePP },
111+
Codec.DOUBLE.fieldOf("health_percentage").forGetter { it.healthPercentage },
112+
Codec.BOOL.fieldOf("heal_status").forGetter { it.canHealStatus },
113+
Codec.BOOL.fieldOf("restore_pp").forGetter { it.canRestorePP },
128114
Codec.INT.fieldOf("friendship").forGetter { it.friendship },
129115
CurryTasteRating.CODEC.fieldOf("rating").forGetter { it.rating },
130-
131-
).apply(it, ::CurryData)
116+
).apply(it, ::CurryData)
132117
}
133118

134119
val STREAM_CODEC = ByteBufCodecs.fromCodecTrusted(CODEC).asRegistryFriendly()
@@ -155,34 +140,5 @@ data class CurryData(
155140

156141
return data
157142
}
158-
159-
160-
fun fromNbt(nbt: CompoundTag): CurryData {
161-
val curry = CurryData()
162-
if (nbt.isEmpty) {
163-
return curry
164-
}
165-
166-
val flavorId = nbt.getInt("flavor")
167-
val flavor = if (flavorId == -1) null else Flavor.entries[flavorId]
168-
val type = CurryType.getCurryTypeFromIndex(nbt.getInt("type"))
169-
val experience = nbt.getInt("experience")
170-
val healthPercentage = nbt.getDouble("healthPercentage")
171-
val canHealStatus = nbt.getBoolean("canHealStatus")
172-
val canRestorePP = nbt.getBoolean("canRestorePP")
173-
val friendship = nbt.getInt("friendship")
174-
val rating = CurryTasteRating.fromId(nbt.getInt("rating"))
175-
176-
return CurryData(
177-
flavor,
178-
type,
179-
experience,
180-
healthPercentage,
181-
canHealStatus,
182-
canRestorePP,
183-
friendship,
184-
rating
185-
)
186-
}
187143
}
188144
}

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

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,6 @@ class ItemCurry(properties: Properties) : Item(properties.stacksTo(64)), Pokemon
9898
stack.set(GenerationsDataComponents.CURRY_DATA, data)
9999
return stack
100100
}
101-
102-
//TODO: data -> generations_core:curry_data via world converter
103-
104-
// @JvmStatic
105-
// fun setData(stack: ItemStack, data: CurryData) {
106-
// stack.addTagElement("data", data.toNbt())
107-
// }
108-
//
109-
// @JvmStatic
110-
// fun getData(stack: ItemStack): CurryData {
111-
// return CurryData.fromNbt(stack.getOrCreateTagElement("data"))
112-
// }
113101
}
114102
}
115103

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/entities/CookingPotBlockEntity.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,21 @@ class CookingPotBlockEntity(pos: BlockPos, state: BlockState) : ModelProvidingBl
6767
}
6868

6969
private val data: ContainerData = object : ContainerData {
70-
override fun get(index: Int): Int {
71-
TODO("Not yet implemented")
70+
override fun get(index: Int): Int = when(index) {
71+
0 -> this@CookingPotBlockEntity.cookTime
72+
1 -> if(this@CookingPotBlockEntity.isCooking) 1 else 0
73+
2 -> if (this@CookingPotBlockEntity.isToggled) 1 else 0
74+
else -> 0
7275
}
7376

74-
override fun set(index: Int, value: Int) {
75-
TODO("Not yet implemented")
77+
override fun set(index: Int, value: Int) = when(index) {
78+
0 -> this@CookingPotBlockEntity.cookTime = value
79+
1 -> this@CookingPotBlockEntity.isCooking = value == 1
80+
2 -> this@CookingPotBlockEntity.isToggled = value == 1
81+
else -> {}
7682
}
7783

78-
override fun getCount(): Int {
79-
TODO("Not yet implemented")
80-
}
84+
override fun getCount(): Int = 3
8185
}
8286

8387
private var customName: String? = null

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/entities/RksMachineBlockEntity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import net.minecraft.world.phys.Vec3
4141
import java.util.*
4242
import java.util.function.Consumer
4343

44-
class RksMachineBlockEntity(pos: BlockPos, state: BlockState) :
44+
open class RksMachineBlockEntity(pos: BlockPos, state: BlockState) :
4545
ModelProvidingBlockEntity(GenerationsBlockEntities.RKS_MACHINE.get(), pos, state), MenuProvider,
4646
Container, Toggleable {
4747
private val dataAccess: ContainerData
@@ -251,7 +251,7 @@ class RksMachineBlockEntity(pos: BlockPos, state: BlockState) :
251251
}
252252

253253
protected fun canSmelt(result: ItemStack, recipe: RksRecipe): Boolean {
254-
if (recipe.matches(craftingInput, null)) {
254+
if (recipe.matches(craftingInput, level!!)) {
255255
val outstack = output
256256
return if (outstack.isEmpty) {
257257
true

0 commit comments

Comments
 (0)