repo for my hex addons :3
0
fork

Configure Feed

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

tell a friend

+94 -4
+38 -3
src/client/scala/org/net/eu/pool/mica/client/MicaClient.scala
··· 5 5 import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider 6 6 import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents 7 7 import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator 8 + import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider 8 9 import net.fabricmc.fabric.api.renderer.v1.render.RenderLayerHelper 10 + import net.minecraft.advancement.criterion.{Criteria, ImpossibleCriterion} 11 + import net.minecraft.advancement.{Advancement, AdvancementCriterion, AdvancementDisplay, AdvancementDisplays, AdvancementEntry, AdvancementFrame, AdvancementRequirements, AdvancementRewards} 9 12 import net.minecraft.client.MinecraftClient 10 13 import net.minecraft.client.gl.RenderPipelines 11 14 import net.minecraft.client.render.{BlockRenderLayer, OverlayTexture, RenderLayer, RenderLayers, TexturedRenderLayers, VertexConsumer, VertexConsumerProvider} 12 15 import net.minecraft.client.texture.{Sprite, SpriteAtlasTexture, SpriteLoader} 13 16 import net.minecraft.client.util.math.MatrixStack 14 - import net.minecraft.util.Identifier 17 + import net.minecraft.util.{AssetInfo, Identifier} 15 18 import net.minecraft.util.math.{BlockPos, Direction, MathHelper} 16 19 import org.net.eu.pool.mica.{AbstractRuneStorage, EmptyRune, EndQuoteRune, HasRegistry, QuoteRune, Rune, RuneShift, registryFor, given} 17 20 import net.minecraft.client.data.{BlockStateModelGenerator, ItemModelGenerator, ItemModels, Model, ModelIds, ModelSupplier} 18 21 import net.minecraft.client.render.item.model.ItemModel 22 + import net.minecraft.item.{ItemStack, Items} 23 + import net.minecraft.registry.RegistryWrapper 24 + import net.minecraft.text.Text 19 25 import net.minecraft.util.math.Direction.Axis 20 26 27 + import java.util.Optional 28 + import java.util.function.Consumer 21 29 import scala.util.chaining.scalaUtilChainingOps 30 + import scala.collection.convert.ImplicitConversions.given 22 31 23 32 def blockAtlas = MinecraftClient.getInstance.getSpriteAtlas(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE).apply(_) 24 33 ··· 238 247 ) 239 248 240 249 def datagen(using gen: FabricDataGenerator): Unit = 241 - given FabricDataGenerator#Pack = gen.createPack() 242 - registryFor[Rune].forEach(datagenRune(_)) 250 + given pack: FabricDataGenerator#Pack = gen.createPack() 251 + registryFor[Rune].forEach(datagenRune(_)) 252 + pack.addProvider( 253 + new FabricAdvancementProvider(_, _) { 254 + override def generateAdvancement(wrapperLookup: RegistryWrapper.WrapperLookup, consumer: Consumer[AdvancementEntry]): Unit = 255 + val rootId = Identifier.of("mica", "without_me") 256 + consumer.accept(AdvancementEntry( 257 + rootId, 258 + Advancement( 259 + parent = Optional.empty, 260 + display = Optional.of(AdvancementDisplay( 261 + icon = ItemStack(Items.ENDER_EYE), 262 + title = Text.literal("Guess Who\'s Back, Back Again"), 263 + description = Text.literal("Return to a Teleport Slate from over 32 blocks away"), 264 + background = Optional.empty, 265 + frame = AdvancementFrame.CHALLENGE, 266 + showToast = true, 267 + announceToChat = true, 268 + hidden = true, 269 + )), 270 + rewards = AdvancementRewards.NONE, 271 + criteria = java.util.Map.of("mojang_won\'t_let_me_be", AdvancementCriterion(Criteria.IMPOSSIBLE, ImpossibleCriterion.Conditions())), 272 + requirements = AdvancementRequirements.allOf(Seq("mojang_won\'t_let_me_be")), 273 + sendsTelemetryEvent = false 274 + ) 275 + )) 276 + } 277 + )
+56 -1
src/main/scala/org/net/eu/pool/mica/Mica.scala
··· 15 15 import net.minecraft.entity.player.PlayerEntity 16 16 import net.minecraft.item.ItemStack 17 17 import net.minecraft.loot.entry.ItemEntry 18 + import net.minecraft.network.codec.PacketCodecs 19 + import net.minecraft.server.network.ServerPlayerEntity 18 20 import net.minecraft.server.world.ServerWorld 19 21 import net.minecraft.sound.{SoundCategory, SoundEvent, SoundEvents} 20 22 import net.minecraft.state.property.Property 21 23 import net.minecraft.text.TextColor 22 - import net.minecraft.util.Uuids 24 + import net.minecraft.util.{Hand, Rarity, Uuids} 23 25 import net.minecraft.util.shape.VoxelShapes 24 26 import net.minecraft.world.World.ExplosionSourceType 25 27 import org.net.eu.pool.mica 28 + import org.net.eu.pool.mica.CraftTrinketRune.Effect 26 29 import org.slf4j.{Logger, LoggerFactory} 27 30 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable 28 31 ··· 792 795 @register("teleport") 793 796 object TeleportRune extends Rune: 794 797 override type Data = RuneRef 798 + override def surfaceSprite: Identifier = Rune.SPELL_TEXTURE 795 799 @register("teleport") 796 800 object Effect extends SideEffect: 797 801 override type Data = (RuneRef, EntityRef) ··· 807 811 throw RuneError(Text.literal("Could not find ").append(summon[ValueType[EntityRef]].show(data._2)).append(" in the world"))(using data._1) 808 812 val pos = entity.getPos 809 813 entity.setPosition(data._1.floatPos) 814 + entity match 815 + case player: ServerPlayerEntity => 816 + val delta = pos.distanceTo(data._1.floatPos) 817 + println(s"${player} moved ${delta} blocks by teleporting") 818 + if delta >= 32 then 819 + println("and gets the advancement") 820 + val adv = player.getServer.getAdvancementLoader.get(Identifier.of(modid, "without_me")) 821 + player.getAdvancementTracker.grantCriterion(adv, "mojang_won\'t_let_me_be") 810 822 ((), pos) 811 823 override def unexecute(data: (RuneRef, EntityRef), `return`: Unit, revert: Vec3d)(using world: World): Unit = 812 824 data._2.entity.setPosition(revert) ··· 839 851 840 852 given `given_Codec_java.lang.Double`: Codec[java.lang.Double] = Codec.DOUBLE 841 853 854 + val sideEffectComponent = ComponentType.builder().codec(codec[BoxedSideEffect]).packetCodec(PacketCodecs.codec(codec[BoxedSideEffect])).build() 855 + val runicTrinketItem = 856 + val r = cursedRegister(Identifier.of("mica", "trinket"), Item.Settings().rarity(Rarity.UNCOMMON)): 857 + new Item(_): 858 + override def use(using world: World, user: PlayerEntity, hand: Hand): ActionResult = 859 + val stack = user.getStackInHand(hand) 860 + val effect = stack.get(sideEffectComponent) 861 + try 862 + effect.effect.execute(effect.data, user) 863 + ActionResult.SUCCESS 864 + catch case e: Exception => 865 + ActionResult.FAIL 866 + r.register() 867 + r.value 868 + 869 + @register("mk_trinket") 870 + private[mica] object CraftTrinketRune extends Rune: 871 + override type Data = RuneRef 872 + @register("mk_trinket/0") 873 + object Frame extends ThunkFrame: 874 + override type Data = (RuneRef, BoxedThunk) 875 + override def accept[T: ValueType as v](data: (RuneRef, BoxedThunk), value: T): BoxedThunk = data._2.tag.accept(data._2.data, BoxedSideEffect(Effect, (data._1, v.cast[BoxedSideEffect](value).get))) 876 + @register("mk_trinket") 877 + object Effect extends SideEffect: 878 + override type Data = (RuneRef, BoxedSideEffect) 879 + override type Return = EntityRef 880 + override type RevertData = Unit 881 + override def check(data: (RuneRef, BoxedSideEffect))(using world: World): Unit = () 882 + override def execute(data: (RuneRef, BoxedSideEffect))(using world: World): (EntityRef, Unit) = 883 + val stack = ItemStack(runicTrinketItem) 884 + stack.set(sideEffectComponent, data._2) 885 + val p = data._1.floatPos 886 + val entity = ItemEntity(world, p.x, p.y, p.z, stack) 887 + world.spawnEntity(entity) 888 + (EntityRef(entity), ()) 889 + override def unexecute(data: (RuneRef, BoxedSideEffect), `return`: EntityRef, revert: Unit)(using world: World): Unit = 890 + `return`.entity.discard() 891 + override def read(rhs: List[(Rune, RuneRef)])(using ref: RuneRef, world: World): (RuneRef, List[(Rune, RuneRef)]) = (ref, rhs) 892 + override def execute(data: RuneRef, frame: BoxedThunk): BoxedThunk = BoxedThunk(Frame, (data, frame)) 893 + register: 894 + CraftTrinketRune.item.register() 895 + given Codec[(RuneRef, BoxedSideEffect)] = Codec.pair(codec[RuneRef], codec[BoxedSideEffect]).xmap(p => (p.getFirst, p.getSecond), p => Pair(p._1, p._2)) 842 896 @register("reveal") 843 897 private[mica] object RevealRune extends Rune: 844 898 override type Data = RuneRef ··· 1216 1270 *///undivert(1) 1217 1271 def init(): Unit = 1218 1272 runeProbe.register() 1273 + Registry.register(Registries.DATA_COMPONENT_TYPE, Identifier.of(modid, "effect"), sideEffectComponent) 1219 1274 register()