├── station-vanilla-fix-v0 └── src │ └── main │ ├── resources │ ├── assets │ │ ├── .mcassetsroot │ │ └── station-vanilla-fix-v0 │ │ │ └── icon.png │ └── data │ │ ├── .mcassetsroot │ │ └── minecraft │ │ └── stationapi │ │ └── tags │ │ ├── blocks │ │ ├── mineable │ │ │ ├── hoe.json │ │ │ ├── sword.json │ │ │ ├── shears.json │ │ │ ├── axe.json │ │ │ └── shovel.json │ │ ├── wool.json │ │ ├── leaves.json │ │ ├── logs.json │ │ ├── logs_that_burn.json │ │ ├── planks.json │ │ ├── infiniburn.json │ │ ├── needs_diamond_tool.json │ │ ├── rails.json │ │ ├── needs_stone_tool.json │ │ └── needs_iron_tool.json │ │ └── items │ │ ├── coals.json │ │ ├── saplings.json │ │ ├── logs.json │ │ ├── logs_that_burn.json │ │ └── planks.json │ └── java │ └── net │ └── modificationstation │ └── stationapi │ └── mixin │ └── vanillafix │ └── client │ ├── ScreenAccessor.java │ └── SelectWorldScreenAccessor.java ├── src ├── test │ ├── resources │ │ ├── assets │ │ │ ├── minecraft │ │ │ │ └── stationapi │ │ │ │ │ ├── models │ │ │ │ │ ├── item │ │ │ │ │ │ └── dirt.json │ │ │ │ │ └── block │ │ │ │ │ │ └── oak_stairs.json │ │ │ │ │ ├── blockstates │ │ │ │ │ └── dirt.json │ │ │ │ │ ├── textures │ │ │ │ │ └── block │ │ │ │ │ │ └── oak_log.png │ │ │ │ │ └── atlases │ │ │ │ │ └── game.json │ │ │ └── sltest │ │ │ │ ├── stationapi │ │ │ │ ├── models │ │ │ │ │ ├── item │ │ │ │ │ │ ├── test_block.json │ │ │ │ │ │ ├── farlands_block.json │ │ │ │ │ │ ├── variation_block_idle.json │ │ │ │ │ │ ├── variation_block_active.json │ │ │ │ │ │ ├── variation_block_passive.json │ │ │ │ │ │ ├── dull_pickaxe.json │ │ │ │ │ │ ├── pacifist_sword.json │ │ │ │ │ │ ├── test_pickaxe.json │ │ │ │ │ │ └── generated_item.json │ │ │ │ │ └── block │ │ │ │ │ │ ├── test_block.json │ │ │ │ │ │ ├── variation_block_idle.json │ │ │ │ │ │ ├── variation_block_active.json │ │ │ │ │ │ └── variation_block_passive.json │ │ │ │ ├── blockstates │ │ │ │ │ ├── test_block.json │ │ │ │ │ ├── variation_block.json │ │ │ │ │ └── farlands_block.json │ │ │ │ ├── textures │ │ │ │ │ ├── blocks │ │ │ │ │ │ ├── testAnimatedBlock.png.mcmeta │ │ │ │ │ │ ├── dirt_e.png │ │ │ │ │ │ ├── altar_top.png │ │ │ │ │ │ ├── testBlock.png │ │ │ │ │ │ ├── FreezerSide.png │ │ │ │ │ │ ├── FreezerTop.png │ │ │ │ │ │ ├── altar_bottom.png │ │ │ │ │ │ ├── altar_east.png │ │ │ │ │ │ ├── altar_north.png │ │ │ │ │ │ ├── altar_south.png │ │ │ │ │ │ ├── altar_west.png │ │ │ │ │ │ ├── farlandsSide.png │ │ │ │ │ │ ├── farlandsTop.png │ │ │ │ │ │ ├── farlandsBottom.png │ │ │ │ │ │ ├── testAnimatedBlock.png │ │ │ │ │ │ ├── indispensableBlock.png │ │ │ │ │ │ ├── variation_block_active.png │ │ │ │ │ │ ├── variation_block_idle.png │ │ │ │ │ │ └── variation_block_passive.png │ │ │ │ │ ├── items │ │ │ │ │ │ ├── stone.png │ │ │ │ │ │ ├── highres.png │ │ │ │ │ │ ├── nbtItem.png │ │ │ │ │ │ ├── oak_log.png │ │ │ │ │ │ ├── testItem.png │ │ │ │ │ │ └── testPickaxe.png │ │ │ │ │ └── gui │ │ │ │ │ │ └── effect │ │ │ │ │ │ ├── test_effect.png │ │ │ │ │ │ └── infinity_effect.png │ │ │ │ └── lang │ │ │ │ │ └── stats_US.lang │ │ │ │ ├── icon.png │ │ │ │ └── textures │ │ │ │ ├── skybox │ │ │ │ ├── sky1.png │ │ │ │ ├── sky2.png │ │ │ │ ├── sky3.png │ │ │ │ ├── sky4.png │ │ │ │ ├── sky5.png │ │ │ │ └── sky6.png │ │ │ │ ├── gui │ │ │ │ └── enchanter.png │ │ │ │ └── entities │ │ │ │ └── geisterspoor.png │ │ ├── data │ │ │ ├── minecraft │ │ │ │ └── stationapi │ │ │ │ │ └── tags │ │ │ │ │ └── blocks │ │ │ │ │ ├── infiniburn.json │ │ │ │ │ └── mineable │ │ │ │ │ ├── shovel.json │ │ │ │ │ └── pickaxe.json │ │ │ └── sltest │ │ │ │ └── stationapi │ │ │ │ ├── tags │ │ │ │ └── blocks │ │ │ │ │ └── needs_tool_level_modded.json │ │ │ │ └── recipes │ │ │ │ ├── smelting │ │ │ │ └── smelting.json │ │ │ │ └── crafting │ │ │ │ ├── shapeless_recipe.json │ │ │ │ ├── freezer.json │ │ │ │ └── test_recipe.json │ │ └── sltest.mixins.json │ └── java │ │ └── net │ │ └── modificationstation │ │ └── sltest │ │ ├── item │ │ ├── tool │ │ │ └── ToolListener.java │ │ └── ModelItem.java │ │ ├── dimension │ │ └── TestDimension.java │ │ ├── mixin │ │ ├── BlockBaseAccessor.java │ │ └── OverworldTestMixin.java │ │ ├── block │ │ └── ModdedBlock.java │ │ └── tileentity │ │ └── TileEntityListener.java └── main │ └── resources │ └── assets │ └── stationapi │ └── icon.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── assets └── contributing │ ├── Layers-Exhibit1.drawio.png │ ├── Layers-Exhibit2.drawio.png │ ├── Layers-Exhibit3.drawio.png │ └── Layers-Exhibit4.drawio.png ├── station-gui-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-gui-api-v0 │ │ │ │ ├── stationapi │ │ │ │ └── lang │ │ │ │ │ └── en_US.lang │ │ │ │ └── icon.png │ │ └── station-gui-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── api │ │ └── client │ │ │ └── gui │ │ │ └── widget │ │ │ ├── PressAction.java │ │ │ ├── ButtonWidgetFactory.java │ │ │ ├── ButtonWidgetAttachedContext.java │ │ │ ├── ButtonWidgetDeferredDetachedContext.java │ │ │ └── ButtonWidgetDetachedContext.java │ │ └── mixin │ │ └── gui │ │ └── client │ │ └── ScreenAccessor.java └── build.gradle.kts ├── station-achievements-v0 ├── src │ └── main │ │ └── resources │ │ ├── assets │ │ └── station-achievements-v0 │ │ │ ├── stationapi │ │ │ └── lang │ │ │ │ └── stats_US.lang │ │ │ └── icon.png │ │ └── station-achievements-v0.mixins.json └── build.gradle.kts ├── station-api-base ├── src │ └── main │ │ ├── java │ │ └── net │ │ │ └── modificationstation │ │ │ └── stationapi │ │ │ └── api │ │ │ └── util │ │ │ ├── Unit.java │ │ │ ├── crash │ │ │ └── CrashCallable.java │ │ │ ├── profiler │ │ │ └── ReadableProfiler.java │ │ │ ├── exception │ │ │ └── MissingModException.java │ │ │ └── API.java │ │ └── resources │ │ └── assets │ │ └── station-api-base │ │ └── icon.png └── build.gradle.kts ├── station-nbt-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-nbt-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── api │ │ └── nbt │ │ │ ├── StationNbtElement.java │ │ │ ├── StationNbtEnd.java │ │ │ ├── StationNbtInt.java │ │ │ ├── StationNbtByte.java │ │ │ ├── StationNbtList.java │ │ │ ├── StationNbtLong.java │ │ │ ├── StationNbtFloat.java │ │ │ ├── StationNbtShort.java │ │ │ ├── StationNbtDouble.java │ │ │ ├── StationNbtString.java │ │ │ └── StationNbtByteArray.java │ │ └── mixin │ │ └── nbt │ │ └── NbtCompoundAccessor.java └── build.gradle.kts ├── station-items-v0 └── src │ └── main │ ├── resources │ └── assets │ │ └── station-items-v0 │ │ └── icon.png │ └── java │ └── net │ └── modificationstation │ └── stationapi │ ├── api │ ├── block │ │ └── StationItemsBlock.java │ ├── item │ │ ├── StationItemNbt.java │ │ ├── CustomReachProvider.java │ │ ├── UseOnBlockFirst.java │ │ ├── UseOnEntityFirst.java │ │ └── CustomDispenseBehavior.java │ ├── event │ │ ├── registry │ │ │ └── AfterBlockAndItemRegisterEvent.java │ │ └── item │ │ │ └── ItemEvent.java │ ├── entity │ │ └── StationItemsEntity.java │ └── client │ │ └── item │ │ └── CustomItemOverlay.java │ ├── impl │ ├── dispenser │ │ └── DispenserInfoStorage.java │ └── item │ │ └── StationNBTSetter.java │ └── mixin │ └── item │ ├── InventoryS2CPacketMixin.java │ ├── BlockMixin.java │ ├── EntityAccessor.java │ └── client │ ├── DrawContextAccessor.java │ ├── ClientNetworkHandlerAccessor.java │ └── HandledScreenAccessor.java ├── station-maths-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-maths-v0 │ │ │ │ └── icon.png │ │ └── station-maths-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── util │ │ └── math │ │ └── Position.java └── build.gradle.kts ├── station-blocks-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-blocks-v0 │ │ │ │ └── icon.png │ │ └── station-blocks-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── event │ │ └── block │ │ │ ├── AddBurnable.java │ │ │ └── FireBurnableRegisterEvent.java │ │ └── block │ │ └── BlockItemToggle.java └── build.gradle.kts ├── station-recipes-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-recipes-v0 │ │ │ │ └── icon.png │ │ └── station-recipes-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── impl │ │ └── recipe │ │ │ ├── JsonRecipeType.java │ │ │ ├── JsonRecipe.java │ │ │ ├── JsonCraftingShaped.java │ │ │ ├── JsonSmelting.java │ │ │ └── JsonCraftingShapeless.java │ │ ├── api │ │ └── event │ │ │ └── recipe │ │ │ └── BeforeRecipeStatsEvent.java │ │ └── mixin │ │ └── recipe │ │ └── SmeltingRecipeManagerAccessor.java └── build.gradle.kts ├── station-renderer-api-v0 └── src │ └── main │ ├── resources │ └── assets │ │ ├── minecraft │ │ └── stationapi │ │ │ └── models │ │ │ └── block │ │ │ ├── orientable.json │ │ │ ├── legacy │ │ │ ├── orientable.json │ │ │ ├── cube_all.json │ │ │ ├── cube_column.json │ │ │ ├── cube_top.json │ │ │ ├── cube_bottom_top.json │ │ │ └── orientable_with_bottom.json │ │ │ ├── cube_all.json │ │ │ ├── cube_column.json │ │ │ ├── cube_top.json │ │ │ ├── cube_bottom_top.json │ │ │ ├── cube_mirrored_all.json │ │ │ ├── cube_column_mirrored.json │ │ │ └── orientable_with_bottom.json │ │ └── station-renderer-api-v0 │ │ └── icon.png │ └── java │ └── net │ └── modificationstation │ └── stationapi │ ├── api │ └── client │ │ ├── texture │ │ ├── SpriteDimensions.java │ │ ├── atlas │ │ │ ├── AtlasSourceType.java │ │ │ └── CustomAtlasProvider.java │ │ ├── Animator.java │ │ ├── TexturePackDependent.java │ │ ├── TextureTickListener.java │ │ ├── binder │ │ │ └── StaticReferenceProvider.java │ │ ├── DynamicTexture.java │ │ └── SpritesheetHelper.java │ │ ├── event │ │ ├── texture │ │ │ └── TextureRegisterEvent.java │ │ └── color │ │ │ └── item │ │ │ └── ItemColorsRegisterEvent.java │ │ ├── model │ │ ├── block │ │ │ ├── BlockWithInventoryRenderer.java │ │ │ └── BlockWithWorldRenderer.java │ │ └── item │ │ │ └── ItemModelPredicateProvider.java │ │ ├── render │ │ ├── model │ │ │ ├── Baker.java │ │ │ ├── ModelRotation.java │ │ │ └── ModelBakeSettings.java │ │ └── block │ │ │ └── StationRendererBlockRenderManager.java │ │ └── color │ │ └── item │ │ └── ItemColorProvider.java │ └── mixin │ └── render │ └── client │ └── WaterColorAccessor.java ├── station-armor-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-armor-api-v0 │ │ │ │ └── icon.png │ │ └── station-armor-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── client │ │ └── item │ │ └── ArmorTextureProvider.java └── build.gradle.kts ├── station-datafixer-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-datafixer-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── event │ │ └── datafixer │ │ └── DataFixerRegisterEvent.java └── build.gradle.kts ├── station-entities-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-entities-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── server │ │ └── entity │ │ │ ├── CustomSpawnDataProvider.java │ │ │ └── StationSpawnDataProvider.java │ │ ├── entity │ │ └── HasOwner.java │ │ ├── client │ │ ├── entity │ │ │ └── factory │ │ │ │ └── EntityWorldAndPosFactory.java │ │ └── event │ │ │ └── render │ │ │ └── entity │ │ │ └── EntityRendererRegisterEvent.java │ │ └── event │ │ └── registry │ │ ├── EntityHandlerRegistryEvent.java │ │ └── MobHandlerRegistryEvent.java └── build.gradle.kts ├── station-templates-v0 └── src │ └── main │ ├── resources │ ├── assets │ │ └── station-templates-v0 │ │ │ └── icon.png │ └── station-templates-v0.mixins.json │ └── java │ └── net │ └── modificationstation │ └── stationapi │ └── api │ └── template │ ├── item │ ├── TemplateBlockItem.java │ ├── TemplateLogBlockItem.java │ ├── TemplateSlabBlockItem.java │ ├── TemplateWoolBlockItem.java │ ├── TemplateLeavesBlockItem.java │ ├── TemplatePistonBlockItem.java │ ├── TemplateSaplingBlockItem.java │ ├── TemplateItem.java │ ├── TemplateBedItem.java │ ├── TemplateEggItem.java │ ├── TemplateMapItem.java │ ├── TemplateBowItem.java │ ├── TemplateDyeItem.java │ ├── TemplateBoatItem.java │ ├── TemplateCoalItem.java │ ├── TemplateSignItem.java │ ├── TemplateSaddleItem.java │ ├── TemplateShearsItem.java │ ├── TemplateSnowballItem.java │ ├── TemplateMapBaseItem.java │ ├── TemplatePaintingItem.java │ ├── TemplateRedstoneItem.java │ └── TemplateSeedsItem.java │ └── block │ ├── TemplateBedBlock.java │ ├── TemplateLogBlock.java │ ├── TemplateChestBlock.java │ ├── TemplateNoteBlock.java │ ├── TemplateGrassBlock.java │ ├── TemplateIceBlock.java │ ├── TemplateOreBlock.java │ ├── TemplateSpongeBlock.java │ ├── TemplateTntBlock.java │ └── TemplateCropBlock.java ├── station-tools-api-v1 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-tools-api-v1 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── api │ │ └── item │ │ │ └── tool │ │ │ └── StationToolMaterial.java │ │ └── impl │ │ └── item │ │ └── ShearsOverrideEvent.java └── build.gradle.kts ├── run ├── .gitignore └── config │ └── fabric_loader_dependencies.json ├── station-blockitems-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-blockitems-v0 │ │ │ │ └── icon.png │ │ └── station-blockitems-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── template │ │ └── item │ │ │ ├── MetaBlockItem.java │ │ │ └── MetaNamedBlockItem.java │ │ └── block │ │ └── StationBlockItemsBlock.java └── build.gradle.kts ├── station-dimensions-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-dimensions-v0 │ │ │ ├── icon.png │ │ │ └── stationapi │ │ │ └── lang │ │ │ └── en_US.lang │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── api │ │ ├── entity │ │ │ └── HasTeleportationManager.java │ │ ├── client │ │ │ └── world │ │ │ │ └── dimension │ │ │ │ └── TravelMessageProvider.java │ │ └── world │ │ │ └── dimension │ │ │ ├── TeleportationManager.java │ │ │ └── VanillaDimensions.java │ │ └── impl │ │ └── world │ │ └── dimension │ │ └── DimensionHelperImpl.java └── build.gradle.kts ├── station-flattening-v0 └── src │ └── main │ ├── resources │ ├── assets │ │ └── station-flattening-v0 │ │ │ └── icon.png │ └── station-flattening-v0.accesswidener │ └── java │ └── net │ └── modificationstation │ └── stationapi │ ├── impl │ ├── world │ │ ├── StationClientWorld.java │ │ ├── chunk │ │ │ ├── ChunkSectionsAccessor.java │ │ │ ├── PaletteResizeListener.java │ │ │ ├── StationHeigtmapProvider.java │ │ │ └── EntryMissingException.java │ │ ├── CaveGenBaseImpl.java │ │ └── StationWorldProperties.java │ └── block │ │ ├── BlockBrightness.java │ │ ├── StationFlatteningMovingPistonImpl.java │ │ ├── StationFlatteningPistonBlockEntityImpl.java │ │ └── StationFlatteningBlockInternal.java │ ├── api │ ├── item │ │ ├── Items.java │ │ ├── ItemConvertible.java │ │ └── StationFlatteningBlockItem.java │ ├── block │ │ ├── BeforeBlockRemoved.java │ │ ├── ReplaceableBlock.java │ │ ├── DropListProvider.java │ │ ├── AfterBreakWithBlockState.java │ │ ├── entity │ │ │ └── StationFlatteningPistonBlockEntity.java │ │ ├── DropWithBlockState.java │ │ ├── HardnessWithBlockState.java │ │ └── BlockStateHolder.java │ ├── event │ │ ├── block │ │ │ └── IsBlockReplaceableEvent.java │ │ ├── world │ │ │ └── MetaSetEvent.java │ │ └── registry │ │ │ └── ItemRegistryEvent.java │ ├── world │ │ ├── chunk │ │ │ ├── ChunkNibbleArray.java │ │ │ └── CompactingPackedIntegerArray.java │ │ ├── BlockStateView.java │ │ └── StationFlatteningWorldPopulationRegion.java │ └── entity │ │ └── player │ │ └── PlayerStrengthWithBlockState.java │ └── mixin │ └── flattening │ ├── DimensionMixin.java │ ├── ChunkAccessor.java │ ├── RegionFileAccessor.java │ └── server │ ├── ServerPlayerViewAccessor.java │ └── class_514Accessor.java ├── station-networking-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-networking-v0 │ │ │ │ └── icon.png │ │ └── station-networking-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── event │ │ └── network │ │ │ └── packet │ │ │ └── PacketRegister.java │ │ └── network │ │ └── packet │ │ └── ManagedPacket.java └── build.gradle.kts ├── station-player-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-player-api-v0 │ │ │ │ └── icon.png │ │ └── station-player-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── impl │ │ └── entity │ │ └── player │ │ └── PlayerHelperImpl.java └── build.gradle.kts ├── station-effects-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-effects-api-v0 │ │ │ │ └── icon.png │ │ └── station-effects-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── mixin │ │ └── effects │ │ │ └── ClientNetworkHandlerAccessor.java │ │ └── impl │ │ └── effect │ │ └── StationEffectsEntityImpl.java └── build.gradle.kts ├── station-keybindings-v0 ├── src │ └── main │ │ └── resources │ │ ├── assets │ │ └── station-keybindings-v0 │ │ │ └── icon.png │ │ └── station-keybindings-v0.mixins.json └── build.gradle.kts ├── station-audio-loader-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-audio-loader-v0 │ │ │ │ └── icon.png │ │ └── station-audio-loader-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── client │ │ └── sound │ │ └── CustomSoundMap.java └── build.gradle.kts ├── station-biome-events-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-biome-events-v0 │ │ │ │ └── icon.png │ │ └── station-biome-events-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── event │ │ └── world │ │ └── biome │ │ ├── BiomeRegisterEvent.java │ │ └── BiomeByClimateEvent.java └── build.gradle.kts ├── station-registry-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-registry-api-v0 │ │ │ │ └── icon.png │ │ └── station-registry-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── registry │ │ ├── serial │ │ │ └── LegacyIDHolder.java │ │ ├── RemappableRawIdHolder.java │ │ ├── ListenableRegistry.java │ │ ├── RemapException.java │ │ ├── RegistryEntryOwner.java │ │ └── DefaultedRegistry.java │ │ ├── event │ │ └── registry │ │ │ ├── RegistryAttribute.java │ │ │ ├── RegistryEntryRemovedEvent.java │ │ │ └── legacy │ │ │ └── PostRegistryRemapEvent.java │ │ └── tag │ │ └── TagFile.java └── build.gradle.kts ├── station-world-events-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-world-events-v0 │ │ │ │ └── icon.png │ │ └── station-world-events-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── event │ │ └── world │ │ └── WorldEvent.java └── build.gradle.kts ├── station-worldgen-api-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-worldgen-api-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── worldgen │ │ ├── biome │ │ │ ├── BiomeColorProvider.java │ │ │ └── TemplateBiome.java │ │ └── surface │ │ │ ├── condition │ │ │ ├── HeightSurfaceCondition.java │ │ │ └── SurfaceCondition.java │ │ │ └── StateSurfaceRule.java │ │ └── event │ │ └── worldgen │ │ └── biome │ │ └── BiomeProviderRegisterEvent.java └── build.gradle.kts ├── station-api-configuration ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-api-configuration │ │ │ ├── icon.png │ │ │ └── stationapi │ │ │ └── lang │ │ │ └── en_US.lang │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── config │ │ ├── StationConfigData.java │ │ └── StationConfig.java ├── build.gradle.kts └── readme.md ├── station-blockentities-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-blockentities-v0 │ │ │ │ └── icon.png │ │ └── station-blockentities-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ └── client │ │ └── event │ │ └── block │ │ └── entity │ │ └── BlockEntityRendererRegisterEvent.java └── build.gradle.kts ├── station-container-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-container-api-v0 │ │ │ │ └── icon.png │ │ └── station-container-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── api │ │ └── event │ │ │ └── registry │ │ │ └── GuiHandlerRegistryEvent.java │ │ └── mixin │ │ └── container │ │ └── server │ │ └── ServerPlayerEntityAccessor.java └── build.gradle.kts ├── station-registry-sync-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-registry-sync-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── impl │ │ └── network │ │ └── RegistryPacketHandler.java └── build.gradle.kts ├── station-renderer-arsenic └── src │ └── main │ ├── resources │ └── assets │ │ └── station-renderer-arsenic │ │ └── icon.png │ └── java │ └── net │ └── modificationstation │ └── stationapi │ └── mixin │ └── arsenic │ └── client │ ├── TessellatorAccessor.java │ ├── BlockParticleAccessor.java │ ├── EntityRendererAccessor.java │ └── ItemRendererAccessor.java ├── station-resource-loader-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-resource-loader-v0 │ │ │ ├── icon.png │ │ │ └── textures │ │ │ └── gui │ │ │ ├── stationapi_reload.png │ │ │ ├── stationapi_reload_old.png │ │ │ └── stationapi_reload_dimando.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── impl │ │ ├── client │ │ │ └── resource │ │ │ │ ├── ReloadScreenManagerImpl.java │ │ │ │ └── ReloadScreenTessellatorHolder.java │ │ └── resource │ │ │ ├── LifecycledResourceManager.java │ │ │ └── ModResourcePack.java │ │ ├── api │ │ ├── resource │ │ │ ├── metadata │ │ │ │ └── ResourceMetadataReader.java │ │ │ ├── ResourceReload.java │ │ │ ├── DataManager.java │ │ │ └── ResourceType.java │ │ ├── event │ │ │ └── resource │ │ │ │ └── DataReloadEvent.java │ │ └── client │ │ │ ├── event │ │ │ └── resource │ │ │ │ └── AssetsReloadEvent.java │ │ │ └── resource │ │ │ └── ReloadableAssetsManager.java │ │ └── mixin │ │ └── resourceloader │ │ └── client │ │ ├── ZipTexturePackAccessor.java │ │ ├── MinecraftAccessor.java │ │ └── TessellatorAccessor.java └── build.gradle.kts ├── station-vanilla-checker-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-vanilla-checker-v0 │ │ │ │ ├── icon.png │ │ │ │ └── stationapi │ │ │ │ └── lang │ │ │ │ └── en_US.lang │ │ └── station-vanilla-checker-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── impl │ │ └── network │ │ │ └── ModdedPacketHandlerSetter.java │ │ └── api │ │ └── network │ │ └── ModdedPacketHandler.java └── build.gradle.kts ├── station-lifecycle-events-v0 ├── src │ └── main │ │ ├── resources │ │ └── assets │ │ │ └── station-lifecycle-events-v0 │ │ │ └── icon.png │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ └── api │ │ ├── event │ │ ├── init │ │ │ └── InitFinishedEvent.java │ │ └── tick │ │ │ └── GameTickEvent.java │ │ └── server │ │ └── event │ │ └── network │ │ └── PlayerLoginEvent.java └── build.gradle.kts ├── station-localization-api-v0 ├── src │ └── main │ │ ├── resources │ │ ├── assets │ │ │ └── station-localization-api-v0 │ │ │ │ └── icon.png │ │ └── station-localization-api-v0.mixins.json │ │ └── java │ │ └── net │ │ └── modificationstation │ │ └── stationapi │ │ ├── impl │ │ └── resource │ │ │ └── language │ │ │ └── DeferredTranslationKeyHolder.java │ │ ├── mixin │ │ └── lang │ │ │ └── TranslationStorageAccessor.java │ │ └── api │ │ └── event │ │ └── resource │ │ └── language │ │ └── TranslationInvalidationEvent.java └── build.gradle.kts ├── station-transitive-access-wideners-v0 ├── src │ └── main │ │ └── resources │ │ └── assets │ │ └── station-transitive-access-wideners-v0 │ │ └── icon.png └── build.gradle.kts └── .gitignore /station-vanilla-fix-v0/src/main/resources/assets/.mcassetsroot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/.mcassetsroot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/test/resources/assets/minecraft/stationapi/models/item/dirt.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/dirt" 3 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/test_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/test_block" 3 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/farlands_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/farlandsBlock" 3 | } 4 | -------------------------------------------------------------------------------- /src/test/resources/data/minecraft/stationapi/tags/blocks/infiniburn.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "sltest:test_block" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/mineable/hoe.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | ] 4 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/wool.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "wool" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/items/coals.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "coal" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/variation_block_idle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/variation_block_idle" 3 | } -------------------------------------------------------------------------------- /src/test/resources/data/minecraft/stationapi/tags/blocks/mineable/shovel.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "sltest:farlands_block" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/test/resources/data/sltest/stationapi/tags/blocks/needs_tool_level_modded.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "sltest:test_block" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/leaves.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "leaves" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/items/saplings.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "sapling" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/test/resources/assets/minecraft/stationapi/blockstates/dirt.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": {"model": "sltest:block/dirt"} 4 | } 5 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/variation_block_active.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/variation_block_active" 3 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/variation_block_passive.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "sltest:block/variation_block_passive" 3 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "#logs_that_burn" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/logs_that_burn.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "log" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/planks.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "oak_planks" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/items/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "#logs_that_burn" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/items/logs_that_burn.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "log" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/items/planks.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "oak_planks" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/infiniburn.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "netherrack" 4 | ] 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/mineable/sword.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "cobweb" 4 | ] 5 | } -------------------------------------------------------------------------------- /assets/contributing/Layers-Exhibit1.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/assets/contributing/Layers-Exhibit1.drawio.png -------------------------------------------------------------------------------- /assets/contributing/Layers-Exhibit2.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/assets/contributing/Layers-Exhibit2.drawio.png -------------------------------------------------------------------------------- /assets/contributing/Layers-Exhibit3.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/assets/contributing/Layers-Exhibit3.drawio.png -------------------------------------------------------------------------------- /assets/contributing/Layers-Exhibit4.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/assets/contributing/Layers-Exhibit4.drawio.png -------------------------------------------------------------------------------- /src/main/resources/assets/stationapi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/main/resources/assets/stationapi/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/blockstates/test_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": {"model": "sltest:block/test_block"} 4 | } 5 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/needs_diamond_tool.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "obsidian" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/test/resources/data/minecraft/stationapi/tags/blocks/mineable/pickaxe.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "sltest:test_block", 4 | "sltest:variation_block" 5 | ] 6 | } -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/resources/assets/station-gui-api-v0/stationapi/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | selectWorld.stationapi.edit=Edit 2 | selectWorld.stationapi.editTitle=Edit World -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/item/tool/ToolListener.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.item.tool; 2 | 3 | public class ToolListener { 4 | 5 | 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/dull_pickaxe.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "item/golden_pickaxe" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/pacifist_sword.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "item/golden_sword" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/testAnimatedBlock.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation" : { 3 | "frametime": 100, 4 | "interpolate": true 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky1.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky2.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky3.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky4.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky5.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/skybox/sky6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/skybox/sky6.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/test_pickaxe.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/handheld", 3 | "textures": { 4 | "layer0": "sltest:items/testPickaxe" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/gui/enchanter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/gui/enchanter.png -------------------------------------------------------------------------------- /station-achievements-v0/src/main/resources/assets/station-achievements-v0/stationapi/lang/stats_US.lang: -------------------------------------------------------------------------------- 1 | # Achievement pages 2 | gui.stationapi.achievementPage.stationapi.minecraft=Minecraft -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/mineable/shears.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "cobweb", 4 | "#leaves", 5 | "#wool" 6 | ] 7 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/rails.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "rail", 4 | "powered_rail", 5 | "detector_rail" 6 | ] 7 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/block/test_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube_all", 3 | "textures": { 4 | "all": "sltest:blocks/testBlock" 5 | } 6 | } -------------------------------------------------------------------------------- /station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Unit.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util; 2 | 3 | public enum Unit { 4 | INSTANCE 5 | } 6 | 7 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/resources/assets/station-nbt-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-nbt-v0/src/main/resources/assets/station-nbt-v0/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/block/variation_block_idle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "sltest:blocks/variation_block_idle" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/stone.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/textures/entities/geisterspoor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/textures/entities/geisterspoor.png -------------------------------------------------------------------------------- /station-api-base/src/main/resources/assets/station-api-base/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-api-base/src/main/resources/assets/station-api-base/icon.png -------------------------------------------------------------------------------- /station-items-v0/src/main/resources/assets/station-items-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-items-v0/src/main/resources/assets/station-items-v0/icon.png -------------------------------------------------------------------------------- /station-maths-v0/src/main/resources/assets/station-maths-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-maths-v0/src/main/resources/assets/station-maths-v0/icon.png -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/mineable/axe.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "bookshelf", 4 | "chest", 5 | "#logs", 6 | "#planks" 7 | ] 8 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/block/variation_block_active.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "sltest:blocks/variation_block_active" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/item/generated_item.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "item/cake", 5 | "layer1": "item/diamond" 6 | } 7 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/dirt_e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/dirt_e.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/highres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/highres.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/nbtItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/nbtItem.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/oak_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/oak_log.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/testItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/testItem.png -------------------------------------------------------------------------------- /station-blocks-v0/src/main/resources/assets/station-blocks-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-blocks-v0/src/main/resources/assets/station-blocks-v0/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/minecraft/stationapi/textures/block/oak_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/minecraft/stationapi/textures/block/oak_log.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/models/block/variation_block_passive.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "sltest:blocks/variation_block_passive" 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_top.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/testBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/testBlock.png -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/resources/assets/station-gui-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-gui-api-v0/src/main/resources/assets/station-gui-api-v0/icon.png -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/block/StationItemsBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | public interface StationItemsBlock { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/resources/assets/station-recipes-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-recipes-v0/src/main/resources/assets/station-recipes-v0/icon.png -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/orientable.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/orientable_with_bottom", 3 | "textures": { 4 | "bottom": "#top" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/FreezerSide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/FreezerSide.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/FreezerTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/FreezerTop.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_bottom.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_east.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_east.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_north.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_north.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_south.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_south.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/altar_west.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/altar_west.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsSide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsSide.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsTop.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/items/testPickaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/items/testPickaxe.png -------------------------------------------------------------------------------- /station-armor-api-v0/src/main/resources/assets/station-armor-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-armor-api-v0/src/main/resources/assets/station-armor-api-v0/icon.png -------------------------------------------------------------------------------- /station-datafixer-v0/src/main/resources/assets/station-datafixer-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-datafixer-v0/src/main/resources/assets/station-datafixer-v0/icon.png -------------------------------------------------------------------------------- /station-entities-v0/src/main/resources/assets/station-entities-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-entities-v0/src/main/resources/assets/station-entities-v0/icon.png -------------------------------------------------------------------------------- /station-templates-v0/src/main/resources/assets/station-templates-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-templates-v0/src/main/resources/assets/station-templates-v0/icon.png -------------------------------------------------------------------------------- /station-tools-api-v1/src/main/resources/assets/station-tools-api-v1/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-tools-api-v1/src/main/resources/assets/station-tools-api-v1/icon.png -------------------------------------------------------------------------------- /run/.gitignore: -------------------------------------------------------------------------------- 1 | # This json is important cause some mods require a specific version of stapi, but during dev runs, stapi has no version. 2 | /** 3 | !config 4 | !config/fabric_loader_dependencies.json 5 | !.gitignore 6 | -------------------------------------------------------------------------------- /run/config/fabric_loader_dependencies.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "overrides": { 4 | "alwaysmoreitems": { 5 | "-depends": { 6 | "stationapi": "IGNORED" 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/farlandsBottom.png -------------------------------------------------------------------------------- /station-blockitems-v0/src/main/resources/assets/station-blockitems-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-blockitems-v0/src/main/resources/assets/station-blockitems-v0/icon.png -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/resources/assets/station-dimensions-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-dimensions-v0/src/main/resources/assets/station-dimensions-v0/icon.png -------------------------------------------------------------------------------- /station-flattening-v0/src/main/resources/assets/station-flattening-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-flattening-v0/src/main/resources/assets/station-flattening-v0/icon.png -------------------------------------------------------------------------------- /station-networking-v0/src/main/resources/assets/station-networking-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-networking-v0/src/main/resources/assets/station-networking-v0/icon.png -------------------------------------------------------------------------------- /station-player-api-v0/src/main/resources/assets/station-player-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-player-api-v0/src/main/resources/assets/station-player-api-v0/icon.png -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/needs_stone_tool.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "iron_block", 4 | "iron_ore", 5 | "lapis_block", 6 | "lapis_ore" 7 | ] 8 | } -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/testAnimatedBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/testAnimatedBlock.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/gui/effect/test_effect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/gui/effect/test_effect.png -------------------------------------------------------------------------------- /station-api-base/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | 3 | base.archivesName.set("station-api-base") 4 | version = getSubprojectVersion(project, "1.0.0") -------------------------------------------------------------------------------- /station-effects-api-v0/src/main/resources/assets/station-effects-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-effects-api-v0/src/main/resources/assets/station-effects-api-v0/icon.png -------------------------------------------------------------------------------- /station-keybindings-v0/src/main/resources/assets/station-keybindings-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-keybindings-v0/src/main/resources/assets/station-keybindings-v0/icon.png -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/orientable.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/orientable_with_bottom", 3 | "textures": { 4 | "bottom": "#top" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/assets/station-vanilla-fix-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-vanilla-fix-v0/src/main/resources/assets/station-vanilla-fix-v0/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/indispensableBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/indispensableBlock.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/gui/effect/infinity_effect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/gui/effect/infinity_effect.png -------------------------------------------------------------------------------- /station-achievements-v0/src/main/resources/assets/station-achievements-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-achievements-v0/src/main/resources/assets/station-achievements-v0/icon.png -------------------------------------------------------------------------------- /station-audio-loader-v0/src/main/resources/assets/station-audio-loader-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-audio-loader-v0/src/main/resources/assets/station-audio-loader-v0/icon.png -------------------------------------------------------------------------------- /station-biome-events-v0/src/main/resources/assets/station-biome-events-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-biome-events-v0/src/main/resources/assets/station-biome-events-v0/icon.png -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/resources/assets/station-registry-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-registry-api-v0/src/main/resources/assets/station-registry-api-v0/icon.png -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/station-renderer-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-renderer-api-v0/src/main/resources/assets/station-renderer-api-v0/icon.png -------------------------------------------------------------------------------- /station-world-events-v0/src/main/resources/assets/station-world-events-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-world-events-v0/src/main/resources/assets/station-world-events-v0/icon.png -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/resources/assets/station-worldgen-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-worldgen-api-v0/src/main/resources/assets/station-worldgen-api-v0/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_active.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_idle.png -------------------------------------------------------------------------------- /station-api-configuration/src/main/resources/assets/station-api-configuration/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-api-configuration/src/main/resources/assets/station-api-configuration/icon.png -------------------------------------------------------------------------------- /station-blockentities-v0/src/main/resources/assets/station-blockentities-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-blockentities-v0/src/main/resources/assets/station-blockentities-v0/icon.png -------------------------------------------------------------------------------- /station-container-api-v0/src/main/resources/assets/station-container-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-container-api-v0/src/main/resources/assets/station-container-api-v0/icon.png -------------------------------------------------------------------------------- /station-registry-sync-v0/src/main/resources/assets/station-registry-sync-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-registry-sync-v0/src/main/resources/assets/station-registry-sync-v0/icon.png -------------------------------------------------------------------------------- /station-renderer-arsenic/src/main/resources/assets/station-renderer-arsenic/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-renderer-arsenic/src/main/resources/assets/station-renderer-arsenic/icon.png -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_passive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/src/test/resources/assets/sltest/stationapi/textures/blocks/variation_block_passive.png -------------------------------------------------------------------------------- /station-api-configuration/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | 3 | base.archivesName.set("station-api-config") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/icon.png -------------------------------------------------------------------------------- /station-vanilla-checker-v0/src/main/resources/assets/station-vanilla-checker-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-vanilla-checker-v0/src/main/resources/assets/station-vanilla-checker-v0/icon.png -------------------------------------------------------------------------------- /station-lifecycle-events-v0/src/main/resources/assets/station-lifecycle-events-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-lifecycle-events-v0/src/main/resources/assets/station-lifecycle-events-v0/icon.png -------------------------------------------------------------------------------- /station-localization-api-v0/src/main/resources/assets/station-localization-api-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-localization-api-v0/src/main/resources/assets/station-localization-api-v0/icon.png -------------------------------------------------------------------------------- /station-flattening-v0/src/main/resources/station-flattening-v0.accesswidener: -------------------------------------------------------------------------------- 1 | accessWidener v2 named 2 | 3 | transitive-accessible class net/minecraft/server/ChunkMap$TrackedChunk 4 | transitive-accessible class net/minecraft/world/ClientWorld$BlockReset -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/impl/dispenser/DispenserInfoStorage.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.dispenser; 2 | 3 | public class DispenserInfoStorage { 4 | public static int slot; 5 | } 6 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpriteDimensions.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | public record SpriteDimensions(int width, int height) { } 4 | 5 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/StationClientWorld.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world; 2 | 3 | public interface StationClientWorld { 4 | boolean stationAPI$isModded(); 5 | } 6 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/serial/LegacyIDHolder.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry.serial; 2 | 3 | public interface LegacyIDHolder { 4 | 5 | int getLegacyID(); 6 | } 7 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RemappableRawIdHolder.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry; 2 | 3 | public interface RemappableRawIdHolder { 4 | 5 | void setRawId(int rawId); 6 | } 7 | -------------------------------------------------------------------------------- /src/test/resources/data/sltest/stationapi/recipes/smelting/smelting.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smelting", 3 | "ingredient": { 4 | "item": "minecraft:dirt" 5 | }, 6 | "result": { 7 | "item": "sltest:farlands_block", 8 | "count": 63 9 | } 10 | } -------------------------------------------------------------------------------- /station-api-base/src/main/java/net/modificationstation/stationapi/api/util/crash/CrashCallable.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util.crash; 2 | 3 | import java.util.concurrent.Callable; 4 | 5 | public interface CrashCallable extends Callable {} 6 | -------------------------------------------------------------------------------- /station-api-base/src/main/java/net/modificationstation/stationapi/api/util/profiler/ReadableProfiler.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util.profiler; 2 | 3 | public interface ReadableProfiler extends Profiler { 4 | ProfileResult getResult(); 5 | } 6 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/ChunkSectionsAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world.chunk; 2 | 3 | public interface ChunkSectionsAccessor { 4 | 5 | ChunkSection[] getSections(); 6 | } 7 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtElement.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtElement; 4 | 5 | public interface StationNbtElement { 6 | NbtElement copy(); 7 | } 8 | -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/resources/assets/station-dimensions-v0/stationapi/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | gui.stationapi.entering=Entering the %s 2 | gui.stationapi.leaving=Leaving the %s 3 | gui.stationapi.enteringNether=Entering the Nether 4 | gui.stationapi.leavingNether=Leaving the Nether -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/PaletteResizeListener.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world.chunk; 2 | 3 | interface PaletteResizeListener { 4 | int onResize(int newSize, T objectAdded); 5 | } 6 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/StationItemNbt.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.nbt.NbtCompound; 4 | 5 | public interface StationItemNbt { 6 | NbtCompound getStationNbt(); 7 | } 8 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/impl/recipe/JsonRecipeType.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.recipe; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class JsonRecipeType { 7 | 8 | private String type; 9 | } 10 | -------------------------------------------------------------------------------- /station-transitive-access-wideners-v0/src/main/resources/assets/station-transitive-access-wideners-v0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-transitive-access-wideners-v0/src/main/resources/assets/station-transitive-access-wideners-v0/icon.png -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/needs_iron_tool.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "diamond_block", 4 | "diamond_ore", 5 | "gold_block", 6 | "gold_ore", 7 | "redstone_ore", 8 | "redstone_ore_lit" 9 | ] 10 | } -------------------------------------------------------------------------------- /src/test/resources/assets/minecraft/stationapi/models/block/oak_stairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/stairs", 3 | "textures": { 4 | "bottom": "minecraft:block/oak_planks", 5 | "side": "minecraft:block/oak_planks", 6 | "top": "minecraft:block/oak_planks" 7 | } 8 | } -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/resources/data/minecraft/stationapi/tags/blocks/mineable/shovel.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "clay", 4 | "dirt", 5 | "farmland", 6 | "grass_block", 7 | "gravel", 8 | "sand", 9 | "snow_block", 10 | "snow" 11 | ] 12 | } -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload.png -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload_old.png -------------------------------------------------------------------------------- /station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/event/block/AddBurnable.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.block; 2 | 3 | @FunctionalInterface 4 | public interface AddBurnable { 5 | void addBurnable(int blockId, int burnChance, int spreadChance); 6 | } 7 | -------------------------------------------------------------------------------- /station-api-configuration/readme.md: -------------------------------------------------------------------------------- 1 | # This is a specialized module that appears in ModMenu for easy config editing. 2 | # !!DO NOT USE THIS MODULE FOR ANYTHING OTHER THAN CONFIG!! 3 | Also don't refer to values from this for your mods, changes here will not be as thoroughly documented as the rest of the API. 4 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload_dimando.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ModificationStation/StationAPI/HEAD/station-resource-loader-v0/src/main/resources/assets/station-resource-loader-v0/textures/gui/stationapi_reload_dimando.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/ListenableRegistry.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry; 2 | 3 | import net.mine_diver.unsafeevents.MutableEventBus; 4 | 5 | public interface ListenableRegistry { 6 | MutableEventBus getEventBus(); 7 | } 8 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/atlas/AtlasSourceType.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture.atlas; 2 | 3 | import com.mojang.serialization.Codec; 4 | 5 | public record AtlasSourceType(Codec codec) {} 6 | 7 | -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/CustomSpawnDataProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.server.entity; 2 | 3 | import net.minecraft.network.packet.Packet; 4 | 5 | public interface CustomSpawnDataProvider { 6 | 7 | Packet getSpawnData(); 8 | } 9 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/StationHeigtmapProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world.chunk; 2 | 3 | public interface StationHeigtmapProvider { 4 | byte[] getStoredHeightmap(); 5 | void loadStoredHeightmap(byte[] heightmap); 6 | } 7 | -------------------------------------------------------------------------------- /station-vanilla-checker-v0/src/main/java/net/modificationstation/stationapi/impl/network/ModdedPacketHandlerSetter.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.network; 2 | 3 | import java.util.*; 4 | 5 | public interface ModdedPacketHandlerSetter { 6 | 7 | void setModded(Map mods); 8 | } 9 | -------------------------------------------------------------------------------- /src/test/resources/assets/minecraft/stationapi/atlases/game.json: -------------------------------------------------------------------------------- 1 | { 2 | "sources": [ 3 | { 4 | "type": "directory", 5 | "source": "blocks", 6 | "prefix": "blocks/" 7 | }, 8 | { 9 | "type": "directory", 10 | "source": "items", 11 | "prefix": "items/" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/entity/HasOwner.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.entity; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public interface HasOwner { 6 | 7 | Entity getOwner(); 8 | 9 | void setOwner(Entity entityBase); 10 | } 11 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/item/Items.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.NoArgsConstructor; 5 | 6 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 7 | public final class Items { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/api/client/gui/widget/PressAction.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.gui.widget; 2 | 3 | import net.minecraft.client.gui.widget.ButtonWidget; 4 | 5 | public interface PressAction { 6 | 7 | void onPress(ButtonWidget button); 8 | } 9 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/Animator.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | public interface Animator extends AutoCloseable { 4 | void tick(int x, int y); 5 | 6 | @Override 7 | void close(); 8 | } 9 | 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # gradle 2 | 3 | .gradle/ 4 | build/ 5 | out/ 6 | classes/ 7 | 8 | # eclipse 9 | 10 | *.launch 11 | 12 | # idea 13 | 14 | .idea/ 15 | *.iml 16 | *.ipr 17 | *.iws 18 | 19 | # vscode 20 | 21 | .settings/ 22 | .vscode/ 23 | bin/ 24 | .classpath 25 | .project 26 | 27 | # fabric 28 | 29 | run/ 30 | !/run 31 | -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/dimension/TestDimension.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.dimension; 2 | 3 | import net.minecraft.world.dimension.Dimension; 4 | 5 | public class TestDimension extends Dimension { 6 | 7 | public TestDimension(int id) { 8 | this.id = id; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-audio-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/sound/CustomSoundMap.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.sound; 2 | 3 | import java.net.URL; 4 | import net.minecraft.client.sound.Sound; 5 | 6 | public interface CustomSoundMap { 7 | Sound putSound(String id, URL url); 8 | } 9 | -------------------------------------------------------------------------------- /station-vanilla-checker-v0/src/main/java/net/modificationstation/stationapi/api/network/ModdedPacketHandler.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.network; 2 | 3 | import java.util.*; 4 | 5 | public interface ModdedPacketHandler { 6 | 7 | boolean isModded(); 8 | 9 | Map getMods(); 10 | } 11 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/api/client/gui/widget/ButtonWidgetFactory.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.gui.widget; 2 | 3 | import net.minecraft.client.gui.widget.ButtonWidget; 4 | 5 | public interface ButtonWidgetFactory { 6 | 7 | ButtonWidget newButton(int id); 8 | } 9 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/CaveGenBaseImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world; 2 | 3 | import net.minecraft.world.World; 4 | 5 | public interface CaveGenBaseImpl { 6 | void stationapi_setWorld(World world); 7 | 8 | World stationapi_getWorld(); 9 | } 10 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/api/client/gui/widget/ButtonWidgetAttachedContext.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.gui.widget; 2 | 3 | import net.minecraft.client.gui.widget.ButtonWidget; 4 | 5 | public record ButtonWidgetAttachedContext(ButtonWidget button, PressAction action) {} 6 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/api/event/recipe/BeforeRecipeStatsEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.recipe; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public class BeforeRecipeStatsEvent extends Event {} 8 | -------------------------------------------------------------------------------- /station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/block/BlockItemToggle.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.block.Block; 4 | 5 | public interface BlockItemToggle { 6 | Block disableAutoItemRegistration(); 7 | 8 | boolean isAutoItemRegistrationDisabled(); 9 | } 10 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/impl/client/resource/ReloadScreenManagerImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.client.resource; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | public class ReloadScreenManagerImpl { 7 | public boolean isMinecraftDone; 8 | } 9 | -------------------------------------------------------------------------------- /src/test/resources/data/sltest/stationapi/recipes/crafting/shapeless_recipe.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "ingredients": 4 | [ 5 | { 6 | "item": "minecraft:dirt" 7 | }, 8 | { 9 | "item": "minecraft:sand" 10 | } 11 | ], 12 | "result": { 13 | "item": "sltest:farlands_block" 14 | } 15 | } -------------------------------------------------------------------------------- /station-biome-events-v0/src/main/java/net/modificationstation/stationapi/api/event/world/biome/BiomeRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.world.biome; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public class BiomeRegisterEvent extends Event {} 8 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/BeforeBlockRemoved.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.world.World; 4 | 5 | @FunctionalInterface 6 | public interface BeforeBlockRemoved { 7 | 8 | void beforeBlockRemoved(World arg, int i, int j, int k); 9 | } 10 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/impl/recipe/JsonRecipe.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.recipe; 2 | 3 | import lombok.Data; 4 | import net.modificationstation.stationapi.api.item.json.JsonItemKey; 5 | 6 | @Data 7 | public class JsonRecipe { 8 | 9 | private JsonItemKey result; 10 | } 11 | -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/lang/stats_US.lang: -------------------------------------------------------------------------------- 1 | gui.stationapi.achievementPage.@.testPage=Test Page 2 | achievement.@.testAchievement=Test Achievement! 3 | achievement.@.testAchievement.desc=Descriptive description! 4 | achievement.@.testAchievementChild=Test Achievement Child! 5 | achievement.@.testAchievementChild.desc=Descriptive description child! -------------------------------------------------------------------------------- /station-biome-events-v0/src/main/resources/station-biome-events-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.biome", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "BiomeMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-blockitems-v0/src/main/resources/station-blockitems-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.blockitem", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "BlockMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/block/BlockBrightness.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.block; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | 6 | @Environment(EnvType.CLIENT) 7 | public class BlockBrightness { 8 | public static int light; 9 | } 10 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/block/StationFlatteningMovingPistonImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.block; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | 5 | public class StationFlatteningMovingPistonImpl { 6 | public static BlockState pushedBlockState; 7 | } 8 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/AfterBlockAndItemRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public class AfterBlockAndItemRegisterEvent extends Event {} 8 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/event/texture/TextureRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.event.texture; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public class TextureRegisterEvent extends Event {} 8 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/TexturePackDependent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | import net.minecraft.client.resource.pack.TexturePack; 4 | 5 | public interface TexturePackDependent { 6 | 7 | void reloadFromTexturePack(TexturePack newTexturePack); 8 | } 9 | -------------------------------------------------------------------------------- /station-armor-api-v0/src/main/resources/station-armor-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.armor", 5 | "compatibilityLevel": "JAVA_17", 6 | "client": [ 7 | "client.PlayerRendererMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/ReplaceableBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.modificationstation.stationapi.api.item.ItemPlacementContext; 4 | 5 | public interface ReplaceableBlock { 6 | 7 | boolean canReplace(BlockState state, ItemPlacementContext context); 8 | } 9 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/InventoryS2CPacketMixin.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item; 2 | 3 | import net.minecraft.network.packet.s2c.play.InventoryS2CPacket; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | 6 | @Mixin(InventoryS2CPacket.class) 7 | class InventoryS2CPacketMixin { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /station-maths-v0/src/main/resources/station-maths-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.maths", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "TilePosAccessor", 8 | "TilePosMixin" 9 | ], 10 | "injectors": { 11 | "defaultRequire": 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/TextureTickListener.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | 6 | @Environment(EnvType.CLIENT) 7 | public interface TextureTickListener { 8 | void tick(); 9 | } 10 | -------------------------------------------------------------------------------- /station-localization-api-v0/src/main/java/net/modificationstation/stationapi/impl/resource/language/DeferredTranslationKeyHolder.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.resource.language; 2 | 3 | import java.util.function.Supplier; 4 | 5 | public interface DeferredTranslationKeyHolder { 6 | void stationapi_initTranslationKey(Supplier translator); 7 | } 8 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_all.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube", 3 | "textures": { 4 | "particle": "#all", 5 | "down": "#all", 6 | "up": "#all", 7 | "north": "#all", 8 | "east": "#all", 9 | "south": "#all", 10 | "west": "#all" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/resource/metadata/ResourceMetadataReader.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.resource.metadata; 2 | 3 | import com.google.gson.JsonObject; 4 | 5 | public interface ResourceMetadataReader { 6 | 7 | String getKey(); 8 | 9 | T fromJson(JsonObject object); 10 | } 11 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/impl/resource/LifecycledResourceManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.resource; 2 | 3 | import net.modificationstation.stationapi.api.resource.ResourceManager; 4 | 5 | public interface LifecycledResourceManager extends ResourceManager, AutoCloseable { 6 | void close(); 7 | } 8 | -------------------------------------------------------------------------------- /station-armor-api-v0/src/main/java/net/modificationstation/stationapi/api/client/item/ArmorTextureProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.item; 2 | 3 | import net.minecraft.item.ArmorItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public interface ArmorTextureProvider { 7 | Identifier getTexture(ArmorItem armor); 8 | } 9 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/StationWorldProperties.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world; 2 | 3 | import net.minecraft.nbt.NbtCompound; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public interface StationWorldProperties { 7 | NbtCompound getDimensionTag(Identifier id); 8 | } 9 | -------------------------------------------------------------------------------- /station-maths-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-maths-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-player-api-v0/src/main/resources/station-player-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.player", 5 | "compatibilityLevel": "JAVA_17", 6 | "server": [ 7 | "server.ServerPlayNetworkHandlerAccessor" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/binder/StaticReferenceProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture.binder; 2 | 3 | import net.modificationstation.stationapi.api.client.texture.atlas.Atlas; 4 | 5 | public interface StaticReferenceProvider { 6 | 7 | Atlas.Sprite getStaticReference(); 8 | } 9 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_column.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#end", 6 | "up": "#end", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#side", 6 | "up": "#top", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/BiomeColorProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.worldgen.biome; 2 | 3 | import net.minecraft.world.biome.source.BiomeSource; 4 | 5 | @FunctionalInterface 6 | public interface BiomeColorProvider { 7 | int getColor(BiomeSource source, int x, int z); 8 | } 9 | 10 | -------------------------------------------------------------------------------- /station-api-base/src/main/java/net/modificationstation/stationapi/api/util/exception/MissingModException.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util.exception; 2 | 3 | public class MissingModException extends RuntimeException { 4 | public MissingModException(String namespace) { 5 | super("Namespace " + namespace + " isn't present in the runtime!"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /station-datafixer-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-datafixer-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.BlockItem; 4 | 5 | public class TemplateBlockItem extends BlockItem implements ItemTemplate { 6 | public TemplateBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-audio-loader-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-audio-loader-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-biome-events-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-biome-events-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/api/client/gui/widget/ButtonWidgetDeferredDetachedContext.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.gui.widget; 2 | 3 | import net.minecraft.client.gui.screen.Screen; 4 | 5 | public interface ButtonWidgetDeferredDetachedContext { 6 | 7 | ButtonWidgetDetachedContext init(T screen); 8 | } 9 | -------------------------------------------------------------------------------- /station-player-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-player-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/impl/recipe/JsonCraftingShaped.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.recipe; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | @EqualsAndHashCode(callSuper = true) 7 | @Data 8 | public class JsonCraftingShaped extends JsonRecipe { 9 | 10 | private String[] pattern; 11 | } 12 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_bottom_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#bottom", 6 | "up": "#top", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_mirrored_all.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_mirrored", 3 | "textures": { 4 | "particle": "#all", 5 | "down": "#all", 6 | "up": "#all", 7 | "north": "#all", 8 | "east": "#all", 9 | "south": "#all", 10 | "west": "#all" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/cube_all.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube", 3 | "textures": { 4 | "particle": "#all", 5 | "down": "#all", 6 | "up": "#all", 7 | "north": "#all", 8 | "east": "#all", 9 | "south": "#all", 10 | "west": "#all" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-world-events-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-world-events-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-blockentities-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-blockentities-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/client/entity/factory/EntityWorldAndPosFactory.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.entity.factory; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.world.World; 5 | 6 | public interface EntityWorldAndPosFactory { 7 | Entity create(World world, double x, double y, double z); 8 | } 9 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/block/StationFlatteningPistonBlockEntityImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.block; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | 5 | public interface StationFlatteningPistonBlockEntityImpl { 6 | void stationapi_setPushedBlockState(BlockState pushedBlockState); 7 | } 8 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/EntryMissingException.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world.chunk; 2 | 3 | public class EntryMissingException 4 | extends RuntimeException { 5 | public EntryMissingException(int index) { 6 | super("Missing Palette entry for index " + index + "."); 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/cube_column.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#end", 6 | "up": "#end", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/cube_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#side", 6 | "up": "#top", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/blockstates/variation_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "variant=idle": { 4 | "model": "sltest:block/variation_block_idle" 5 | }, 6 | "variant=passive": { 7 | "model": "sltest:block/variation_block_passive" 8 | }, 9 | "variant=active": { 10 | "model": "sltest:block/variation_block_active" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /station-lifecycle-events-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-lifecycle-events-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base" 8 | ) -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/cube_column_mirrored.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_mirrored", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#end", 6 | "up": "#end", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateLogBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.LogBlockItem; 4 | 5 | public class TemplateLogBlockItem extends LogBlockItem implements ItemTemplate { 6 | public TemplateLogBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/BlockMixin.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item; 2 | 3 | import net.minecraft.block.Block; 4 | import net.modificationstation.stationapi.api.block.StationItemsBlock; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | 7 | @Mixin(Block.class) 8 | class BlockMixin implements StationItemsBlock { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/cube_bottom_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube", 3 | "textures": { 4 | "particle": "#side", 5 | "down": "#bottom", 6 | "up": "#top", 7 | "north": "#side", 8 | "east": "#side", 9 | "south": "#side", 10 | "west": "#side" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSlabBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SlabBlockItem; 4 | 5 | public class TemplateSlabBlockItem extends SlabBlockItem implements ItemTemplate { 6 | public TemplateSlabBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateWoolBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.WoolBlockItem; 4 | 5 | public class TemplateWoolBlockItem extends WoolBlockItem implements ItemTemplate { 6 | public TemplateWoolBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-container-api-v0/src/main/resources/station-container-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.container", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | ], 8 | "server": [ 9 | "server.ServerPlayerEntityAccessor" 10 | ], 11 | "injectors": { 12 | "defaultRequire": 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-networking-v0/src/main/java/net/modificationstation/stationapi/api/event/network/packet/PacketRegister.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.network.packet; 2 | 3 | import net.minecraft.network.packet.Packet; 4 | 5 | public interface PacketRegister { 6 | void register(int packetId, boolean receivableOnClient, boolean receivableOnServer, Class packetClass); 7 | } 8 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/RegistryAttribute.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | public enum RegistryAttribute { 4 | /** 5 | * Registry will be synced to the client when modded. 6 | */ 7 | SYNCED, 8 | 9 | /** 10 | * Registry has been modded. 11 | */ 12 | MODDED 13 | } -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/mixin/BlockBaseAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.mixin; 2 | 3 | import net.minecraft.block.Block; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Invoker; 6 | 7 | @Mixin(Block.class) 8 | public interface BlockBaseAccessor { 9 | 10 | @Invoker 11 | Block invokeSetHardness(float hardness); 12 | } 13 | -------------------------------------------------------------------------------- /station-networking-v0/src/main/resources/station-networking-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.network", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "AbstractPacketAccessor", 8 | "ConnectionMixin", 9 | "PacketMixin" 10 | ], 11 | "injectors": { 12 | "defaultRequire": 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateLeavesBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.LeavesBlockItem; 4 | 5 | public class TemplateLeavesBlockItem extends LeavesBlockItem implements ItemTemplate { 6 | public TemplateLeavesBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePistonBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.PistonBlockItem; 4 | 5 | public class TemplatePistonBlockItem extends PistonBlockItem implements ItemTemplate { 6 | public TemplatePistonBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/resources/station-templates-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.template", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "item.DoorItemMixin" 8 | ], 9 | "server": [ 10 | ], 11 | "client": [ 12 | ], 13 | "injectors": { 14 | "defaultRequire": 1 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/surface/condition/HeightSurfaceCondition.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.worldgen.surface.condition; 2 | 3 | public class HeightSurfaceCondition extends PositionSurfaceCondition { 4 | public HeightSurfaceCondition(int minY, int maxY) { 5 | super((pos) -> pos.y >= minY && pos.y <= maxY); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtEnd.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtEnd; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtEnd extends StationNbtElement { 7 | @Override 8 | default NbtEnd copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtInt.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtInt; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtInt extends StationNbtElement { 7 | @Override 8 | default NbtInt copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSaplingBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SaplingBlockItem; 4 | 5 | public class TemplateSaplingBlockItem extends SaplingBlockItem implements ItemTemplate { 6 | public TemplateSaplingBlockItem(int i) { 7 | super(i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/DropListProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.world.World; 5 | 6 | import java.util.List; 7 | 8 | public interface DropListProvider { 9 | List getDropList(World world, int x, int y, int z, BlockState state, int meta); 10 | } 11 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/item/ItemConvertible.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.item.Item; 4 | 5 | /** 6 | * Represents an object that has an item form. 7 | */ 8 | public interface ItemConvertible { 9 | 10 | /** 11 | * Gets this object in its item form. 12 | */ 13 | Item asItem(); 14 | } 15 | 16 | -------------------------------------------------------------------------------- /station-lifecycle-events-v0/src/main/java/net/modificationstation/stationapi/api/event/init/InitFinishedEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.init; 2 | 3 | import net.mine_diver.unsafeevents.Event; 4 | 5 | /** 6 | * Called when minecraft has fully initialized, and is about to load into the main menu (or load the world, in the server's case.) 7 | */ 8 | public class InitFinishedEvent extends Event {} 9 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtByte.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtByte; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtByte extends StationNbtElement { 7 | @Override 8 | default NbtByte copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtList.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtList; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtList extends StationNbtElement { 7 | @Override 8 | default NbtList copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtLong.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtLong; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtLong extends StationNbtElement { 7 | @Override 8 | default NbtLong copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RemapException.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry; 2 | 3 | public class RemapException extends Exception { 4 | public RemapException(String message) { 5 | super(message); 6 | } 7 | 8 | public RemapException(String message, Throwable t) { 9 | super(message, t); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/block/StationFlatteningBlockInternal.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.block; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | 5 | import java.util.function.ToIntFunction; 6 | 7 | public interface StationFlatteningBlockInternal { 8 | ToIntFunction stationapi_getLuminanceProvider(); 9 | } 10 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtFloat.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtFloat; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtFloat extends StationNbtElement { 7 | @Override 8 | default NbtFloat copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtShort.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtShort; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtShort extends StationNbtElement { 7 | @Override 8 | default NbtShort copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/impl/client/resource/ReloadScreenTessellatorHolder.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.client.resource; 2 | 3 | import lombok.experimental.UtilityClass; 4 | import net.minecraft.client.render.Tessellator; 5 | 6 | @UtilityClass 7 | public class ReloadScreenTessellatorHolder { 8 | public Tessellator reloadScreenTessellator; 9 | } 10 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/AfterBreakWithBlockState.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.world.World; 5 | 6 | public interface AfterBreakWithBlockState { 7 | 8 | void afterBreak(World world, PlayerEntity player, int x, int y, int z, BlockState state, int meta); 9 | } 10 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/DimensionMixin.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.flattening; 2 | 3 | import net.minecraft.world.dimension.Dimension; 4 | import net.modificationstation.stationapi.api.world.dimension.StationDimension; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | 7 | @Mixin(Dimension.class) 8 | class DimensionMixin implements StationDimension {} 9 | -------------------------------------------------------------------------------- /station-keybindings-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-keybindings-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-lifecycle-events-v0" 9 | ) -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtDouble.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtDouble; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtDouble extends StationNbtElement { 7 | @Override 8 | default NbtDouble copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtString.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtString; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtString extends StationNbtElement { 7 | @Override 8 | default NbtString copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/DynamicTexture.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | import net.modificationstation.stationapi.api.util.Identifier; 4 | 5 | import java.io.IOException; 6 | import java.nio.file.Path; 7 | 8 | public interface DynamicTexture { 9 | void save(Identifier id, Path path) throws IOException; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/atlas/CustomAtlasProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture.atlas; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | 6 | @Environment(EnvType.CLIENT) 7 | public interface CustomAtlasProvider { 8 | 9 | @Environment(EnvType.CLIENT) 10 | Atlas getAtlas(); 11 | } 12 | -------------------------------------------------------------------------------- /station-achievements-v0/src/main/resources/station-achievements-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.achievement", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "AchievementsMixin" 8 | ], 9 | "client": [ 10 | "client.AchievementsScreenMixin" 11 | ], 12 | "injectors": { 13 | "defaultRequire": 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-armor-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | 4 | base.archivesName.set("station-armor-api-v0") 5 | version = getSubprojectVersion(project, "1.0.0") 6 | 7 | addModuleDependencies(project, 8 | "station-api-base", 9 | "station-player-api-v0" 10 | ) -------------------------------------------------------------------------------- /station-lifecycle-events-v0/src/main/java/net/modificationstation/stationapi/api/event/tick/GameTickEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.tick; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public abstract class GameTickEvent extends Event { 8 | @SuperBuilder 9 | public static final class End extends GameTickEvent {} 10 | } 11 | -------------------------------------------------------------------------------- /station-localization-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-localization-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-resource-loader-v0" 9 | ) -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/resource/ResourceReload.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.resource; 2 | 3 | public interface ResourceReload { 4 | /** 5 | * Returns a fraction between 0 and 1 indicating the progress of this 6 | * reload. 7 | */ 8 | float getProgress(); 9 | 10 | boolean isComplete(); 11 | 12 | void throwException(); 13 | } 14 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/StationNbtByteArray.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.nbt; 2 | 3 | import net.minecraft.nbt.NbtByteArray; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationNbtByteArray extends StationNbtElement { 7 | @Override 8 | default NbtByteArray copy() { 9 | return Util.assertImpl(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/model/block/BlockWithInventoryRenderer.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.model.block; 2 | 3 | import net.minecraft.client.render.block.BlockRenderManager; 4 | 5 | @Deprecated 6 | public interface BlockWithInventoryRenderer { 7 | 8 | @Deprecated 9 | void renderInventory(BlockRenderManager tileRenderer, int meta); 10 | } 11 | -------------------------------------------------------------------------------- /station-vanilla-checker-v0/src/main/resources/assets/station-vanilla-checker-v0/stationapi/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | # Network 2 | disconnect.stationapi.missingStation=Station API is required to join this server. 3 | disconnect.stationapi.stationVersionMismatch=This server runs on Station API %s (you have %s). 4 | disconnect.stationapi.missingMod=Mod %s (%s) %s is required to join. 5 | disconnect.stationapi.modVersionMismatch=%s (%s) %s is required (you have %s). -------------------------------------------------------------------------------- /station-blockentities-v0/src/main/resources/station-blockentities-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.blockentity", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "BlockEntityMixin" 8 | ], 9 | "client": [ 10 | "client.BlockEntityRenderDispatcherMixin" 11 | ], 12 | "injectors": { 13 | "defaultRequire": 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/ChunkAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.flattening; 2 | 3 | import net.minecraft.world.chunk.Chunk; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Invoker; 6 | 7 | @Mixin(Chunk.class) 8 | public interface ChunkAccessor { 9 | @Invoker 10 | void invokeLightGaps(int i, int j); 11 | } 12 | -------------------------------------------------------------------------------- /station-localization-api-v0/src/main/resources/station-localization-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.lang", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "AchievementMixin", 8 | "StatMixin", 9 | "StatsMixin", 10 | "TranslationStorageAccessor" 11 | ], 12 | "injectors": { 13 | "defaultRequire": 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-blockitems-v0/src/main/java/net/modificationstation/stationapi/api/template/item/MetaBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | public class MetaBlockItem extends TemplateBlockItem { 4 | public MetaBlockItem(int i) { 5 | super(i); 6 | setHasSubtypes(true); 7 | } 8 | 9 | @Override 10 | public int getPlacementMetadata(int i) { 11 | return i; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/java/net/modificationstation/stationapi/api/entity/HasTeleportationManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.entity; 2 | 3 | import net.modificationstation.stationapi.api.world.dimension.TeleportationManager; 4 | 5 | public interface HasTeleportationManager { 6 | 7 | void setTeleportationManager(TeleportationManager manager); 8 | 9 | TeleportationManager getTeleportationManager(); 10 | } 11 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/resources/station-gui-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.gui", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | ], 8 | "client": [ 9 | "client.ScreenAccessor", 10 | "client.SelectWorldScreenMixin" 11 | ], 12 | "injectors": { 13 | "defaultRequire": 1 14 | }, 15 | "server": [ 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/impl/recipe/JsonSmelting.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.recipe; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import net.modificationstation.stationapi.api.item.json.JsonItemKey; 6 | 7 | @EqualsAndHashCode(callSuper = true) 8 | @Data 9 | public class JsonSmelting extends JsonRecipe { 10 | 11 | private JsonItemKey ingredient; 12 | } 13 | -------------------------------------------------------------------------------- /station-audio-loader-v0/src/main/resources/station-audio-loader-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.audio", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "BlockSoundGroupMixin" 8 | ], 9 | "client": [ 10 | "client.SoundManagerMixin", 11 | "client.SoundMapMixin" 12 | ], 13 | "injectors": { 14 | "defaultRequire": 1 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/api/client/gui/widget/ButtonWidgetDetachedContext.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.gui.widget; 2 | 3 | public record ButtonWidgetDetachedContext(ButtonWidgetFactory buttonFactory, PressAction action) { 4 | 5 | public ButtonWidgetAttachedContext attach(int id) { 6 | return new ButtonWidgetAttachedContext(buttonFactory.newButton(id), action); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomReachProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.util.hit.HitResultType; 6 | 7 | public interface CustomReachProvider { 8 | double getReach(ItemStack stack, PlayerEntity player, HitResultType type, double currentReach); 9 | } 10 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/UseOnBlockFirst.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | public interface UseOnBlockFirst { 8 | boolean onUseOnBlockFirst(ItemStack stack, PlayerEntity player, World world, int x, int y, int z, int sideClicked); 9 | } 10 | -------------------------------------------------------------------------------- /src/test/resources/data/sltest/stationapi/recipes/crafting/freezer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": 4 | [ 5 | "xxx", 6 | "xax", 7 | "xxx" 8 | ], 9 | "key": 10 | { 11 | "x": 12 | { 13 | "item": "minecraft:dirt" 14 | }, 15 | "a": 16 | { 17 | "item": "minecraft:sand" 18 | } 19 | }, 20 | "result": 21 | { 22 | "item": "sltest:freezer", 23 | "count": 1 24 | } 25 | } -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/resources/station-registry-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.registry", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | ], 8 | "server": [ 9 | "server.MinecraftServerMixin" 10 | ], 11 | "client": [ 12 | "client.MinecraftMixin" 13 | ], 14 | "injectors": { 15 | "defaultRequire": 1 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/java/net/modificationstation/stationapi/api/client/world/dimension/TravelMessageProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.world.dimension; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | 6 | @Environment(EnvType.CLIENT) 7 | public interface TravelMessageProvider { 8 | 9 | String getEnteringTranslationKey(); 10 | 11 | String getLeavingTranslationKey(); 12 | } 13 | -------------------------------------------------------------------------------- /station-entities-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-entities-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-networking-v0" 10 | ) -------------------------------------------------------------------------------- /station-transitive-access-wideners-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-transitive-access-wideners-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | loom { 7 | accessWidenerPath = file("src/main/resources/station-transitive-access-wideners-v0.accesswidener") 8 | } -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/surface/condition/SurfaceCondition.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.worldgen.surface.condition; 2 | 3 | import net.minecraft.world.World; 4 | import net.modificationstation.stationapi.api.block.BlockState; 5 | 6 | @FunctionalInterface 7 | public interface SurfaceCondition { 8 | boolean canApply(World world, int x, int y, int z, BlockState state); 9 | } 10 | -------------------------------------------------------------------------------- /src/test/resources/data/sltest/stationapi/recipes/crafting/test_recipe.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": 4 | [ 5 | "xxa", 6 | "x x", 7 | "xxx" 8 | ], 9 | "key": 10 | { 11 | "x": 12 | { 13 | "item": "minecraft:dirt" 14 | }, 15 | "a": 16 | { 17 | "item": "sltest:test_block" 18 | } 19 | }, 20 | "result": 21 | { 22 | "item": "minecraft:grass", 23 | "count": 9 24 | } 25 | } -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/RegionFileAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.flattening; 2 | 3 | import net.minecraft.world.chunk.storage.RegionFile; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(RegionFile.class) 8 | public interface RegionFileAccessor { 9 | @Accessor 10 | int[] getChunkBlockInfo(); 11 | } 12 | -------------------------------------------------------------------------------- /station-gui-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-gui-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-resource-loader-v0", 9 | "station-localization-api-v0" 10 | ) -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/impl/item/StationNBTSetter.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.item; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NbtCompound; 5 | 6 | public interface StationNBTSetter { 7 | static StationNBTSetter cast(ItemStack stack) { 8 | return StationNBTSetter.class.cast(stack); 9 | } 10 | 11 | void setStationNbt(NbtCompound stationNbt); 12 | } 13 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/EntityAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item; 2 | 3 | import net.minecraft.entity.Entity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | import java.util.Random; 8 | 9 | @Mixin(Entity.class) 10 | public interface EntityAccessor { 11 | @Accessor("random") 12 | Random stationapi_getRandom(); 13 | } 14 | -------------------------------------------------------------------------------- /station-maths-v0/src/main/java/net/modificationstation/stationapi/api/util/math/Position.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util.math; 2 | 3 | public interface Position { 4 | /** 5 | * Returns the X coordinate. 6 | */ 7 | double getX(); 8 | 9 | /** 10 | * Returns the Y coordinate. 11 | */ 12 | double getY(); 13 | 14 | /** 15 | * Returns the Z coordinate. 16 | */ 17 | double getZ(); 18 | } 19 | 20 | -------------------------------------------------------------------------------- /station-nbt-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-nbt-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-transitive-access-wideners-v0", 9 | "station-datafixer-v0" 10 | ) -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/impl/recipe/JsonCraftingShapeless.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.recipe; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import net.modificationstation.stationapi.api.item.json.JsonItemKey; 6 | 7 | @EqualsAndHashCode(callSuper = true) 8 | @Data 9 | public class JsonCraftingShapeless extends JsonRecipe { 10 | 11 | private JsonItemKey[] ingredients; 12 | } 13 | -------------------------------------------------------------------------------- /station-container-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-container-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-networking-v0" 10 | ) -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/Baker.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.render.model; 2 | 3 | import net.modificationstation.stationapi.api.util.Identifier; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | public interface Baker { 7 | UnbakedModel getOrLoadModel(Identifier id); 8 | 9 | @Nullable 10 | BakedModel bake(Identifier id, ModelBakeSettings settings); 11 | } 12 | -------------------------------------------------------------------------------- /station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.block", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "BlockItemMixin", 8 | "BlockMixin", 9 | "FireBlockMixin", 10 | "LeavesBlockMixin", 11 | "SecondaryBlockItemMixin", 12 | "StatsMixin" 13 | ], 14 | "injectors": { 15 | "defaultRequire": 1 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/UseOnEntityFirst.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.world.World; 7 | 8 | public interface UseOnEntityFirst { 9 | boolean onUseOnEntityFirst(ItemStack stack, PlayerEntity player, World world, Entity entity); 10 | } 11 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/event/block/IsBlockReplaceableEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.block; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.modificationstation.stationapi.api.item.ItemPlacementContext; 6 | 7 | @SuperBuilder 8 | public class IsBlockReplaceableEvent extends Event { 9 | public final ItemPlacementContext context; 10 | } 11 | -------------------------------------------------------------------------------- /station-achievements-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | 4 | base.archivesName.set("station-achievements-v0") 5 | version = getSubprojectVersion(project, "1.0.0") 6 | 7 | addModuleDependencies(project, 8 | "station-api-base", 9 | "station-resource-loader-v0", 10 | "station-localization-api-v0" 11 | ) -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/entity/StationFlatteningPistonBlockEntity.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block.entity; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationFlatteningPistonBlockEntity { 7 | default BlockState getPushedBlockState() { 8 | return Util.assertImpl(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-gui-api-v0/src/main/java/net/modificationstation/stationapi/mixin/gui/client/ScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.gui.client; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.gui.screen.Screen; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(Screen.class) 9 | public interface ScreenAccessor { 10 | @Accessor 11 | Minecraft getMinecraft(); 12 | } 13 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/DrawContextAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item.client; 2 | 3 | import net.minecraft.client.gui.DrawContext; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Invoker; 6 | 7 | @Mixin(DrawContext.class) 8 | public interface DrawContextAccessor { 9 | @Invoker 10 | void invokeFill(int x1, int y1, int x2, int y2, int color); 11 | } 12 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/resource/DataManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.resource; 2 | 3 | import net.modificationstation.stationapi.impl.resource.ReloadableResourceManager; 4 | 5 | public class DataManager extends ReloadableResourceManager { 6 | public static final DataManager INSTANCE = new DataManager(); 7 | 8 | private DataManager() { 9 | super(ResourceType.SERVER_DATA); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/java/net/modificationstation/stationapi/api/world/dimension/TeleportationManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world.dimension; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.modificationstation.stationapi.impl.block.NetherPortalImpl; 5 | 6 | public interface TeleportationManager { 7 | 8 | default void switchDimension(PlayerEntity player) { 9 | NetherPortalImpl.switchDimension(player); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /station-keybindings-v0/src/main/resources/station-keybindings-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.keybinding", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | ], 8 | "client": [ 9 | "client.GameOptionsMixin", 10 | "client.MinecraftMixin", 11 | "client.OptionAccessor", 12 | "client.ScreenMixin" 13 | ], 14 | "injectors": { 15 | "defaultRequire": 1 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /station-player-api-v0/src/main/java/net/modificationstation/stationapi/impl/entity/player/PlayerHelperImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.entity.player; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.network.NetworkHandler; 5 | 6 | public abstract class PlayerHelperImpl { 7 | 8 | public abstract PlayerEntity getPlayerFromGame(); 9 | 10 | public abstract PlayerEntity getPlayerFromPacketHandler(NetworkHandler packetHandler); 11 | } 12 | -------------------------------------------------------------------------------- /station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/mixin/arsenic/client/TessellatorAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.arsenic.client; 2 | 3 | import net.minecraft.client.render.Tessellator; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(Tessellator.class) 8 | public interface TessellatorAccessor { 9 | @Accessor("vertexCount") 10 | int stationapi$getVertexCount(); 11 | } 12 | -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/TemplateBiome.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.worldgen.biome; 2 | 3 | import net.minecraft.world.biome.Biome; 4 | 5 | public class TemplateBiome extends Biome { 6 | public TemplateBiome(String name) { 7 | this.name = name; 8 | this.spawnableMonsters.clear(); 9 | this.spawnablePassive.clear(); 10 | this.spawnableWaterCreatures.clear(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/model/block/BlockWithWorldRenderer.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.model.block; 2 | 3 | import net.minecraft.client.render.block.BlockRenderManager; 4 | import net.minecraft.world.BlockView; 5 | 6 | @Deprecated 7 | public interface BlockWithWorldRenderer { 8 | 9 | @Deprecated 10 | boolean renderWorld(BlockRenderManager tileRenderer, BlockView tileView, int x, int y, int z); 11 | } 12 | -------------------------------------------------------------------------------- /station-vanilla-checker-v0/src/main/resources/station-vanilla-checker-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.network", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "LoginHelloPacketMixin", 8 | "NetworkHandlerMixin" 9 | ], 10 | "server": [ 11 | "server.ServerLoginNetworkHandlerMixin" 12 | ], 13 | "client": [ 14 | ], 15 | "injectors": { 16 | "defaultRequire": 1 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/assets/sltest/stationapi/blockstates/farlands_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "facing=north": { 4 | "model": "sltest:block/farlandsBlock" 5 | }, 6 | "facing=east": { 7 | "model": "sltest:block/farlandsBlock", 8 | "y": 90 9 | }, 10 | "facing=south": { 11 | "model": "sltest:block/farlandsBlock", 12 | "y": 180 13 | }, 14 | "facing=west": { 15 | "model": "sltest:block/farlandsBlock", 16 | "y": 270 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /station-api-configuration/src/main/java/net/modificationstation/stationapi/config/StationConfigData.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.config; 2 | 3 | import net.glasslauncher.mods.gcapi3.api.ConfigEntry; 4 | 5 | public class StationConfigData { 6 | 7 | @ConfigEntry( 8 | name = "Loading Screen Style", 9 | nameKey = "gui.config.stationapi.main.loading_screen_option" 10 | ) 11 | public LoadingScreenOption loadingScreenOption = LoadingScreenOption.SHOW; 12 | } 13 | -------------------------------------------------------------------------------- /station-registry-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-registry-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-maths-v0", 9 | "station-resource-loader-v0", 10 | "station-world-events-v0" 11 | ) -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/event/resource/DataReloadEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.resource; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.mine_diver.unsafeevents.event.EventPhases; 6 | import net.modificationstation.stationapi.api.StationAPI; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class DataReloadEvent extends Event {} 11 | -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/mixin/vanillafix/client/ScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.vanillafix.client; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.gui.screen.Screen; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(Screen.class) 9 | public interface ScreenAccessor { 10 | @Accessor 11 | Minecraft getMinecraft(); 12 | } 13 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/world/chunk/ChunkNibbleArray.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world.chunk; 2 | 3 | import net.modificationstation.stationapi.impl.world.chunk.NibbleArray; 4 | 5 | public final class ChunkNibbleArray extends NibbleArray { 6 | 7 | public ChunkNibbleArray() { 8 | super(2048); 9 | } 10 | 11 | public static int getIndex(int i, int x, int y) { 12 | return x << 8 | y << 4 | i; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomDispenseBehavior.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.modificationstation.stationapi.api.dispenser.ItemDispenseContext; 4 | 5 | /** 6 | * Intended to be applied to an Item, which provides a custom dispenser behavior 7 | * @author matthewperiut 8 | * @see ItemDispenseContext 9 | */ 10 | public interface CustomDispenseBehavior { 11 | void dispense(ItemDispenseContext context); 12 | } 13 | -------------------------------------------------------------------------------- /station-networking-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-networking-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-player-api-v0", 10 | "station-lifecycle-events-v0" 11 | ) -------------------------------------------------------------------------------- /station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/mixin/arsenic/client/BlockParticleAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.arsenic.client; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.client.particle.BlockParticle; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(BlockParticle.class) 9 | public interface BlockParticleAccessor { 10 | @Accessor 11 | Block getBlock(); 12 | } 13 | -------------------------------------------------------------------------------- /station-biome-events-v0/src/main/java/net/modificationstation/stationapi/api/event/world/biome/BiomeByClimateEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.world.biome; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.world.biome.Biome; 6 | 7 | @SuperBuilder 8 | public class BiomeByClimateEvent extends Event { 9 | public final float temperature; 10 | public final float downfall; 11 | public Biome currentBiome; 12 | } 13 | -------------------------------------------------------------------------------- /station-blockitems-v0/src/main/java/net/modificationstation/stationapi/api/template/item/MetaNamedBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class MetaNamedBlockItem extends MetaBlockItem { 6 | public MetaNamedBlockItem(int i) { 7 | super(i); 8 | } 9 | 10 | @Override 11 | public String getTranslationKey(ItemStack item) { 12 | return getTranslationKey() + item.getDamage(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-datafixer-v0/src/main/java/net/modificationstation/stationapi/api/event/datafixer/DataFixerRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.datafixer; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.mine_diver.unsafeevents.event.EventPhases; 6 | import net.modificationstation.stationapi.api.StationAPI; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class DataFixerRegisterEvent extends Event {} 11 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/block/StationRendererBlockRenderManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.render.block; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationRendererBlockRenderManager { 7 | default void renderAllSides(BlockState state, int x, int y, int z) { 8 | Util.assertImpl(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-api-configuration/src/main/java/net/modificationstation/stationapi/config/StationConfig.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.config; 2 | 3 | import net.glasslauncher.mods.gcapi3.api.ConfigRoot; 4 | 5 | public class StationConfig { 6 | 7 | @ConfigRoot( 8 | value = "config", 9 | visibleName = "StationAPI Configuration", 10 | nameKey = "gui.config.stationapi.main" 11 | ) 12 | public static StationConfigData stationConfigData = new StationConfigData(); 13 | } 14 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/world/BlockStateView.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | import net.modificationstation.stationapi.api.block.BlockState; 5 | 6 | public interface BlockStateView { 7 | 8 | BlockState getBlockState(int x, int y, int z); 9 | 10 | default BlockState getBlockState(BlockPos pos) { 11 | return getBlockState(pos.getX(), pos.getY(), pos.getZ()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/DropWithBlockState.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.world.World; 4 | 5 | public interface DropWithBlockState { 6 | 7 | default void drop(World world, int x, int y, int z, BlockState state, int meta) { 8 | dropWithChance(world, x, y, z, state, meta, 1); 9 | } 10 | 11 | void dropWithChance(World world, int x, int y, int z, BlockState state, int meta, float chance); 12 | } 13 | -------------------------------------------------------------------------------- /station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/network/RegistryPacketHandler.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.network; 2 | 3 | import net.minecraft.network.NetworkHandler; 4 | import net.modificationstation.stationapi.impl.network.packet.s2c.play.RemapClientRegistryS2CPacket; 5 | 6 | public abstract class RegistryPacketHandler extends NetworkHandler { 7 | public void onRemapClientRegistry(RemapClientRegistryS2CPacket packet) { 8 | handle(packet); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/event/resource/AssetsReloadEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.event.resource; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.mine_diver.unsafeevents.event.EventPhases; 6 | import net.modificationstation.stationapi.api.StationAPI; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class AssetsReloadEvent extends Event {} 11 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ServerPlayerViewAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.flattening.server; 2 | 3 | import org.spongepowered.asm.mixin.Mixin; 4 | import org.spongepowered.asm.mixin.gen.Accessor; 5 | 6 | import java.util.List; 7 | import net.minecraft.server.ChunkMap; 8 | 9 | @Mixin(ChunkMap.class) 10 | public interface ServerPlayerViewAccessor { 11 | @Accessor 12 | List getChunksToUpdate(); 13 | } 14 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/entity/StationItemsEntity.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.entity; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | import net.minecraft.item.ItemStack; 6 | import net.modificationstation.stationapi.api.util.Util; 7 | 8 | public interface StationItemsEntity { 9 | @Environment(EnvType.CLIENT) 10 | default void equipStack(int slot, ItemStack stack) { 11 | Util.assertImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-tools-api-v1/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-tool-api-v1") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-items-v0", 10 | "station-blocks-v0", 11 | "station-flattening-v0" 12 | ) -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/event/worldgen/biome/BiomeProviderRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.worldgen.biome; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.mine_diver.unsafeevents.event.EventPhases; 6 | import net.modificationstation.stationapi.api.StationAPI; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class BiomeProviderRegisterEvent extends Event {} -------------------------------------------------------------------------------- /station-localization-api-v0/src/main/java/net/modificationstation/stationapi/mixin/lang/TranslationStorageAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.lang; 2 | 3 | import net.minecraft.client.resource.language.TranslationStorage; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | import java.util.Properties; 8 | 9 | @Mixin(TranslationStorage.class) 10 | public interface TranslationStorageAccessor { 11 | @Accessor 12 | Properties getTranslations(); 13 | } 14 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelRotation.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.render.model; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | import net.modificationstation.stationapi.api.util.math.Direction; 6 | import net.modificationstation.stationapi.api.util.math.Vec3f; 7 | 8 | @Environment(EnvType.CLIENT) 9 | public record ModelRotation(Vec3f origin, Direction.Axis axis, float angle, boolean rescale) { } 10 | -------------------------------------------------------------------------------- /station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolMaterial.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item.tool; 2 | 3 | import net.minecraft.item.ToolMaterial; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationToolMaterial { 7 | default ToolMaterial toolLevel(ToolLevel toolLevel) { 8 | return Util.assertImpl(); 9 | } 10 | 11 | default ToolLevel getToolLevel() { 12 | return Util.assertImpl(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/world/StationFlatteningWorldPopulationRegion.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world; 2 | 3 | import net.modificationstation.stationapi.api.block.BlockState; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationFlatteningWorldPopulationRegion extends BlockStateView { 7 | 8 | @Override 9 | default BlockState getBlockState(int x, int y, int z) { 10 | return Util.assertImpl(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /station-nbt-v0/src/main/java/net/modificationstation/stationapi/mixin/nbt/NbtCompoundAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.nbt; 2 | 3 | import net.minecraft.nbt.NbtCompound; 4 | import net.minecraft.nbt.NbtElement; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.Map; 9 | 10 | @Mixin(NbtCompound.class) 11 | public interface NbtCompoundAccessor { 12 | @Accessor("entries") 13 | Map stationapi$getEntries(); 14 | } 15 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/ZipTexturePackAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.resourceloader.client; 2 | 3 | import org.spongepowered.asm.mixin.Mixin; 4 | import org.spongepowered.asm.mixin.gen.Accessor; 5 | 6 | import java.util.zip.ZipFile; 7 | import net.minecraft.client.resource.pack.ZippedTexturePack; 8 | 9 | @Mixin(ZippedTexturePack.class) 10 | public interface ZipTexturePackAccessor { 11 | @Accessor 12 | ZipFile getZip(); 13 | } 14 | -------------------------------------------------------------------------------- /station-api-configuration/src/main/resources/assets/station-api-configuration/stationapi/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | # Config Entries 2 | gui.config.stationapi.main=StationAPI Configuration 3 | gui.config.stationapi.main.loading_screen_option=Loading Screen Style 4 | 5 | 6 | gui.config.stationapi.loadingscreen.show=Show 7 | gui.config.stationapi.loadingscreen.no_animate=Don't Animate 8 | gui.config.stationapi.loadingscreen.no_recolor=Don't Recolor 9 | gui.config.stationapi.loadingscreen.forge=Forge-Like 10 | gui.config.stationapi.loadingscreen.hide=Hide (Vanilla) 11 | -------------------------------------------------------------------------------- /station-dimensions-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-dimensions-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-resource-loader-v0", 9 | "station-registry-api-v0", 10 | "station-networking-v0", 11 | "station-localization-api-v0" 12 | ) -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/java/net/modificationstation/stationapi/impl/world/dimension/DimensionHelperImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.world.dimension; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.world.dimension.PortalForcer; 5 | import net.modificationstation.stationapi.api.util.Identifier; 6 | 7 | public abstract class DimensionHelperImpl { 8 | 9 | public abstract void switchDimension(PlayerEntity player, Identifier destination, double scale, PortalForcer travelAgent); 10 | } 11 | -------------------------------------------------------------------------------- /station-effects-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 3 | 4 | base.archivesName.set("station-effects-api-v0") 5 | version = getSubprojectVersion(project, "1.0.0") 6 | 7 | addModuleDependencies(project, 8 | "station-api-base", 9 | "station-registry-api-v0", 10 | "station-networking-v0", 11 | "station-items-v0", 12 | "station-player-api-v0" 13 | ) 14 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Accessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.flattening.server; 2 | 3 | import net.minecraft.block.entity.BlockEntity; 4 | import net.minecraft.server.ChunkMap; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(ChunkMap.TrackedChunk.class) 9 | public interface class_514Accessor { 10 | @Invoker 11 | void invokeSendBlockEntityUpdate(BlockEntity tileEntity); 12 | } 13 | -------------------------------------------------------------------------------- /station-localization-api-v0/src/main/java/net/modificationstation/stationapi/api/event/resource/language/TranslationInvalidationEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.resource.language; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.mine_diver.unsafeevents.event.EventPhases; 6 | import net.modificationstation.stationapi.api.StationAPI; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class TranslationInvalidationEvent extends Event {} 11 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RegistryEntryOwner.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry; 2 | 3 | /** 4 | * An owner of a {@link RegistryEntry} or {@link RegistryEntryList}. This is usually 5 | * a registry, but it is possible that an object owns multiple entries from 6 | * different registries. 7 | */ 8 | public interface RegistryEntryOwner { 9 | default boolean ownerEquals(RegistryEntryOwner other) { 10 | return other == this; 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/orientable_with_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube", 3 | "display": { 4 | "firstperson_righthand": { 5 | "rotation": [ 0, 135, 0 ], 6 | "translation": [ 0, 0, 0 ], 7 | "scale": [ 0.40, 0.40, 0.40 ] 8 | } 9 | }, 10 | "textures": { 11 | "particle": "#front", 12 | "down": "#bottom", 13 | "up": "#top", 14 | "north": "#front", 15 | "east": "#side", 16 | "south": "#side", 17 | "west": "#side" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /station-dimensions-v0/src/main/java/net/modificationstation/stationapi/api/world/dimension/VanillaDimensions.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world.dimension; 2 | 3 | import net.modificationstation.stationapi.api.util.Identifier; 4 | 5 | import static net.modificationstation.stationapi.api.util.Identifier.of; 6 | 7 | public class VanillaDimensions { 8 | 9 | public static final Identifier 10 | THE_NETHER = of("the_nether"), 11 | OVERWORLD = of("overworld"), 12 | SKYLANDS = of("skylands"); 13 | } 14 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/event/world/MetaSetEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.world; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.event.Cancelable; 5 | import net.minecraft.world.chunk.Chunk; 6 | 7 | @Cancelable 8 | @SuperBuilder 9 | public class MetaSetEvent extends WorldEvent { 10 | public final Chunk chunk; 11 | public final int 12 | x, y, z, 13 | blockMeta; 14 | public int overrideMeta; 15 | } 16 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/event/item/ItemEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.item; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.item.Item; 6 | 7 | @SuperBuilder 8 | public abstract class ItemEvent extends Event { 9 | public final Item item; 10 | 11 | @SuperBuilder 12 | public static class TranslationKeyChanged extends ItemEvent { 13 | public String translationKeyOverride; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/resources/station-recipes-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.recipe", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "CraftingRecipeManagerMixin", 8 | "CraftingResultMixin", 9 | "FurnaceBlockEntityMixin", 10 | "RecipeComparatorMixin", 11 | "SmeltingRecipeManagerAccessor", 12 | "SmeltingRecipeManagerMixin", 13 | "StatsMixin" 14 | ], 15 | "injectors": { 16 | "defaultRequire": 1 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /station-registry-sync-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-registry-sync-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-networking-v0", 10 | "station-lifecycle-events-v0", 11 | "station-vanilla-checker-v0" 12 | ) -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpritesheetHelper.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.texture; 2 | 3 | import it.unimi.dsi.fastutil.ints.IntIntPair; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public interface SpritesheetHelper { 7 | 8 | IntIntPair DEFAULT_RESOLUTION_MULTIPLIER = IntIntPair.of(1, 1); 9 | 10 | Identifier generateIdentifier(int textureIndex); 11 | 12 | IntIntPair getResolutionMultiplier(int textureIndex); 13 | } 14 | -------------------------------------------------------------------------------- /station-resource-loader-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-resource-loader-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-maths-v0", 9 | "station-lifecycle-events-v0", 10 | "station-world-events-v0", 11 | "station-api-configuration" 12 | ) -------------------------------------------------------------------------------- /src/test/resources/sltest.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.sltest.mixin", 5 | "compatibilityLevel": "JAVA_8", 6 | "mixins": [ 7 | "BlockBaseAccessor", 8 | "MixinLevel", 9 | "MixinNetherLevelSource", 10 | "MixinObsidian", 11 | "OverworldTestMixin" 12 | ], 13 | "server": [ 14 | ], 15 | "client": [ 16 | "MixinScreenBase", 17 | "MixinScrollableBase", 18 | "MixinWorldRenderer" 19 | ], 20 | "injectors": { 21 | "defaultRequire": 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /station-effects-api-v0/src/main/java/net/modificationstation/stationapi/mixin/effects/ClientNetworkHandlerAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.effects; 2 | 3 | import net.minecraft.client.network.ClientNetworkHandler; 4 | import net.minecraft.entity.Entity; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(ClientNetworkHandler.class) 9 | public interface ClientNetworkHandlerAccessor { 10 | @Invoker("getEntity") 11 | Entity stationapi_getEntityByID(int id); 12 | } 13 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/HardnessWithBlockState.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.world.BlockView; 6 | 7 | public interface HardnessWithBlockState { 8 | 9 | float getHardness(BlockState state, BlockView blockView, BlockPos pos); 10 | 11 | float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos); 12 | } 13 | -------------------------------------------------------------------------------- /station-blocks-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-blocks-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-maths-v0", 9 | "station-registry-api-v0", 10 | "station-flattening-v0", 11 | "station-networking-v0", 12 | "station-world-events-v0" 13 | ) -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/block/BlockStateHolder.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.block.Block; 4 | import net.modificationstation.stationapi.api.state.StateManager; 5 | 6 | public interface BlockStateHolder { 7 | 8 | StateManager getStateManager(); 9 | 10 | BlockState getDefaultState(); 11 | 12 | void appendProperties(StateManager.Builder builder); 13 | 14 | void setDefaultState(BlockState state); 15 | } 16 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/ClientNetworkHandlerAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item.client; 2 | 3 | import net.minecraft.client.network.ClientNetworkHandler; 4 | import net.minecraft.entity.Entity; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(ClientNetworkHandler.class) 9 | public interface ClientNetworkHandlerAccessor { 10 | @Invoker("getEntity") 11 | Entity stationapi_getEntity(int entityId); 12 | } 13 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/resources/assets/minecraft/stationapi/models/block/legacy/orientable_with_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/legacy/cube", 3 | "display": { 4 | "firstperson_righthand": { 5 | "rotation": [ 0, 225, 0 ], 6 | "translation": [ 0, 0, 0 ], 7 | "scale": [ 0.40, 0.40, 0.40 ] 8 | } 9 | }, 10 | "textures": { 11 | "particle": "#front", 12 | "down": "#bottom", 13 | "up": "#top", 14 | "north": "#front", 15 | "east": "#side", 16 | "south": "#side", 17 | "west": "#side" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/resource/ResourceType.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.resource; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Getter; 5 | import lombok.RequiredArgsConstructor; 6 | import lombok.experimental.FieldDefaults; 7 | 8 | @RequiredArgsConstructor 9 | @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) 10 | @Getter 11 | public enum ResourceType { 12 | CLIENT_RESOURCES("assets"), 13 | SERVER_DATA("data"); 14 | 15 | String directory; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /station-world-events-v0/src/main/resources/station-world-events-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.world", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "DimensionFileMixin", 8 | "ServerChunkCacheMixin", 9 | "WorldMixin", 10 | "WorldPropertiesMixin" 11 | ], 12 | "client": [ 13 | "client.ChunkCacheMixin" 14 | ], 15 | "injectors": { 16 | "defaultRequire": 1 17 | }, 18 | "server": [ 19 | "server.class_79Mixin" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /station-effects-api-v0/src/main/resources/station-effects-api-v0.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "net.modificationstation.stationapi.mixin.effects", 5 | "compatibilityLevel": "JAVA_17", 6 | "mixins": [ 7 | "EntityMixin" 8 | ], 9 | "client": [ 10 | "ClientNetworkHandlerAccessor", 11 | "InGameHudMixin", 12 | "InventoryScreenMixin" 13 | ], 14 | "server": [ 15 | "class_174Mixin", 16 | "ServerLoginNetworkHandlerMixin" 17 | ], 18 | "injectors": { 19 | "defaultRequire": 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /station-networking-v0/src/main/java/net/modificationstation/stationapi/api/network/packet/ManagedPacket.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.network.packet; 2 | 3 | import net.minecraft.network.packet.Packet; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public interface ManagedPacket> { 7 | int PACKET_ID = 254; 8 | 9 | @NotNull PacketType getType(); 10 | 11 | @FunctionalInterface 12 | interface Factory> { 13 | @NotNull T create(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-recipes-v0/src/main/java/net/modificationstation/stationapi/mixin/recipe/SmeltingRecipeManagerAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.recipe; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.recipe.SmeltingRecipeManager; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.Map; 9 | 10 | @Mixin(SmeltingRecipeManager.class) 11 | public interface SmeltingRecipeManagerAccessor { 12 | @Accessor 13 | Map getRecipes(); 14 | } 15 | -------------------------------------------------------------------------------- /station-tools-api-v1/src/main/java/net/modificationstation/stationapi/impl/item/ShearsOverrideEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.item; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.event.EventPhases; 5 | import net.modificationstation.stationapi.api.StationAPI; 6 | import net.modificationstation.stationapi.api.event.item.ItemStackEvent; 7 | 8 | @SuperBuilder 9 | @EventPhases(StationAPI.INTERNAL_PHASE) 10 | public class ShearsOverrideEvent extends ItemStackEvent { 11 | public boolean overrideShears; 12 | } -------------------------------------------------------------------------------- /station-container-api-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/GuiHandlerRegistryEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import net.modificationstation.stationapi.api.client.gui.screen.GuiHandler; 4 | import net.modificationstation.stationapi.api.client.registry.GuiHandlerRegistry; 5 | 6 | public class GuiHandlerRegistryEvent extends RegistryEvent.EntryTypeBound { 7 | public GuiHandlerRegistryEvent() { 8 | super(GuiHandlerRegistry.INSTANCE); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/api/client/item/CustomItemOverlay.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.item; 2 | 3 | import net.minecraft.client.font.TextRenderer; 4 | import net.minecraft.client.render.item.ItemRenderer; 5 | import net.minecraft.client.texture.TextureManager; 6 | import net.minecraft.item.ItemStack; 7 | 8 | public interface CustomItemOverlay { 9 | void renderItemOverlay(ItemRenderer itemRenderer, int itemX, int itemY, ItemStack stack, TextRenderer textRenderer, TextureManager textureManager); 10 | } 11 | -------------------------------------------------------------------------------- /station-recipes-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-recipes-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-flattening-v0", 10 | "station-items-v0", 11 | "station-blockentities-v0", 12 | "station-resource-loader-v0" 13 | ) -------------------------------------------------------------------------------- /station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/mixin/arsenic/client/EntityRendererAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.arsenic.client; 2 | 3 | import net.minecraft.client.render.entity.EntityRenderDispatcher; 4 | import net.minecraft.client.render.entity.EntityRenderer; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(EntityRenderer.class) 9 | public interface EntityRendererAccessor { 10 | @Accessor 11 | EntityRenderDispatcher getDispatcher(); 12 | } 13 | -------------------------------------------------------------------------------- /station-effects-api-v0/src/main/java/net/modificationstation/stationapi/impl/effect/StationEffectsEntityImpl.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.effect; 2 | 3 | import net.modificationstation.stationapi.api.effect.EntityEffect; 4 | import net.modificationstation.stationapi.api.effect.EntityEffectType; 5 | 6 | public interface StationEffectsEntityImpl { 7 | void stationapi_addEffect(EntityEffect effect, boolean appliedNow); 8 | 9 | void stationapi_removeAllEffects(); 10 | 11 | void stationapi_removeEffect(EntityEffectType effectType); 12 | } 13 | -------------------------------------------------------------------------------- /station-world-events-v0/src/main/java/net/modificationstation/stationapi/api/event/world/WorldEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.world; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.world.World; 6 | 7 | @SuperBuilder 8 | public abstract class WorldEvent extends Event { 9 | public final World world; 10 | 11 | @SuperBuilder 12 | public static class Init extends WorldEvent {} 13 | 14 | @SuperBuilder 15 | public static class Save extends WorldEvent {} 16 | } 17 | -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/item/ModelItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.item; 2 | 3 | import net.modificationstation.stationapi.api.util.Identifier; 4 | import net.modificationstation.stationapi.api.template.item.TemplateItem; 5 | 6 | public class ModelItem extends TemplateItem/* implements ItemModelProvider*/ { 7 | 8 | public ModelItem(Identifier identifier) { 9 | super(identifier); 10 | } 11 | 12 | // @Override 13 | // public Model getModel(int damage) { 14 | // return TextureListener.testItemModel; 15 | // } 16 | } 17 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/color/item/ItemColorProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.color.item; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | import net.minecraft.item.ItemStack; 6 | 7 | @Environment(EnvType.CLIENT) 8 | public interface ItemColorProvider { 9 | 10 | /** 11 | * {@return the color of the item stack for the specified tint index, 12 | * or -1 if not tinted} 13 | */ 14 | int getColor(ItemStack var1, int var2); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /station-lifecycle-events-v0/src/main/java/net/modificationstation/stationapi/api/server/event/network/PlayerLoginEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.server.event.network; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.entity.player.ServerPlayerEntity; 6 | import net.minecraft.network.packet.login.LoginHelloPacket; 7 | 8 | @SuperBuilder 9 | public class PlayerLoginEvent extends Event { 10 | public final LoginHelloPacket loginHelloPacket; 11 | public final ServerPlayerEntity player; 12 | } 13 | -------------------------------------------------------------------------------- /station-blockitems-v0/src/main/java/net/modificationstation/stationapi/api/block/StationBlockItemsBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.block; 2 | 3 | import net.minecraft.block.Block; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | 6 | public interface StationBlockItemsBlock extends BlockItemToggle { 7 | @Override 8 | default Block disableAutoItemRegistration() { 9 | return Util.assertImpl(); 10 | } 11 | 12 | @Override 13 | default boolean isAutoItemRegistrationDisabled() { 14 | return Util.assertImpl(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/client/event/render/entity/EntityRendererRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.event.render.entity; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.client.render.entity.EntityRenderer; 6 | import net.minecraft.entity.Entity; 7 | import java.util.Map; 8 | 9 | @SuperBuilder 10 | public class EntityRendererRegisterEvent extends Event { 11 | public final Map, EntityRenderer> renderers; 12 | } 13 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/entity/player/PlayerStrengthWithBlockState.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.entity.player; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | import net.minecraft.world.BlockView; 5 | import net.modificationstation.stationapi.api.block.BlockState; 6 | 7 | public interface PlayerStrengthWithBlockState { 8 | 9 | boolean canHarvest(BlockView blockView, BlockPos blockPos, BlockState state); 10 | 11 | float getBlockBreakingSpeed(BlockView blockView, BlockPos blockPos, BlockState state); 12 | } 13 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.Item; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateItem extends Item implements ItemTemplate { 7 | public TemplateItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateItem(int id) { 13 | super(id); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/world/chunk/CompactingPackedIntegerArray.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.world.chunk; 2 | 3 | import net.modificationstation.stationapi.impl.world.chunk.Palette; 4 | 5 | public interface CompactingPackedIntegerArray { 6 | 7 | /** 8 | * Copies the data out of this array into a new non-packed array. The returned array contains a copy of this array 9 | * re-mapped using {@param destPalette}. 10 | */ 11 | void compact(Palette srcPalette, Palette dstPalette, short[] out); 12 | } 13 | -------------------------------------------------------------------------------- /station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/HandledScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.item.client; 2 | 3 | import net.minecraft.client.gui.screen.ingame.HandledScreen; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(HandledScreen.class) 8 | public interface HandledScreenAccessor { 9 | @Accessor("backgroundWidth") 10 | int stationapi_getBackgroundWidth(); 11 | 12 | @Accessor("backgroundHeight") 13 | int stationapi_getBackgroundHeight(); 14 | } 15 | -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/block/ModdedBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.block; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.material.Material; 5 | 6 | public class ModdedBlock extends Block { 7 | 8 | public ModdedBlock(int id, Material material) { 9 | super(id, material); 10 | } 11 | 12 | /*@Override 13 | public int method_1600(TileView arg, int i, int j, int k) { 14 | return 0x6da132; 15 | } 16 | 17 | @Override 18 | public int method_1589(int i) { 19 | return 0x6da132; 20 | }*/ 21 | } 22 | -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/StationSpawnDataProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.server.entity; 2 | 3 | import net.modificationstation.stationapi.api.network.packet.MessagePacket; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public interface StationSpawnDataProvider extends CustomSpawnDataProvider { 7 | 8 | Identifier getHandlerIdentifier(); 9 | 10 | default void writeToMessage(MessagePacket message) { } 11 | 12 | default void readFromMessage(MessagePacket message) { } 13 | } 14 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/item/StationFlatteningBlockItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.item; 2 | 3 | import net.minecraft.block.Block; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | import org.jetbrains.annotations.ApiStatus; 6 | 7 | public interface StationFlatteningBlockItem extends BlockItemForm { 8 | 9 | default Block getBlock() { 10 | return Util.assertImpl(); 11 | } 12 | 13 | @ApiStatus.Internal 14 | default void setBlock(Block block) { 15 | Util.assertImpl(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/mixin/render/client/WaterColorAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.render.client; 2 | 3 | import net.minecraft.client.color.world.WaterColors; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(WaterColors.class) 9 | public interface WaterColorAccessor { 10 | @Accessor("colorMap") 11 | static int[] stationapi$getMap() { 12 | return Util.assertMixin(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-vanilla-checker-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-vanilla-checker-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-resource-loader-v0", 9 | "station-registry-api-v0", 10 | "station-lifecycle-events-v0", 11 | "station-networking-v0", 12 | "station-localization-api-v0" 13 | ) -------------------------------------------------------------------------------- /station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/mixin/vanillafix/client/SelectWorldScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.vanillafix.client; 2 | 3 | import net.minecraft.client.gui.screen.world.SelectWorldScreen; 4 | import net.minecraft.world.storage.WorldSaveInfo; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.List; 9 | 10 | @Mixin(SelectWorldScreen.class) 11 | public interface SelectWorldScreenAccessor { 12 | @Accessor 13 | List getSaves(); 14 | } 15 | -------------------------------------------------------------------------------- /station-worldgen-api-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-worldgen-api-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-maths-v0", 9 | "station-registry-api-v0", 10 | "station-flattening-v0", 11 | "station-nbt-v0", 12 | "station-biome-events-v0", 13 | "station-blocks-v0" 14 | ) -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/mixin/OverworldTestMixin.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.mixin; 2 | 3 | import net.minecraft.world.dimension.OverworldDimension; 4 | import net.modificationstation.stationapi.api.world.dimension.StationDimension; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | 7 | @Mixin(OverworldDimension.class) 8 | public class OverworldTestMixin implements StationDimension { 9 | @Override 10 | public int getHeight() { 11 | return 320; 12 | } 13 | 14 | @Override 15 | public int getBottomY() { 16 | return -64; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /station-api-base/src/main/java/net/modificationstation/stationapi/api/util/API.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.util; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Marks methods, constructors and fields that are a part of API to suppress the "unused" warning. 10 | * @author mine_diver 11 | */ 12 | @Retention(RetentionPolicy.SOURCE) 13 | @Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD}) 14 | public @interface API {} 15 | -------------------------------------------------------------------------------- /station-blockitems-v0/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion 2 | import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies 3 | base.archivesName.set("station-blockitems-v0") 4 | version = getSubprojectVersion(project, "1.0.0") 5 | 6 | addModuleDependencies(project, 7 | "station-api-base", 8 | "station-registry-api-v0", 9 | "station-blocks-v0", 10 | "station-items-v0", 11 | "station-renderer-api-v0", 12 | "station-templates-v0", 13 | "station-flattening-v0" 14 | ) -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/DefaultedRegistry.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.registry; 2 | 3 | import net.modificationstation.stationapi.api.util.Identifier; 4 | import org.jetbrains.annotations.NotNull; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | public interface DefaultedRegistry extends Registry { 8 | @NotNull 9 | Identifier getId(T value); 10 | 11 | @NotNull 12 | T get(@Nullable Identifier id); 13 | 14 | @NotNull 15 | T get(int index); 16 | 17 | Identifier getDefaultId(); 18 | } 19 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateBedItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.BedItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateBedItem extends BedItem implements ItemTemplate { 7 | public TemplateBedItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateBedItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateEggItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.EggItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateEggItem extends EggItem implements ItemTemplate { 7 | public TemplateEggItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateEggItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateMapItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.MapItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateMapItem extends MapItem implements ItemTemplate { 7 | public TemplateMapItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateMapItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/event/block/FireBurnableRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.block; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | 6 | @SuperBuilder 7 | public final class FireBurnableRegisterEvent extends Event implements AddBurnable { 8 | public final AddBurnable addBurnable; 9 | 10 | @Override 11 | public void addBurnable(int blockId, int burnChance, int spreadChance) { 12 | addBurnable.addBurnable(blockId, burnChance, spreadChance); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateBowItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.BowItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateBowItem extends BowItem implements ItemTemplate { 7 | public TemplateBowItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateBowItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateDyeItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.DyeItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateDyeItem extends DyeItem implements ItemTemplate { 7 | public TemplateDyeItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateDyeItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/EntityHandlerRegistryEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import net.modificationstation.stationapi.api.client.entity.factory.EntityWorldAndPosFactory; 4 | import net.modificationstation.stationapi.api.client.registry.EntityHandlerRegistry; 5 | 6 | public class EntityHandlerRegistryEvent extends RegistryEvent.EntryTypeBound { 7 | public EntityHandlerRegistryEvent() { 8 | super(EntityHandlerRegistry.INSTANCE); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/RegistryEntryRemovedEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.experimental.FieldDefaults; 5 | import lombok.experimental.SuperBuilder; 6 | import net.mine_diver.unsafeevents.Event; 7 | import net.modificationstation.stationapi.api.util.Identifier; 8 | 9 | @SuperBuilder 10 | @FieldDefaults(level = AccessLevel.PUBLIC, makeFinal = true) 11 | public class RegistryEntryRemovedEvent extends Event { 12 | int rawId; Identifier id; T object; 13 | } 14 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateBoatItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.BoatItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateBoatItem extends BoatItem implements ItemTemplate { 7 | public TemplateBoatItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateBoatItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateCoalItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.CoalItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateCoalItem extends CoalItem implements ItemTemplate { 7 | public TemplateCoalItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateCoalItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSignItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SignItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateSignItem extends SignItem implements ItemTemplate { 7 | public TemplateSignItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateSignItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelBakeSettings.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.render.model; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | import net.modificationstation.stationapi.api.util.math.AffineTransformation; 6 | 7 | @Environment(EnvType.CLIENT) 8 | public interface ModelBakeSettings { 9 | default AffineTransformation getRotation() { 10 | return AffineTransformation.identity(); 11 | } 12 | 13 | default boolean isUvLocked() { 14 | return false; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/impl/resource/ModResourcePack.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.impl.resource; 2 | 3 | import net.fabricmc.loader.api.metadata.ModMetadata; 4 | import net.modificationstation.stationapi.api.resource.ResourcePack; 5 | 6 | /** 7 | * Interface implemented by mod-provided resource packs. 8 | */ 9 | public interface ModResourcePack extends ResourcePack { 10 | /** 11 | * @return The ModMetadata object associated with the mod providing this 12 | * resource pack. 13 | */ 14 | ModMetadata getFabricModMetadata(); 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateBedBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.BedBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateBedBlock extends BedBlock implements BlockTemplate { 7 | public TemplateBedBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateBedBlock(int id) { 13 | super(id); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateLogBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.LogBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateLogBlock extends LogBlock implements BlockTemplate { 7 | public TemplateLogBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateLogBlock(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/net/modificationstation/sltest/tileentity/TileEntityListener.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.sltest.tileentity; 2 | 3 | import net.mine_diver.unsafeevents.listener.EventListener; 4 | import net.modificationstation.sltest.SLTest; 5 | import net.modificationstation.stationapi.api.event.block.entity.BlockEntityRegisterEvent; 6 | 7 | public class TileEntityListener { 8 | 9 | @EventListener 10 | public void registerTileEntities(BlockEntityRegisterEvent event) { 11 | SLTest.LOGGER.info("reeee tile entiites"); 12 | event.register(TileEntityFreezer.class, "sltest:freezer"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/event/color/item/ItemColorsRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.event.color.item; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.modificationstation.stationapi.api.client.color.block.BlockColors; 6 | import net.modificationstation.stationapi.api.client.color.item.ItemColors; 7 | 8 | @SuperBuilder 9 | public class ItemColorsRegisterEvent extends Event { 10 | public final BlockColors blockColors; 11 | public final ItemColors itemColors; 12 | } 13 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/MinecraftAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.resourceloader.client; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.util.Timer; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | import org.spongepowered.asm.mixin.gen.Invoker; 8 | 9 | @Mixin(Minecraft.class) 10 | public interface MinecraftAccessor { 11 | @Accessor 12 | Timer getTimer(); 13 | 14 | @Invoker 15 | void invokeLogGlError(String phase); 16 | } 17 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/TessellatorAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.resourceloader.client; 2 | 3 | import net.minecraft.client.render.Tessellator; 4 | import net.modificationstation.stationapi.api.util.Util; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(Tessellator.class) 9 | public interface TessellatorAccessor { 10 | @Invoker("") 11 | static Tessellator stationapi_create(int size) { 12 | return Util.assertMixin(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /station-container-api-v0/src/main/java/net/modificationstation/stationapi/mixin/container/server/ServerPlayerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.container.server; 2 | 3 | import net.minecraft.entity.player.ServerPlayerEntity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(ServerPlayerEntity.class) 9 | public interface ServerPlayerEntityAccessor { 10 | @Invoker 11 | void invokeIncrementScreenHandlerSyncId(); 12 | 13 | @Accessor 14 | int getScreenHandlerSyncId(); 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateChestBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.ChestBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateChestBlock extends ChestBlock implements BlockTemplate { 7 | public TemplateChestBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateChestBlock(int id) { 13 | super(id); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateNoteBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.NoteBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateNoteBlock extends NoteBlock implements BlockTemplate { 7 | public TemplateNoteBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateNoteBlock(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSaddleItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SaddleItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateSaddleItem extends SaddleItem implements ItemTemplate { 7 | public TemplateSaddleItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateSaddleItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateShearsItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.ShearsItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateShearsItem extends ShearsItem implements ItemTemplate { 7 | public TemplateShearsItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateShearsItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-blockentities-v0/src/main/java/net/modificationstation/stationapi/api/client/event/block/entity/BlockEntityRendererRegisterEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.event.block.entity; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.minecraft.block.entity.BlockEntity; 6 | import net.minecraft.client.render.block.entity.BlockEntityRenderer; 7 | import java.util.Map; 8 | 9 | @SuperBuilder 10 | public class BlockEntityRendererRegisterEvent extends Event { 11 | public final Map, BlockEntityRenderer> renderers; 12 | } 13 | -------------------------------------------------------------------------------- /station-entities-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/MobHandlerRegistryEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import net.minecraft.entity.LivingEntity; 4 | import net.minecraft.world.World; 5 | import net.modificationstation.stationapi.api.client.registry.MobHandlerRegistry; 6 | 7 | import java.util.function.Function; 8 | 9 | public class MobHandlerRegistryEvent extends RegistryEvent.EntryTypeBound, MobHandlerRegistry> { 10 | public MobHandlerRegistryEvent() { 11 | super(MobHandlerRegistry.INSTANCE); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateGrassBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.GrassBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateGrassBlock extends GrassBlock implements BlockTemplate { 7 | public TemplateGrassBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateGrassBlock(int id) { 13 | super(id); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSnowballItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SnowballItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateSnowballItem extends SnowballItem implements ItemTemplate { 7 | public TemplateSnowballItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateSnowballItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/surface/StateSurfaceRule.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.worldgen.surface; 2 | 3 | import net.minecraft.world.World; 4 | import net.modificationstation.stationapi.api.block.BlockState; 5 | 6 | public class StateSurfaceRule extends SurfaceRule { 7 | private final BlockState state; 8 | 9 | public StateSurfaceRule(BlockState state) { 10 | this.state = state; 11 | } 12 | 13 | @Override 14 | public void apply(World world, int x, int y, int z) { 15 | world.setBlockState(x, y, z, state); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/ItemRegistryEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry; 2 | 3 | import net.mine_diver.unsafeevents.event.EventPhases; 4 | import net.minecraft.item.Item; 5 | import net.modificationstation.stationapi.api.StationAPI; 6 | import net.modificationstation.stationapi.api.registry.ItemRegistry; 7 | 8 | @EventPhases(StationAPI.INTERNAL_PHASE) 9 | public class ItemRegistryEvent extends RegistryEvent.EntryTypeBound { 10 | public ItemRegistryEvent() { 11 | super(ItemRegistry.INSTANCE); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/event/registry/legacy/PostRegistryRemapEvent.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.event.registry.legacy; 2 | 3 | import lombok.experimental.SuperBuilder; 4 | import net.mine_diver.unsafeevents.Event; 5 | import net.modificationstation.stationapi.api.registry.legacy.WorldLegacyRegistry; 6 | 7 | /** 8 | * An event that's fired after all {@link WorldLegacyRegistry} 9 | * instances have been remapped. 10 | * 11 | * @author mine_diver 12 | * @see WorldLegacyRegistry 13 | */ 14 | @SuperBuilder 15 | public class PostRegistryRemapEvent extends Event {} 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateIceBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.IceBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateIceBlock extends IceBlock implements BlockTemplate { 7 | public TemplateIceBlock(Identifier identifier, int j) { 8 | this(BlockTemplate.getNextId(), j); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateIceBlock(int i, int j) { 13 | super(i, j); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateOreBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.OreBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateOreBlock extends OreBlock implements BlockTemplate { 7 | public TemplateOreBlock(Identifier identifier, int j) { 8 | this(BlockTemplate.getNextId(), j); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateOreBlock(int i, int j) { 13 | super(i, j); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateSpongeBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.SpongeBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateSpongeBlock extends SpongeBlock implements BlockTemplate { 7 | public TemplateSpongeBlock(Identifier identifier) { 8 | this(BlockTemplate.getNextId()); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateSpongeBlock(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateTntBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.TntBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateTntBlock extends TntBlock implements BlockTemplate { 7 | public TemplateTntBlock(Identifier identifier, int j) { 8 | this(BlockTemplate.getNextId(), j); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateTntBlock(int i, int j) { 13 | super(i, j); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateMapBaseItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.NetworkSyncedItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateMapBaseItem extends NetworkSyncedItem implements ItemTemplate { 7 | public TemplateMapBaseItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateMapBaseItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePaintingItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.PaintingItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplatePaintingItem extends PaintingItem implements ItemTemplate { 7 | public TemplatePaintingItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplatePaintingItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateRedstoneItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.RedstoneItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateRedstoneItem extends RedstoneItem implements ItemTemplate { 7 | public TemplateRedstoneItem(Identifier identifier) { 8 | this(ItemTemplate.getNextId()); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateRedstoneItem(int i) { 13 | super(i); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSeedsItem.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.item; 2 | 3 | import net.minecraft.item.SeedsItem; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateSeedsItem extends SeedsItem implements ItemTemplate { 7 | public TemplateSeedsItem(Identifier identifier, int j) { 8 | this(ItemTemplate.getNextId(), j); 9 | ItemTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateSeedsItem(int id, int j) { 13 | super(id, j); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/tag/TagFile.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.tag; 2 | 3 | import com.mojang.serialization.Codec; 4 | import com.mojang.serialization.codecs.RecordCodecBuilder; 5 | 6 | import java.util.List; 7 | 8 | public record TagFile(List entries, boolean replace) { 9 | public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group(TagEntry.CODEC.listOf().fieldOf("values").forGetter(TagFile::entries), Codec.BOOL.optionalFieldOf("replace", false).forGetter(TagFile::replace)).apply(instance, TagFile::new)); 10 | } 11 | 12 | -------------------------------------------------------------------------------- /station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/model/item/ItemModelPredicateProvider.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.model.item; 2 | 3 | import net.fabricmc.api.EnvType; 4 | import net.fabricmc.api.Environment; 5 | import net.minecraft.entity.LivingEntity; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.world.BlockView; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | @Environment(EnvType.CLIENT) 11 | public interface ItemModelPredicateProvider { 12 | 13 | float call(ItemStack stack, @Nullable BlockView world, @Nullable LivingEntity entity, int seed); 14 | } 15 | -------------------------------------------------------------------------------- /station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/mixin/arsenic/client/ItemRendererAccessor.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.mixin.arsenic.client; 2 | 3 | import net.minecraft.client.render.block.BlockRenderManager; 4 | import net.minecraft.client.render.item.ItemRenderer; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.Random; 9 | 10 | @Mixin(ItemRenderer.class) 11 | public interface ItemRendererAccessor { 12 | @Accessor 13 | Random getRandom(); 14 | 15 | @Accessor 16 | BlockRenderManager getBlockRenderer(); 17 | } 18 | -------------------------------------------------------------------------------- /station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadableAssetsManager.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.client.resource; 2 | 3 | import net.modificationstation.stationapi.api.resource.ResourceType; 4 | import net.modificationstation.stationapi.impl.resource.ReloadableResourceManager; 5 | 6 | public final class ReloadableAssetsManager extends ReloadableResourceManager { 7 | 8 | public static final ReloadableAssetsManager INSTANCE = new ReloadableAssetsManager(); 9 | 10 | private ReloadableAssetsManager() { 11 | super(ResourceType.CLIENT_RESOURCES); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplateCropBlock.java: -------------------------------------------------------------------------------- 1 | package net.modificationstation.stationapi.api.template.block; 2 | 3 | import net.minecraft.block.CropBlock; 4 | import net.modificationstation.stationapi.api.util.Identifier; 5 | 6 | public class TemplateCropBlock extends CropBlock implements BlockTemplate { 7 | public TemplateCropBlock(Identifier identifier, int j) { 8 | this(BlockTemplate.getNextId(), j); 9 | BlockTemplate.onConstructor(this, identifier); 10 | } 11 | 12 | public TemplateCropBlock(int i, int j) { 13 | super(i, j); 14 | } 15 | } 16 | --------------------------------------------------------------------------------