Goggle of claim `settings.maxDamage = -1` breaks many storage mods and corrupts chunks
jjanrb opened this issue ยท 0 comments
I'm not sure what the intent was for setting settings.maxDamage to -1, maybe to make it unbreakable? If that is the case, it doesn't seem to work since it breaks in 1 hit, feeling like it only has 1 durability. When storing in something like a storage drawer, it causes the chunk to be unable to be loaded after saving it. So if I put the goggle of claim into a drawer, it will be fine until I save and exit and then enter the world again, at which point it will crash the client as soon as I load in, giving this error log:
---- Minecraft Crash Report ----
// Don't do that.
Time: 2025-02-13 09:16:29
Description: Exception in server tick loop
java.lang.IllegalStateException: Value must be positive: -1
at knot//com.mojang.serialization.DataResult$Error.md625aea$owo$lambda$addStackTraceToException$0$0(DataResult.java:565)
at knot//com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287)
at knot//com.mojang.serialization.DataResult.getOrThrow(DataResult.java:81)
at knot//MC//net.minecraft.item.ItemStack.encode(ItemStack.java:396)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.tiledata.StandardDrawerGroup$DrawerData.serializeNBT(StandardDrawerGroup.java:398)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.tiledata.StandardDrawerGroup.write(StandardDrawerGroup.java:70)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.BaseBlockEntity.writePortable(BaseBlockEntity.java:111)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.BlockEntityDrawers.writePortable(BlockEntityDrawers.java:644)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.BaseBlockEntity.writeNbt(BaseBlockEntity.java:98)
at knot//MC//net.minecraft.block.entity.BlockEntity.createComponentlessNbt(BlockEntity.java:136)
at knot//com.jaquadro.minecraft.storagedrawers.block.tile.BaseBlockEntity.toInitialChunkDataNbt(BaseBlockEntity.java:153)
at knot//MC//net.minecraft.network.packet.s2c.play.ChunkData$BlockEntityData.of(ChunkData.java:162)
at knot//MC//net.minecraft.network.packet.s2c.play.ChunkData.<init>(ChunkData.java:47)
at knot//MC//net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket.<init>(ChunkDataS2CPacket.java:28)
at knot//MC//net.minecraft.server.network.ChunkDataSender.mixinextras$bridge$newclass_2672$22(ChunkDataSender.java)
at knot//MC//net.minecraft.server.network.ChunkDataSender.md625aea$polymer-core$lambda$addContext$0$0(ChunkDataSender.java:3527)
at knot//xyz.nucleoid.packettweaker.PacketContext.runWithContext(PacketContext.java:36)
at knot//xyz.nucleoid.packettweaker.PacketContext.runWithContext(PacketContext.java:42)
at knot//xyz.nucleoid.packettweaker.PacketContext.runWithContext(PacketContext.java:46)
at knot//eu.pb4.polymer.common.api.PolymerCommonUtils.executeWithNetworkingLogic(PolymerCommonUtils.java:127)
at knot//MC//net.minecraft.server.network.ChunkDataSender.wrapOperation$fob000$polymer-core$addContext(ChunkDataSender.java:3527)
at knot//MC//net.minecraft.server.network.ChunkDataSender.wrapOperation$fob000$polymer-core$addContext$mixinextras$bridge$20(ChunkDataSender.java)
at knot//MC//net.minecraft.server.network.ChunkDataSender.sendChunkData(ChunkDataSender.java:88)
at knot//MC//net.minecraft.server.network.ChunkDataSender.mixinextras$bridge$method_52388$21(ChunkDataSender.java)
at knot//MC//net.minecraft.server.network.ChunkDataSender.wrapOperation$cdm000$fabric-data-attachment-api-v1$sendInitialAttachmentData(ChunkDataSender.java:2046)
at knot//MC//net.minecraft.server.network.ChunkDataSender.sendChunkBatches(ChunkDataSender.java:81)
at knot//net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer.java:1045)
at knot//net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:912)
at knot//MC//net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:114)
at knot//net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:697)
at knot//net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:281)
at [email protected]/java.lang.Thread.run(Thread.java:1583)
Another example of this causing corruption is when trying to put it into a backpack from a backpack mod, it will corrupt the backpack and if the backpack is equipped then will also cause corruption to the player data meaning the server can't save the player's inventory.