repo for my hex addons :3
0
fork

Configure Feed

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

pawify

+51 -65
+3 -3
doc/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/appendix.json
··· 22 22 }, 23 23 { 24 24 "type": "hexcasting:pattern", 25 - "op_id": "hexic:dye_offhand", 26 - "anchor": "hexic:dye_offhand", 25 + "op_id": "hexic:dye_offpaw", 26 + "anchor": "hexic:dye_offpaw", 27 27 "input": "pigment", 28 28 "output": "", 29 - "text": "book.hexic.page.dye_offhand" 29 + "text": "book.hexic.page.dye_offpaw" 30 30 }, 31 31 { 32 32 "type": "hexcasting:pattern",
+3 -3
doc/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/appendix.json
··· 22 22 }, 23 23 { 24 24 "type": "hexcasting:pattern", 25 - "op_id": "hexic:dye_offhand", 26 - "anchor": "hexic:dye_offhand", 25 + "op_id": "hexic:dye_offpaw", 26 + "anchor": "hexic:dye_offpaw", 27 27 "input": "pigment", 28 28 "output": "", 29 - "text": "book.hexic.page.dye_offhand" 29 + "text": "book.hexic.page.dye_offpaw" 30 30 }, 31 31 { 32 32 "type": "hexcasting:pattern",
+2 -2
project/hexic/src/client/scala/org/eu/net/pool/hexic/client.scala
··· 328 328 "decollar" -> "Untie Mediaweave", 329 329 "deleteworld" -> "Shatter Demiplane", 330 330 "drop" -> "Rejection Distillation", 331 - "dye_offhand" -> "Apply Pigment", 331 + "dye_offpaw" -> "Apply Pigment", 332 332 "erase" -> "Erase Block", 333 333 "extract" -> "Excisor's Gambit", 334 334 "findview" -> "Reflection Purification", ··· 386 386 case p: PigmentItem => gen.add("item.hexic.stringworm." + p.getTranslationKey, "Shimmering " + hexLang(p.getTranslationKey).replace("Pigment", "Stringworm")) 387 387 case e => println(e) 388 388 for page -> text <- Vector( 389 - "dye_offhand" -> "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment.", 389 + "dye_offpaw" -> "Imbues the item held in my offhand (e.g. a $(l:items/hexcasting)$(item)casting item/$) with the given pigment.", 390 390 "erase" -> "Erases the _Hex or iota contained within a dropped item or block. Costs one dust per item.", 391 391 "get_other_caster" -> "Adds the closest sentient being, excluding me, to the stack.", 392 392 "modulo" -> "Similar to Modulus, but differs for negative numbers: -8 %%₁ 3 = -2, but -8 %%₂ 3 = 1.",
+3 -3
project/hexic/src/main/resources/assets/hexic/jsonpatch/pigments.jsonpatch
··· 3 3 4 4 $pages = arrays.push($pages, { 5 5 type: "hexcasting:pattern", 6 - op_id: "hexic:dye_offhand", 7 - anchor: "hexic:dye_offhand", 6 + op_id: "hexic:dye_offpaw", 7 + anchor: "hexic:dye_offpaw", 8 8 input: "pigment", 9 9 output: "", 10 - text: "book.hexic.page.dye_offhand" 10 + text: "book.hexic.page.dye_offpaw" 11 11 });
+2 -2
project/hexic/src/main/resources/assets/hexic/lang/zh_cn.json
··· 1 1 { 2 - "book.hexic.page.dye_offhand": "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。", 2 + "book.hexic.page.dye_offpaw": "将所给染色剂内化到我副手中的物品(如$(l:items/hexcasting)$(item)施法物品/$)里。", 3 3 "book.hexic.page.erase": "清除物品实体或方块中的$(hex)咒术/$或 iota。每个物品消耗 1 个紫水晶粉。", 4 4 "book.hexic.page.get_other_caster": "将离我最近的有智慧存在压入栈,我自己不计入统计范围。", 5 5 "book.hexic.page.modulo": "与余数之馏化类似,但两者在负数上的表现不同:-8 %%₁ 3 = -2,而 -8 %%₂ 3 = 1。", ··· 8 8 "hexcasting.action.hexic:blind": "隐阳西沉", 9 9 "hexcasting.action.hexic:deleteworld": "击碎半位面", 10 10 "hexcasting.action.hexic:drop": "拒斥之馏化", 11 - "hexcasting.action.hexic:dye_offhand": "应用染色剂", 11 + "hexcasting.action.hexic:dye_offpaw": "应用染色剂", 12 12 "hexcasting.action.hexic:erase": "清除方块", 13 13 "hexcasting.action.hexic:extract": "切除器之策略", 14 14 "hexcasting.action.hexic:findview": "精思之纯化",
+13 -13
project/hexic/src/main/scala/org/eu/net/pool/hexic/main.scala
··· 14 14 import at.petrak.hexcasting.api.casting.eval.{CastResult, CastingEnvironment, CastingEnvironmentComponent, MishapEnvironment, OperationResult, ResolvedPattern, ResolvedPatternType} 15 15 import at.petrak.hexcasting.api.casting.iota.* 16 16 import at.petrak.hexcasting.api.casting.math.{HexDir, HexPattern} 17 - import at.petrak.hexcasting.api.casting.mishaps.{Mishap, MishapBadCaster, MishapBadOffhandItem, MishapInvalidIota, MishapInvalidOperatorArgs, MishapNotEnoughArgs, MishapOthersName, MishapTooManyCloseParens} 17 + import at.petrak.hexcasting.api.casting.mishaps.{Mishap, MishapBadCaster, MishapInvalidIota, MishapInvalidOperatorArgs, MishapNotEnoughArgs, MishapOthersName, MishapTooManyCloseParens, MishapBadOffhandItem as MishapBadOffpawItem} 18 18 import at.petrak.hexcasting.api.pigment.FrozenPigment 19 19 import at.petrak.hexcasting.api.utils.{HexUtils, MediaHelper} 20 20 import at.petrak.hexcasting.common.lib.{HexAttributes, HexItems, HexRegistries, HexSounds} ··· 73 73 import net.minecraft.text.{HoverEvent, LiteralTextContent, MutableText, Style, Text, TextColor, TextContent, Texts} 74 74 import net.minecraft.util.dynamic.Codecs 75 75 import net.minecraft.util.math.{BlockPointer, BlockPos, ChunkPos, Direction, Vec3d} 76 - import net.minecraft.util.{ActionResult, Arm, ClickType, DyeColor, Formatting, Hand, Identifier, Rarity, TypedActionResult, Util, Uuids, WorldSavePath} 76 + import net.minecraft.util.{ActionResult, Arm, ClickType, DyeColor, Formatting, Identifier, Rarity, TypedActionResult, Util, Uuids, WorldSavePath, Hand as Paw} 77 77 import net.minecraft.world.biome.Biome 78 78 import net.minecraft.world.{BlockView, TeleportTarget, World} 79 79 import org.eu.net.pool.hexic ··· 492 492 493 493 case class Pen private [hexic] (color: DyeColor) extends Item(Item.Settings().maxCount(1)) with Registered(Registries.ITEM, s"pen/$color"): 494 494 override def toString = s"$getClass(color=$color)${super[Item].toString}" 495 - override def use(world: World, player: PlayerEntity, hand: Hand): TypedActionResult[ItemStack] = 495 + override def use(world: World, player: PlayerEntity, paw: Paw): TypedActionResult[ItemStack] = 496 496 // if player.getAttributeValue(HexAttributes.FEEBLE_MIND) > 0.0 then 497 - // TypedActionResult.fail(player.getStackInHand(hand)) 497 + // TypedActionResult.fail(player.getStackInHand(paw)) 498 498 // else 499 499 if !world.isClient && player.isInstanceOf[ServerPlayerEntity] then 500 500 val serverPlayer: ServerPlayerEntity = player.asInstanceOf[ServerPlayerEntity] 501 - val vm = IXplatAbstractions.INSTANCE.getStaffcastVM(serverPlayer, hand) 501 + val vm = IXplatAbstractions.INSTANCE.getStaffcastVM(serverPlayer, paw) 502 502 val patterns = IXplatAbstractions.INSTANCE.getPatternsSavedInUi(serverPlayer).asScala 503 503 val descs = vm.generateDescs 504 - IXplatAbstractions.INSTANCE.sendPacketToPlayer(serverPlayer, new MsgOpenSpellGuiS2C(hand, patterns, descs.getFirst, descs.getSecond, 0)) 504 + IXplatAbstractions.INSTANCE.sendPacketToPlayer(serverPlayer, new MsgOpenSpellGuiS2C(paw, patterns, descs.getFirst, descs.getSecond, 0)) 505 505 player.incrementStat(Stats.USED.getOrCreateStat(this)) 506 - TypedActionResult.success(player.getStackInHand(hand)) 506 + TypedActionResult.success(player.getStackInHand(paw)) 507 507 object Pen: 508 508 val instances: DyeColor :> Pen = DyeColor.values.map(c => c -> new Pen(c)).toMap 509 509 ··· 923 923 private val DUST_AMOUNT = new DecimalFormat("###,###.##") 924 924 val wizard = Item(Item.Settings().rarity(Rarity.EPIC).maxCount(1)) 925 925 926 - val aLotOfMedia = (200000 /* max phial size */ * 6 /* phials per small pouch */ * 4 /* small pouches per large pouch */ * (36 /* inventory slots */ + 4 /* armor slots */ + 2 /* offhands */) + 20 /* healthcasting */) * MediaConstants.DUST_UNIT 926 + val aLotOfMedia = (200000 /* max phial size */ * 6 /* phials per small pouch */ * 4 /* small pouches per large pouch */ * (36 /* inventory slots */ + 4 /* armor slots */ + 2 /* offpaws */) + 20 /* healthcasting */) * MediaConstants.DUST_UNIT 927 927 928 928 class Event[T, R](default: T => R) extends (T => R): 929 929 private var current = default ··· 1104 1104 override def getCollisionShape(state: BlockState, world: BlockView, pos: BlockPos, context: ShapeContext): VoxelShape = 1105 1105 getOutlineShape(state, world, pos, context) 1106 1106 1107 - override def onUse(state: BlockState, world: World, pos: BlockPos, player: PlayerEntity, hand: Hand, hit: BlockHitResult): ActionResult = boundary: 1107 + override def onUse(state: BlockState, world: World, pos: BlockPos, player: PlayerEntity, paw: Paw, hit: BlockHitResult): ActionResult = boundary: 1108 1108 lazy val entity = findEntity(world, pos).getOrElse(boundary.break(ActionResult.FAIL)) 1109 - player.getStackInHand(hand) match 1109 + player.getStackInHand(paw) match 1110 1110 case stack@ItemStackAccess(HexItems.CHARGED_AMETHYST, _, _) if !(for i <- 0 until 14; j <- 0 until 14 yield entity.bit(i, j)).all => 1111 1111 for i <- 0 until 14; j <- 0 until 14 do 1112 1112 entity.bit(i, j) = true ··· 1146 1146 registerHopperEndpoint <- classNamed("org.eu.net.pool.registerHopperEndpoint") 1147 1147 do 1148 1148 registerHopperEndpoint.runtimeClass.newInstance().asInstanceOf[() => Unit]() 1149 - Patterns.register("dye_offhand", w"eqdeeqdweeqddqdwwdew"): 1149 + Patterns.register("dye_offpaw", w"eqdeeqdweeqddqdwwdew"): 1150 1150 Patterns.mkAction: (img, cont) => 1151 1151 val stack = img.getStack.asScala 1152 1152 stack.lastOption.getOrElse(throw MishapNotEnoughArgs(1, 0)) match 1153 1153 case p: PigmentIota => 1154 - val info = summon[CastingEnvironment].getHeldItemToOperateOn(!_.isEmpty).pipe(Option(_)).getOrElse(throw MishapBadOffhandItem(null, Text.translatable("text.hexic.pigment_holder_item"))) 1154 + val info = summon[CastingEnvironment].getHeldItemToOperateOn(!_.isEmpty).pipe(Option(_)).getOrElse(throw MishapBadOffpawItem(null, Text.translatable("text.hexic.pigment_holder_item"))) 1155 1155 (img.withStack(_.init), cont, HexEvalSounds.SPELL, Seq: 1156 1156 OperatorSideEffect.AttemptSpell( 1157 1157 new RenderedSpell: ··· 1587 1587 summon[CastingEnvironment].getCastingEntity match 1588 1588 case caster: ServerPlayerEntity => 1589 1589 val staffcast = HexCardinalComponents.STAFFCAST_IMAGE.get(caster) 1590 - val oldImage = staffcast.getVM(Hand.MAIN_HAND).getImage 1590 + val oldImage = staffcast.getVM(Paw.MAIN_HAND).getImage 1591 1591 staffcast.setImage(img) 1592 1592 val vm = staffcast.getVM(summon[CastingEnvironment].getCastingHand) 1593 1593 try
+3 -7
project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ItemMixin.java
··· 3 3 import at.petrak.hexcasting.api.casting.eval.vm.CastingVM; 4 4 import at.petrak.hexcasting.api.casting.iota.GarbageIota; 5 5 import at.petrak.hexcasting.api.casting.iota.IotaType; 6 - import at.petrak.hexcasting.api.casting.iota.ListIota; 7 6 import at.petrak.hexcasting.xplat.IXplatAbstractions; 8 7 import net.minecraft.client.item.TooltipContext; 9 8 import net.minecraft.entity.player.PlayerEntity; ··· 14 13 import net.minecraft.nbt.NbtList; 15 14 import net.minecraft.server.network.ServerPlayerEntity; 16 15 import net.minecraft.server.world.ServerWorld; 17 - import net.minecraft.text.MutableText; 18 16 import net.minecraft.text.Text; 19 - import net.minecraft.text.TranslatableTextContent; 20 17 import net.minecraft.util.Hand; 21 18 import net.minecraft.util.TypedActionResult; 22 19 import net.minecraft.world.World; 23 20 import org.jetbrains.annotations.Nullable; 24 21 import org.spongepowered.asm.mixin.Mixin; 25 - import org.spongepowered.asm.mixin.Unique; 26 22 import org.spongepowered.asm.mixin.injection.At; 27 23 import org.spongepowered.asm.mixin.injection.Inject; 28 24 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; ··· 45 41 } 46 42 47 43 @Inject(method = "use", at = @At("HEAD"), cancellable = true) 48 - void use(World world, PlayerEntity user, Hand hand, CallbackInfoReturnable<TypedActionResult<ItemStack>> cir) { 44 + void use(World world, PlayerEntity user, Hand paw, CallbackInfoReturnable<TypedActionResult<ItemStack>> cir) { 49 45 if ((Object) this != ECHO_SHARD) return; 50 - ItemStack stack = user.getStackInHand(hand); 46 + ItemStack stack = user.getStackInHand(paw); 51 47 NbtCompound nbt = stack.getNbt(); 52 48 if (nbt == null) return; 53 49 NbtList patterns = nbt.getList("hexic:memory", NbtElement.COMPOUND_TYPE); 54 50 if (patterns.isEmpty() || world.isClient || !(world instanceof ServerWorld serverWorld && user instanceof ServerPlayerEntity serverPlayer)) return; 55 - CastingVM staffcast = IXplatAbstractions.INSTANCE.getStaffcastVM(serverPlayer, hand); 51 + CastingVM staffcast = IXplatAbstractions.INSTANCE.getStaffcastVM(serverPlayer, paw); 56 52 stack.decrement(1); 57 53 NbtCompound newNbt = nbt.copy(); 58 54 newNbt.remove("hexic:memory");
+3 -3
project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/StaffCastEnvMixin.java
··· 62 62 return; 63 63 } 64 64 // TODO: consider whether shards should intercept pen patterns 65 - ItemStack offhandStack = sender.getStackInHand(vm.getEnv().getOtherHand()); 66 - if (offhandStack.isOf(ECHO_SHARD)) { 67 - NbtCompound tag = offhandStack.getOrCreateNbt(); 65 + ItemStack offpawStack = sender.getStackInHand(vm.getEnv().getOtherHand()); 66 + if (offpawStack.isOf(ECHO_SHARD)) { 67 + NbtCompound tag = offpawStack.getOrCreateNbt(); 68 68 NbtList queuedPatterns = tag.getList("hexic:memory", NbtElement.COMPOUND_TYPE); 69 69 queuedPatterns.add(IotaType.serialize(new PatternIota(msg.pattern()))); 70 70 tag.put("hexic:memory", queuedPatterns);
+19 -29
util/src/main/scala/org/eu/net/pool/phlib/main.scala
··· 1 1 package org.eu.net.pool 2 2 package phlib 3 3 4 - import at.petrak.hexcasting.api.utils.HexUtils 5 - import com.google.gson.JsonElement 6 - import com.mojang.serialization.{Codec, DynamicOps, JsonOps} 7 - import net.minecraft.nbt.{NbtByte, NbtByteArray, NbtDouble, NbtEnd, NbtFloat, NbtInt, NbtIntArray, NbtList, NbtLong, NbtLongArray, NbtOps, NbtShort, NbtString, NbtType} 8 - import net.minecraft.util.dynamic.Codecs 9 - import at.petrak.hexcasting.api.addldata.ADMediaHolder 10 - import scala.collection.{IterableOnceOps, IterableOps} 11 - import at.petrak.hexcasting.api.casting.{ActionRegistryEntry, ParticleSpray, RenderedSpell, SpellList} 12 - import at.petrak.hexcasting.api.casting.arithmetic.Arithmetic 13 - import at.petrak.hexcasting.api.casting.arithmetic.operator.Operator 14 - import at.petrak.hexcasting.api.casting.castables.{Action, ConstMediaAction, OperationAction, SpecialHandler, SpellAction} 15 - import at.petrak.hexcasting.api.casting.eval.env.PlayerBasedCastEnv 16 - import at.petrak.hexcasting.api.casting.eval.sideeffects.OperatorSideEffect.DoMishap 4 + import at.petrak.hexcasting.api.casting.ActionRegistryEntry 5 + import at.petrak.hexcasting.api.casting.castables.{Action, ConstMediaAction, OperationAction} 17 6 import at.petrak.hexcasting.api.casting.eval.sideeffects.{EvalSound, OperatorSideEffect} 18 - import at.petrak.hexcasting.api.casting.eval.vm.{CastingImage, CastingVM, ContinuationFrame, FrameEvaluate, SpellContinuation} 19 - import at.petrak.hexcasting.api.casting.eval.{CastResult, CastingEnvironment, CastingEnvironmentComponent, MishapEnvironment, OperationResult, ResolvedPattern, ResolvedPatternType} 7 + import at.petrak.hexcasting.api.casting.eval.vm.{CastingImage, CastingVM, SpellContinuation} 8 + import at.petrak.hexcasting.api.casting.eval.{CastResult, CastingEnvironment, CastingEnvironmentComponent, OperationResult} 20 9 import at.petrak.hexcasting.api.casting.iota.* 21 10 import at.petrak.hexcasting.api.casting.math.{HexDir, HexPattern} 22 - import at.petrak.hexcasting.api.casting.mishaps.{Mishap, MishapBadCaster, MishapBadOffhandItem, MishapInvalidIota, MishapInvalidOperatorArgs, MishapNotEnoughArgs, MishapOthersName, MishapTooManyCloseParens} 11 + import at.petrak.hexcasting.api.casting.mishaps.{Mishap, MishapInvalidIota, MishapNotEnoughArgs} 12 + import at.petrak.hexcasting.api.utils.HexUtils 23 13 import at.petrak.hexcasting.common.lib.HexRegistries 24 14 import at.petrak.hexcasting.fabric.cc.HexCardinalComponents 15 + import com.google.gson.JsonElement 25 16 import com.mojang.brigadier.builder.{LiteralArgumentBuilder, RequiredArgumentBuilder} 17 + import com.mojang.serialization.{Codec, DynamicOps, JsonOps} 26 18 import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback 27 - import net.minecraft.command.{CommandException, EntitySelector} 28 19 import net.minecraft.command.argument.{EntityArgumentType, NbtElementArgumentType, RegistryEntryArgumentType} 29 - import net.minecraft.nbt.{NbtCompound, NbtElement} 20 + import net.minecraft.command.{CommandException, EntitySelector} 21 + import net.minecraft.nbt.* 30 22 import net.minecraft.server.command.ServerCommandSource 31 23 import net.minecraft.server.network.ServerPlayerEntity 32 24 import net.minecraft.server.world.ServerWorld 33 25 import net.minecraft.util.Hand 26 + import net.minecraft.util.dynamic.Codecs 34 27 35 28 import scala.annotation.tailrec 29 + import scala.collection.{IterableOnceOps, IterableOps} 36 30 import scala.math.Ordered.orderingToOrdered 37 31 import scala.reflect.ClassTag 38 32 import scala.util.{Failure, Success, Try} 39 33 export scala.collection.convert.ImplicitConversions.* 40 34 export scala.util.chaining._ 41 - import java.util 35 + import at.petrak.hexcasting.xplat.IXplatAbstractions 36 + import net.fabricmc.fabric.api.event.{Event, EventFactory} 42 37 import net.fabricmc.loader.api.FabricLoader 38 + import net.minecraft.registry.{Registry, RegistryKey} 39 + import net.minecraft.text.{MutableText, Text} 43 40 import net.minecraft.util.Identifier 41 + import org.slf4j.{Logger, LoggerFactory} 42 + 43 + import java.util 44 44 import scala.util.boundary 45 - import org.slf4j.LoggerFactory 46 - import org.slf4j.Logger 47 - import at.petrak.hexcasting.xplat.IXplatAbstractions 48 - import net.minecraft.registry.Registry 49 - import net.minecraft.registry.RegistryKey 50 - import net.minecraft.text.MutableText 51 - import net.minecraft.text.Text 52 - import net.fabricmc.fabric.api.event.Event 53 - import net.fabricmc.fabric.api.event.EventFactory 54 45 55 46 val fabric = FabricLoader.getInstance 56 47 val isDev = fabric.isDevelopmentEnvironment ··· 254 245 package mixin: 255 246 import net.minecraft.block.Block 256 247 import net.minecraft.item.Item 257 - import org.spongepowered.asm.mixin.injection.{At, Inject} 258 248 import org.spongepowered.asm.mixin.Mixin 259 249 @Mixin(value = Array(classOf[Item], classOf[Block])) 260 250 private[phlib] class AllocationTrackerMixin() extends AnyRef with AllocationTracked: