More backporting

This commit is contained in:
DBotThePony 2023-12-31 21:40:54 +07:00
parent 98fcacc9a8
commit aa0a283e06
Signed by: DBot
GPG Key ID: DCC23B5715498507
4 changed files with 31 additions and 12 deletions

View File

@ -170,14 +170,16 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
return
}
val renderX = width.toInt() / 2
val renderY = (height * 0.9f).toInt()
InventoryScreen.renderEntityInInventoryFollowsMouse(
graphics,
0, 0,
this.width.toInt(), this.height.toInt(),
renderX,
renderY,
renderScale,
0f,
mouseX - absoluteX.toInt(),
mouseY - absoluteY + height * 0.15f,
absoluteX.toInt() + renderX - mouseX,
absoluteY + height * 0.15f - mouseY,
entity
)
}

View File

@ -1,29 +1,39 @@
package ru.dbotthepony.mc.otm.data
import com.mojang.serialization.Codec
import com.mojang.serialization.DataResult
import com.mojang.serialization.Dynamic
import com.mojang.serialization.DynamicOps
import com.mojang.serialization.JsonOps
import com.mojang.serialization.codecs.RecordCodecBuilder
import net.minecraft.advancements.critereon.DamagePredicate
import net.minecraft.advancements.critereon.DamageSourcePredicate
import net.minecraft.advancements.critereon.EntityPredicate
import net.minecraft.advancements.critereon.MinMaxBounds
import java.util.Optional
import kotlin.reflect.KProperty1
val DoublesCodec: Codec<MinMaxBounds.Doubles> = RecordCodecBuilder.create {
it.group(
Codec.DOUBLE.optionalFieldOf("min").forGetter { Optional.ofNullable(it.min) },
Codec.DOUBLE.optionalFieldOf("max").forGetter { Optional.ofNullable(it.max) },
).apply(it) { a, b -> MinMaxBounds.Doubles.between(a.orElse(null), b.orElse(null)) }
}
private val dealtReceived: Codec<Pair<MinMaxBounds.Doubles, MinMaxBounds.Doubles>> = RecordCodecBuilder.create {
it.group(
MinMaxBounds.Doubles.CODEC.fieldOf("dealt").forGetter { it.first },
MinMaxBounds.Doubles.CODEC.fieldOf("taken").forGetter { it.second },
DoublesCodec.fieldOf("dealt").forGetter { it.first },
DoublesCodec.fieldOf("taken").forGetter { it.second },
).apply(it, ::Pair)
}
val DamagePredicateCodec: Codec<DamagePredicate> = RecordCodecBuilder.create {
it.group(
dealtReceived.fieldOf("damage").forGetter { it.dealtDamage to it.takenDamage },
Codec.BOOL.optionalFieldOf("blocked").forGetter { it.blocked },
EntityPredicate.CODEC.optionalFieldOf("source_entity").forGetter { it.sourceEntity },
DamageSourcePredicate.CODEC.optionalFieldOf("type").forGetter { it.type },
).apply(it) { damage, blocked, source, type -> DamagePredicate(damage.first, damage.second, source, blocked, type) }
Codec.BOOL.optionalFieldOf("blocked").forGetter { Optional.ofNullable(it.blocked) },
Codec.PASSTHROUGH.xmap({ EntityPredicate.fromJson(it.cast(JsonOps.INSTANCE)) }, { Dynamic(JsonOps.INSTANCE, it.serializeToJson()) }).fieldOf("source_entity").forGetter { it.sourceEntity },
Codec.PASSTHROUGH.xmap({ DamageSourcePredicate.fromJson(it.cast(JsonOps.INSTANCE)) }, { Dynamic(JsonOps.INSTANCE, it.serializeToJson()) }).fieldOf("type").forGetter { it.type },
).apply(it) { damage, blocked, source, type -> DamagePredicate(damage.first, damage.second, source, blocked.orElse(null), type) }
}
fun <V, T1> simpleCodec(factory: (T1) -> V, field1: KProperty1<V, T1>, codec1: Codec<T1>): Codec<V> {

View File

@ -7,12 +7,13 @@ import net.minecraft.advancements.critereon.MinMaxBounds.Doubles
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.data.DoublesCodec
import java.util.*
object NanobotsArmorTrigger : MCriterionTrigger<NanobotsArmorTrigger.Instance>(ResourceLocation(OverdriveThatMatters.MOD_ID, "nanobots_armor")) {
override val codec: Codec<Instance> = RecordCodecBuilder.create {
it.group(
Doubles.CODEC.fieldOf("predicate").forGetter(Instance::predicate),
DoublesCodec.fieldOf("predicate").forGetter(Instance::predicate),
playerPredicateCodec.forGetter(Instance::playerPredicate),
).apply(it, ::Instance)
}

View File

@ -179,3 +179,9 @@ public net.minecraft.advancements.critereon.ItemPredicate f_45036_
public net.minecraft.advancements.critereon.ItemPredicate f_45035_
public net.minecraft.advancements.critereon.ItemPredicate f_45034_
public net.minecraft.advancements.critereon.ItemPredicate f_45029_
public net.minecraft.advancements.critereon.DamagePredicate f_24906_ # blocked
public net.minecraft.advancements.critereon.DamagePredicate f_24903_ # dealtDamage
public net.minecraft.advancements.critereon.DamagePredicate f_24905_ # sourceEntity
public net.minecraft.advancements.critereon.DamagePredicate f_24904_ # takenDamage
public net.minecraft.advancements.critereon.DamagePredicate f_24907_ # type