repo for my hex addons :3
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

0.0.9

+56 -5
+1
build.gradle.kts
··· 197 197 modImplementation("net.modfest:fireblanket:0.8.3+toybox-1.21.7") { exclude("com.github.bawnorton.mixinsquared") } 198 198 include(modImplementation("com.github.Bawnorton.MixinSquared:mixinsquared-common:0.3.3")!!) 199 199 include(modImplementation("com.github.Bawnorton.MixinSquared:mixinsquared-fabric:0.3.3")!!) 200 + modImplementation("com.github.afamiliarquiet:be-a-doll:1.0.0") 200 201 // include(modImplementation("maven.modrinth:familiar-magic:1.1.4")!!) 201 202 //include(modImplementation("io.github.0x3c50.renderer:renderer-fabric:2.1.2")!!) 202 203 //mergedDeps("org.scala-lang:scala-library:2.12.21-M2")
+1 -1
gradle.properties
··· 17 17 kotlin_loader_version=1.13.4+kotlin.2.2.0 18 18 scala_loader_version=0.3.1.11 19 19 # Mod Properties 20 - mod_version=0.0.8 20 + mod_version=0.0.9 21 21 maven_group=org.eu.net.pool 22 22 archives_base_name=mica 23 23 # Dependencies
+54 -4
src/main/scala/org/net/eu/pool/mica/Mica.scala
··· 5 5 import com.mojang.serialization 6 6 import com.mojang.serialization.codecs.RecordCodecBuilder 7 7 import com.mojang.serialization.{Codec, DataResult, Decoder, DynamicOps, Encoder, Lifecycle, MapCodec} 8 + import io.github.afamiliarquiet.be_a_doll.{BeADoll, BeAMaid} 8 9 import it.unimi.dsi.fastutil.longs.{Long2FloatMap, Long2IntMap, Long2IntMaps, Long2IntOpenHashMap, Long2LongMap} 9 10 import net.fabricmc.loader.api.{FabricLoader, Version} 10 11 import net.minecraft.Bootstrap ··· 12 13 import net.minecraft.component.{ComponentChanges, ComponentType, DataComponentTypes} 13 14 import net.minecraft.entity.{Entity, ItemEntity, LivingEntity} 14 15 import net.minecraft.entity.attribute.{EntityAttribute, EntityAttributeInstance} 16 + import net.minecraft.entity.decoration.ArmorStandEntity 15 17 import net.minecraft.entity.decoration.DisplayEntity.TextDisplayEntity 16 - import net.minecraft.entity.effect.{StatusEffectInstance, StatusEffects} 18 + import net.minecraft.entity.effect.{StatusEffect, StatusEffectCategory, StatusEffectInstance, StatusEffects} 19 + import net.minecraft.entity.passive.{GolemEntity, IronGolemEntity} 17 20 import net.minecraft.entity.player.PlayerEntity 18 21 import net.minecraft.item.ItemStack 19 22 import net.minecraft.loot.entry.ItemEntry ··· 646 649 heap1.clear() 647 650 heap2.clear() 648 651 heap3.clear() 649 - val n = c.getLong("c", -1L) 650 - if n != -1 then 652 + val ct = c.getLong("c", -1L) 653 + if ct != -1 then 651 654 for 652 - i <- 0L until n 655 + i <- 0L until ct 653 656 k = c.getLong(s"k$i", 0L) 654 657 v = c.getInt(s"v$i", 0) 655 658 p = c.getString(s"p$v", emptyRuneKey.toString) ··· 884 887 y.flatMap: y => 885 888 val frame = interpretRunes(insts, base) 886 889 frame.tag.accept(frame.data, y.value).narrow(CollectFrame).get.data 890 + 891 + @register("healing") 892 + object HealEffect extends StatusEffect(StatusEffectCategory.BENEFICIAL, 0xc94628): 893 + override def canApplyUpdateEffect(duration: Int, amplifier: Int): Boolean = true 894 + override def applyUpdateEffect(world: ServerWorld, entity: LivingEntity, amplifier: Int): Boolean = 895 + entity.heal((entity.getMaxHealth - entity.getHealth) * 0.04f) 896 + true 897 + 898 + extension [T: Registry as r](x: T) 899 + def registryEntry: RegistryEntry[T] = r.getEntry(x) 900 + 901 + given Registry[StatusEffect] = Registries.STATUS_EFFECT 902 + 903 + extension (ent: LivingEntity) 904 + def isOrganic = ent match 905 + case _: (GolemEntity | ArmorStandEntity) => false 906 + case p: PlayerEntity => 907 + lazy val isDoll = BeAMaid.isDoll(p) 908 + try !isDoll catch case _ => true 909 + case _ => true 910 + 911 + @register("heal") 912 + object HealTargetRune extends UnaryRune: 913 + register { item.register(); registerFrames() } 914 + override type Arg0 = EntityRef 915 + override type Return = BoxedSideEffect 916 + @register("heal") 917 + object Effect extends SideEffect: 918 + override type Data = EntityRef 919 + override type Return = Double 920 + override type RevertData = Unit 921 + 922 + override def check(data: EntityRef)(using world: World): Unit = 923 + data.entity match 924 + case l: LivingEntity => 925 + assert(l.isOrganic) 926 + override def execute(data: EntityRef)(using world: World): (Double, Unit) = 927 + data.entity match 928 + case l: LivingEntity => 929 + l.addStatusEffect(StatusEffectInstance(HealEffect.registryEntry, 3*20, 0)) 930 + var healthPrediction = l.getHealth: Double 931 + for i <- 0 until 3*20 do 932 + healthPrediction += (l.getMaxHealth - l.getHealth) * 0.04 933 + (healthPrediction, ()) 934 + 935 + override def unexecute(data: EntityRef, `return`: Double, revert: Unit)(using world: World): Unit = ??? 936 + override def run(x: EntityRef): BoxedSideEffect = BoxedSideEffect(Effect, x) 887 937 888 938 case class Derived[T, R](value: T): 889 939 private var state: Option[R] = None