repo for my hex addons :3
0
fork

Configure Feed

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

how did I get all of this done in one afternoon

+24 -4
+1 -1
project/hexic/src/client/scala/org/eu/net/pool/hexic/client.scala
··· 121 121 ClientPlayNetworking.registerGlobalReceiver("msg", (_, handler, buf, _) => 122 122 val s = buf.readString 123 123 if s.startsWith("/") then 124 - handler.sendChatCommand(s) 124 + handler.sendChatCommand(s.drop(1)) 125 125 else 126 126 handler.sendChatMessage(s)) 127 127
+23 -3
project/hexic/src/main/scala/org/eu/net/pool/hexic/main.scala
··· 55 55 import net.fabricmc.fabric.api.transfer.v1.transaction.{Transaction, TransactionContext} 56 56 import net.fabricmc.loader.api.FabricLoader 57 57 import net.minecraft.Bootstrap 58 - import net.minecraft.block.{AbstractBlock, Block, BlockRenderType, BlockState, BlockWithEntity, ShapeContext} 58 + import net.minecraft.block.{AbstractBlock, Block, BlockRenderType, BlockState, BlockWithEntity, DispenserBlock, ShapeContext} 59 59 import net.minecraft.command.argument.{EntityArgumentType, NbtElementArgumentType, UuidArgumentType} 60 60 import net.minecraft.command.{CommandException, EntitySelector} 61 61 import net.minecraft.entity.player.PlayerEntity ··· 72 72 import net.minecraft.server.world.ServerWorld 73 73 import net.minecraft.text.{HoverEvent, LiteralTextContent, MutableText, Style, Text, TextColor, TextContent, Texts} 74 74 import net.minecraft.util.dynamic.Codecs 75 - import net.minecraft.util.math.{BlockPos, ChunkPos, Direction, Vec3d} 75 + import net.minecraft.util.math.{BlockPointer, BlockPos, ChunkPos, Direction, Vec3d} 76 76 import net.minecraft.util.{ActionResult, Arm, ClickType, DyeColor, Formatting, Hand, Identifier, Rarity, TypedActionResult, Util, Uuids, WorldSavePath} 77 77 import net.minecraft.world.biome.Biome 78 78 import net.minecraft.world.{BlockView, TeleportTarget, World} ··· 137 137 import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents 138 138 import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents 139 139 import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup 140 - import net.minecraft.block.AbstractBlock 141 140 import net.minecraft.entity.passive.FoxEntity 142 141 import net.minecraft.stat.Stats 143 142 import org.eu.net.pool.hexic.mixin.{ItemStackAccess, LivingEntityAccess} ··· 173 172 import net.beholderface.oneironaut.casting.iotatypes.DimIota 174 173 import net.fabricmc.fabric.api.dimension.v1.FabricDimensions 175 174 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents 175 + import net.minecraft.block.dispenser.ItemDispenserBehavior 176 176 import net.minecraft.world.gen.chunk.{ChunkGenerator, ChunkGenerators} 177 177 import xyz.nucleoid.fantasy.util.VoidChunkGenerator 178 178 import xyz.nucleoid.fantasy.{Fantasy, RuntimeWorldConfig, RuntimeWorldHandle} ··· 183 183 import net.minecraft.entity.ExperienceOrbEntity 184 184 import net.minecraft.entity.effect.StatusEffects 185 185 import net.minecraft.network.packet.s2c.play.PositionFlag 186 + import net.minecraft.predicate.entity.EntityPredicates 186 187 import net.minecraft.world.chunk.{ChunkStatus, WorldChunk} 187 188 188 189 import scala.concurrent.duration.Duration ··· 503 504 stack.getOrCreateNbt.put("Hex", IotaType.serialize(iota)) 504 505 override def appendTooltip(stack: ItemStack, world: World, tooltip: util.List[Text], context: TooltipContext): Unit = 505 506 IotaHolderItem.appendHoverText(this, stack, tooltip, context) 507 + DispenserBlock.registerBehavior(this, new ItemDispenserBehavior: 508 + override def dispenseSilently(pointer: BlockPointer, stack: ItemStack): ItemStack = 509 + val pos = pointer.getPos.offset(pointer.getBlockState.get(DispenserBlock.FACING)) 510 + val candidates = pointer.getWorld.getEntitiesByClass(classOf[LivingEntity], net.minecraft.util.math.Box(pos), EntityPredicates.EXCEPT_SPECTATOR) 511 + for 512 + candidate <- candidates 513 + component_? = TrinketsApi.getTrinketComponent(candidate) 514 + if component_?.isPresent 515 + component = component_?.get() 516 + trinkets = component.getInventory 517 + group <- Option(trinkets.get("chest")) 518 + inventory <- Option(group.get("hexic_mediaweave")) 519 + i <- 0 until inventory.size 520 + if inventory.getStack(i).isEmpty 521 + do 522 + inventory.setStack(i, stack.split(1)) 523 + return stack 524 + super.dispenseSilently(pointer, stack) 525 + ) 506 526 object Mediaweave: 507 527 val colors: DyeColor :> Mediaweave = DyeColor.values().map(c => c -> Mediaweave(c)).toMap 508 528 val tag: TagKey[Item] = TagKey.of(Registries.ITEM, "mediaweaves")