repo for my hex addons :3
0
fork

Configure Feed

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

registry fix, rune item name fix, rune side-face fix, util command

+86 -17
+64 -9
src/client/scala/org/net/eu/pool/mica/client/MicaClient.scala
··· 2 2 3 3 import com.google.gson.{JsonArray, JsonElement, JsonObject} 4 4 import com.mojang.blaze3d.systems.RenderSystem 5 + import com.mojang.blaze3d.vertex.VertexFormat 6 + import com.mojang.brigadier.builder.{ArgumentBuilder, LiteralArgumentBuilder} 7 + import net.fabricmc.fabric.api.client.command.v2.{ClientCommandManager, ClientCommandRegistrationCallback, FabricClientCommandSource} 5 8 import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider 6 9 import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking 7 10 import net.fabricmc.fabric.api.client.rendering.v1.{WorldRenderContext, WorldRenderEvents} ··· 13 16 import net.minecraft.advancement.{Advancement, AdvancementCriterion, AdvancementDisplay, AdvancementDisplays, AdvancementEntry, AdvancementFrame, AdvancementRequirements, AdvancementRewards} 14 17 import net.minecraft.client.MinecraftClient 15 18 import net.minecraft.client.gl.RenderPipelines 16 - import net.minecraft.client.render.{BlockRenderLayer, OverlayTexture, RenderLayer, RenderLayers, TexturedRenderLayers, VertexConsumer, VertexConsumerProvider} 19 + import net.minecraft.client.render.{BlockRenderLayer, OverlayTexture, RenderLayer, RenderLayers, Tessellator, TexturedRenderLayers, VertexConsumer, VertexConsumerProvider, VertexFormats} 17 20 import net.minecraft.client.texture.{Sprite, SpriteAtlasTexture, SpriteLoader} 18 21 import net.minecraft.client.util.math.MatrixStack 19 - import net.minecraft.util.{ActionResult, AssetInfo, Hand, Identifier} 22 + import net.minecraft.util.{ActionResult, AssetInfo, Formatting, Hand, Identifier} 20 23 import net.minecraft.util.math.{BlockPos, Direction, MathHelper} 21 - import org.net.eu.pool.mica.{AbstractRuneStorage, ClientExecutor, EmptyRune, EndQuoteRune, HasRegistry, QuoteRune, Rune, RuneShift, ServerExecutor, SidedExecutePacket, registryFor, given} 24 + import org.net.eu.pool.mica.{*, given} 22 25 import net.minecraft.client.data.{BlockStateModelGenerator, ItemModelGenerator, ItemModels, Model, ModelIds, ModelSupplier} 23 26 import net.minecraft.client.render.item.model.ItemModel 24 27 import net.minecraft.data.DataWriter 25 28 import net.minecraft.item.{Item, ItemStack, Items} 26 29 import net.minecraft.loot.{LootPool, LootTable} 27 30 import net.minecraft.network.packet.CustomPayload 28 - import net.minecraft.registry.{RegistryKey, RegistryKeys, RegistryWrapper} 31 + import net.minecraft.registry.{Registries, RegistryKey, RegistryKeys, RegistryWrapper} 29 32 import net.minecraft.server.network.ServerPlayerEntity 30 33 import net.minecraft.text.Text 31 34 import net.minecraft.util.hit.BlockHitResult 32 35 import net.minecraft.util.math.Direction.Axis 33 36 import net.minecraft.world.World 37 + import org.joml.{Matrix3f, Quaternionf, Quaternionfc} 34 38 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable 35 39 36 40 import java.nio.file.{Files, Path} ··· 147 151 normal = (0, 1, 0), 148 152 ) 149 153 r.quad( 150 - Vertex(pos = (-0.25f, 0f, -0.25f), uv = (0, 0), color = color, light = light, overlay = overlay), 151 - Vertex(pos = (-0.25f, 0.125f, -0.25f), uv = (1, 0), color = color, light = light, overlay = overlay), 152 - Vertex(pos = (0.25f, 0.125f, -0.25f), uv = (1, 1), color = color, light = light, overlay = overlay), 153 - Vertex(pos = (0.25f, 0f, -0.25f), uv = (0, 1), color = color, light = light, overlay = overlay), 154 + Vertex(pos = (-0.249f, 0f, -0.249f), uv = (0.5f, 0), color = color, light = light, overlay = overlay), 155 + Vertex(pos = (-0.249f, 0.125f, -0.249f), uv = (0.25f, 0), color = color, light = light, overlay = overlay), 156 + Vertex(pos = (0.249f, 0.125f, -0.249f), uv = (0.25f, 1), color = color, light = light, overlay = overlay), 157 + Vertex(pos = (0.249f, 0f, -0.249f), uv = (0.5f, 1), color = color, light = light, overlay = overlay), 154 158 normal = (0, 0, -1) 155 159 ) 160 + r.quad( 161 + Vertex(pos = (0.249f, 0f, 0.249f), uv = (0.25f, 0), color = color, light = light, overlay = overlay), 162 + Vertex(pos = (0.249f, 0.125f, 0.249f), uv = (0.5f, 0), color = color, light = light, overlay = overlay), 163 + Vertex(pos = (-0.249f, 0.125f, 0.249f), uv = (0.5f, 1), color = color, light = light, overlay = overlay), 164 + Vertex(pos = (-0.249f, 0f, 0.249f), uv = (0.25f, 1), color = color, light = light, overlay = overlay), 165 + normal = (0, 0, 1) 166 + ) 167 + withMatrices: 168 + matrices.peek.getPositionMatrix.mul(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1) 169 + matrices.peek.getNormalMatrix.mul(Matrix3f(0, 0, -1, 0, 1, 0, 1, 0, 0)) 170 + r.quad( 171 + Vertex(pos = (-0.249f, 0f, -0.249f), uv = (0.5f, 0), color = color, light = light, overlay = overlay), 172 + Vertex(pos = (0.249f, 0f, -0.249f), uv = (0.5f, 1), color = color, light = light, overlay = overlay), 173 + Vertex(pos = (0.249f, 0.125f, -0.249f), uv = (0.25f, 1), color = color, light = light, overlay = overlay), 174 + Vertex(pos = (-0.249f, 0.125f, -0.249f), uv = (0.25f, 0), color = color, light = light, overlay = overlay), 175 + normal = (0, 0, -1) 176 + ) 177 + r.quad( 178 + Vertex(pos = (0.249f, 0f, 0.249f), uv = (0.25f, 0), color = color, light = light, overlay = overlay), 179 + Vertex(pos = (-0.249f, 0f, 0.249f), uv = (0.25f, 1), color = color, light = light, overlay = overlay), 180 + Vertex(pos = (-0.249f, 0.125f, 0.249f), uv = (0.5f, 1), color = color, light = light, overlay = overlay), 181 + Vertex(pos = (0.249f, 0.125f, 0.249f), uv = (0.5f, 0), color = color, light = light, overlay = overlay), 182 + normal = (0, 0, 1) 183 + ) 156 184 r.sprite = Some(rune.sprite) 157 185 r.quad( 158 186 Vertex(pos = (-0.25f, 0.126f, -0.25f), uv = (0, 0), color = color, light = light, overlay = overlay), ··· 162 190 normal = (0, 1, 0), 163 191 ) 164 192 () 193 + 194 + def debugAxes(using matrices: MatrixStack, consumers: VertexConsumerProvider)(): Unit = 195 + val buf = consumers.getBuffer(RenderLayer.LINES) 196 + RenderSystem.lineWidth(2.0f) 197 + val matrix = matrices.peek 198 + def axis(x: Float, y: Float, z: Float) = 199 + buf.vertex(matrix, 0.0f, 0.0f, 0.0f).color(x, y, z, 1f).overlay(0, 15).normal(0, 0, 0) 200 + buf.vertex(matrix, x, y, z).color(x, y, z, 1f).overlay(0, 15).normal(0, 0, 0) 201 + axis(1, 0, 0) 202 + axis(0, 1, 0) 203 + axis(0, 0, 1) 165 204 166 205 class ModelBuilder extends ModelSupplier: 167 206 private var parent: Option[Identifier] = None ··· 304 343 ) 305 344 306 345 def init() = 307 - ClientPlayNetworking.registerGlobalReceiver[SidedExecutePacket[ServerExecutor]](SidedExecutePacket.id, (p, ctx) => p.payload(summon)) 346 + ClientPlayNetworking.registerGlobalReceiver[SidedExecutePacket[ServerExecutor]](SidedExecutePacket.id, (p, ctx) => p.payload(summon)) 347 + ClientCommandRegistrationCallback.EVENT.register: (d, reg) => 348 + d.register: 349 + val p = LiteralArgumentBuilder.literal[FabricClientCommandSource]("mica") 350 + p.`then`: 351 + val p = LiteralArgumentBuilder.literal[FabricClientCommandSource]("youLikeRunes") 352 + p.requires(_.getPlayer hasPermissionLevel 2) 353 + p.executes: ctx => 354 + registryFor[Rune].forEach: r => 355 + try 356 + val id = Registries.ITEM.getId(r.item.value) 357 + runOnServer: 358 + relevantPlayer.getInventory.offerOrDrop(ItemStack(Registries.ITEM.get(id))) 359 + catch case e: Exception => 360 + ctx.getSource.sendFeedback(Text literal e.getMessage styled (_ withColor Formatting.RED)) 361 + 0 362 + p.build()
+1 -5
src/main/scala/org/net/eu/pool/mica/AAA_Macros.scala
··· 146 146 val actualThis = Ref(cl.symbol.companionModule).asExprOf[t] 147 147 l += '{ 148 148 if !${actualThis}.isInstanceOf[ConditionallyRegistered] || ${actualThis}.asInstanceOf[ConditionallyRegistered].shouldRegister then 149 - Registry.register( 150 - compiletime.summonFrom: 151 - case r: Registry[? >: t] => r.asInstanceOf[Registry[t]] 152 - case _ => errorDeferred(${val s: String = s"Cannot find a registry for ${TypeRepr.of[t].show(using Printer.TypeReprShortCode)}"; Expr(s)}) 153 - , Identifier.of(${modid}.name, ${Expr(key)}), ${actualThis}.asInstanceOf[t]) 149 + Registry.register(summonInline[Registry[? >: t]].asInstanceOf[Registry[t]], Identifier.of(${modid}.name, ${Expr(key)}), ${actualThis}.asInstanceOf[t]) 154 150 () 155 151 } 156 152 List(ClassDef.copy(cl)(cl.symbol.name, cl.constructor, cl.parents, cl.self, cl.body)) :++ companion
+2 -1
src/main/scala/org/net/eu/pool/mica/Defs.scala
··· 6 6 import net.minecraft.block.{AbstractBlock, Block} 7 7 import net.minecraft.component.DataComponentTypes 8 8 import net.minecraft.entity.player.PlayerEntity 9 - import net.minecraft.item.{Item, ItemUsageContext} 9 + import net.minecraft.item.{Item, ItemStack, ItemUsageContext} 10 10 import net.minecraft.registry.{Registries, Registry, RegistryKey, RegistryKeys} 11 11 import net.minecraft.text.Text 12 12 import net.minecraft.util.math.Direction.{Axis, AxisDirection} ··· 272 272 throw IllegalStateException("Rune.item may not be referenced before the rune is registered") 273 273 cursedRegister(identifier, Item.Settings()): 274 274 new Item(_): 275 + override def getName(stack: ItemStack): Text = Text.translatable(identifier.toTranslationKey("mica.rune")).withColor(0xffe46e) 275 276 override def useOnBlock(using context: ItemUsageContext): ActionResult = 276 277 println("GOT HERE 2") 277 278 val p = context.getHitPos
+19 -2
src/main/scala/org/net/eu/pool/mica/Mica.scala
··· 36 36 import net.minecraft.util.shape.VoxelShapes 37 37 import net.minecraft.world.World.ExplosionSourceType 38 38 import org.net.eu.pool.mica 39 + import org.net.eu.pool.mica.DropRune.item 39 40 import org.net.eu.pool.mica.VoidRune.Frame 40 41 import org.slf4j.{Logger, LoggerFactory} 41 42 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable ··· 324 325 given nothingCodec: Codec[Nothing] = Codec.of(new Encoder[Nothing]: 325 326 override def encode[T](input: Nothing, ops: DynamicOps[T], prefix: T): DataResult[T] = input, Decoder.error("Nothing codec")) 326 327 327 - @register("noop") 328 328 object NoopEffect extends SideEffect: 329 329 override type Data = Unit 330 330 override type Return = Unit ··· 345 345 object Frame extends ThunkFrame: 346 346 type Data = BoxedThunk 347 347 override def accept[T: ValueType](data: BoxedThunk, value: T): BoxedThunk = data 348 + register { item.register() } 348 349 349 350 @register("copy") 350 351 object CopyRune extends SimpleRune: ··· 353 354 object Frame extends ThunkFrame: 354 355 type Data = BoxedThunk 355 356 override def accept[T: ValueType](data: BoxedThunk, value: T): BoxedThunk = data accept value accept value 357 + register { item.register() } 356 358 357 359 extension [T: Registry as r] (x: T) def registryId: Identifier = r.getId(x) 358 360 ··· 376 378 case (rune2, given RuneRef)::next => 377 379 val (boxed2, rhs) = rune2.read(next) 378 380 ((BoxedRune(rune, boxed), BoxedRune(rune2, boxed2)), rhs) 381 + register { item.register() } 379 382 380 383 override def execute(data: (BoxedRune, BoxedRune), frame: BoxedThunk): BoxedThunk = 381 384 val frame2 = data._1.rune.execute(data._1.data, frame) ··· 391 394 val (data, rhs) = head.read(next) 392 395 (BoxedRune(head, data), rhs) 393 396 override def execute(data: BoxedRune, frame: BoxedThunk): BoxedThunk = frame accept data 397 + register { item.register() } 398 + 399 + @register("unbox") 400 + object UnboxRune extends SimpleRune: 401 + @register("unbox/0") 402 + object Frame extends ThunkFrame: 403 + override type Data = BoxedThunk 404 + override def accept[T: ValueType](data: BoxedThunk, value: T): BoxedThunk = 405 + val rune = value.castValue[BoxedRune].get 406 + rune.rune.execute(rune.data, data) 407 + override def execute(frame: BoxedThunk): BoxedThunk = BoxedThunk(Frame, frame) 408 + register { item.register() } 394 409 395 410 class unsafe extends Annotation 396 411 ··· 421 436 def runOn(player: ServerPlayerEntity)(body: ServerExecutor ?=> Unit): Unit = 422 437 given ClientExecutor = ClientExecutor(player) 423 438 runOnClient(_ ?=> body) 439 + def relevantPlayer(using e: ClientExecutor) = e.player 424 440 425 441 // divert(-1) 426 442 trait ByteCodec[T]: ··· 912 928 given ValueType[(Rune, RuneRef)]: 913 929 val color = TextColor.fromRgb(0xffe46e) 914 930 override def eq[U: ValueType as v](x: (Rune, RuneRef), y: U): Boolean = v.cast[(Rune, RuneRef)](y).exists(y => x._1 eq y._1) 915 - override def show(x: (Rune, RuneRef)): Text = Text.literal(registryFor[Rune].getId(x._1).toTranslationKey("mica.runes")) 931 + override def show(x: (Rune, RuneRef)): Text = Text.translatable(registryFor[Rune].getId(x._1).toTranslationKey("mica.rune")) 916 932 917 933 @register("tone_indicator") 918 934 object PosLiteral extends Rune: ··· 1670 1686 def init(): Unit = 1671 1687 runeProbe.register() 1672 1688 Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(modid, "effect"), sideEffectComponent) 1689 + Registry.register(registryFor[SideEffect], Identifier.of(modid, "noop"), NoopEffect) 1673 1690 register() 1674 1691 println(s"Rune registry contains ${registryFor[Rune].size} runes") 1675 1692 val klsContainer = FabricLoader.getInstance().getModContainer("krysztal-language-scala").orElseGet(() => panic("no such mod 'krysztal-language-scala'"))