From 25dfa817caa52afc216d4bd5be8ee548755f8a12 Mon Sep 17 00:00:00 2001 From: bqc0n Date: Sat, 12 Oct 2024 17:32:27 +0900 Subject: [PATCH 1/2] enable spotless --- build.gradle | 7 +++---- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 162a32c7c..d72c2aedf 100644 --- a/build.gradle +++ b/build.gradle @@ -252,11 +252,10 @@ if (enableSpotless.toBoolean()) { target 'src/*/kotlin/**/*.kt' toggleOffOn() - ktfmt('0.39') + ktlint() - trimTrailingWhitespace() - indentWithSpaces(4) - endWithNewline() +// trimTrailingWhitespace() +// endWithNewline() } scala { target 'src/*/scala/**/*.scala' diff --git a/gradle.properties b/gradle.properties index 29d6429bc..5bd2f889d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -188,7 +188,7 @@ mavenArtifactGroup = # By default this will use the files found here: https://github.com/GregTechCEu/Buildscripts/tree/master/spotless # to format your code. However, you can create your own version of these files and place them in your project's # root directory to apply your own formatting options instead. -enableSpotless = false +enableSpotless = true # Enable JUnit testing platform used for testing your code. # Uses JUnit 5. See guide and documentation here: https://junit.org/junit5/docs/current/user-guide/ From 18f0c15942465ce622891ad88bd3fbf9248feeed Mon Sep 17 00:00:00 2001 From: bqc0n Date: Mon, 14 Oct 2024 10:09:35 +0900 Subject: [PATCH 2/2] ktfmt --- build.gradle | 6 +- .../sync/codec/ClayLaserByteBufAdapter.java | 1 + .../trc/clayium/common/config/ConfigCore.java | 11 +- .../common/config/ConfigTierBalance.java | 12 +- .../trc/clayium/common/util/DebugUtils.java | 1 + .../mixins/ClayiumLateMixinLoadingPlugin.java | 1 + .../FixDupeWithPhantomSlotMixin.java | 9 +- .../com/github/trc/clayium/api/CValues.kt | 16 +- .../com/github/trc/clayium/api/ClayEnergy.kt | 18 +- .../com/github/trc/clayium/api/ClayiumApi.kt | 9 +- .../com/github/trc/clayium/api/LaserEnergy.kt | 8 +- .../trc/clayium/api/block/BlockMachine.kt | 208 ++- .../trc/clayium/api/block/ICaReactorHull.kt | 3 +- .../api/block/IEnergyStorageUpgradeBlock.kt | 2 +- .../clayium/api/block/IOverclockerBlock.kt | 2 +- .../trc/clayium/api/block/IResonatingBlock.kt | 2 +- .../trc/clayium/api/block/ITieredBlock.kt | 3 +- .../trc/clayium/api/block/ItemBlockDamaged.kt | 11 +- .../trc/clayium/api/block/ItemBlockMachine.kt | 35 +- .../trc/clayium/api/block/ItemBlockTiered.kt | 28 +- .../trc/clayium/api/block/VariantBlock.kt | 29 +- .../trc/clayium/api/block/VariantItemBlock.kt | 16 +- .../api/capability/AbstractWorkable.kt | 133 +- .../api/capability/ClayiumCapabilities.kt | 5 +- .../api/capability/ClayiumDataCodecs.kt | 3 +- .../api/capability/ClayiumTileCapabilities.kt | 20 +- .../api/capability/IClayEnergyHolder.kt | 7 +- .../api/capability/IClayEnergyProvider.kt | 2 +- .../api/capability/IClayLaserAcceptor.kt | 3 +- .../api/capability/IClayLaserSource.kt | 7 +- .../api/capability/IConfigurationTool.kt | 2 +- .../clayium/api/capability/IControllable.kt | 2 +- .../trc/clayium/api/capability/IItemFilter.kt | 2 +- .../api/capability/IPipeConnectable.kt | 6 +- .../api/capability/IPipeConnectionLogic.kt | 18 +- .../api/capability/ISynchronizedInterface.kt | 15 +- .../api/capability/PipeConnectionMode.kt | 3 +- .../api/capability/SimpleCapabilityManager.kt | 36 +- .../capability/impl/AbstractRecipeLogic.kt | 31 +- .../api/capability/impl/ClayEnergyHolder.kt | 40 +- .../capability/impl/ClayLaserIrradiator.kt | 21 +- .../impl/ClayLaserSourceMteTrait.kt | 17 +- .../impl/ClayiumItemStackHandler.kt | 2 +- .../capability/impl/EmptyItemStackHandler.kt | 6 +- .../impl/EnergyStorageExportOnly.kt | 2 +- .../impl/EnergyStorageSerializable.kt | 15 +- .../capability/impl/FilteredItemHandler.kt | 2 +- .../impl/FilteredItemHandlerModifiable.kt | 11 +- .../impl/InfiniteItemStackHandler.kt | 6 +- .../api/capability/impl/ItemHandlerProxy.kt | 2 +- .../api/capability/impl/LaserEnergyHolder.kt | 16 +- .../impl/ListeningItemStackHandler.kt | 5 +- .../capability/impl/MultiblockRecipeLogic.kt | 2 +- .../impl/NotifiableItemStackHandler.kt | 9 +- .../capability/impl/RangedItemHandlerProxy.kt | 7 +- .../capability/impl/RecipeLogicCaInjector.kt | 15 +- .../capability/impl/RecipeLogicClayFurnace.kt | 49 +- .../api/capability/impl/RecipeLogicEnergy.kt | 39 +- .../api/capability/impl/ResonanceManager.kt | 12 +- .../api/capability/impl/SimpleItemFilter.kt | 2 +- .../api/capability/impl/VoidingItemHandler.kt | 7 +- .../api/events/ClayiumMteRegistryEvent.kt | 2 +- .../api/extensions/ccl/CclExtensions.kt | 22 +- .../api/gui/MetaTileEntityGuiFactory.kt | 14 +- .../api/gui/data/MetaTileEntityGuiData.kt | 16 +- .../api/gui/sync/ClayLaserSyncValue.kt | 2 +- .../trc/clayium/api/item/ITieredItem.kt | 2 +- .../github/trc/clayium/api/laser/ClayLaser.kt | 18 +- .../AbstractItemGeneratorMetaTileEntity.kt | 104 +- .../AbstractMinerMetaTileEntity.kt | 165 ++- .../ClayBufferMetaTileEntity.kt | 101 +- .../ClayInterfaceMetaTileEntity.kt | 35 +- .../metatileentity/ClayLaserMetaTileEntity.kt | 53 +- .../clayium/api/metatileentity/MTETrait.kt | 6 +- .../api/metatileentity/MetaTileEntity.kt | 464 ++++--- .../metatileentity/MetaTileEntityHolder.kt | 30 +- .../MultiTrackBufferMetaTileEntity.kt | 240 ++-- .../NeighborCacheTileEntityBase.kt | 2 +- .../SimpleMachineMetaTileEntity.kt | 44 +- .../metatileentity/SyncedTileEntityBase.kt | 9 +- .../metatileentity/WorkableMetaTileEntity.kt | 126 +- .../metatileentity/interfaces/IMarkDirty.kt | 2 +- .../interfaces/ISyncedTileEntity.kt | 4 +- .../metatileentity/interfaces/IWorldObject.kt | 2 +- .../ClayBlastFurnaceMetaTileEntity.kt | 26 +- .../multiblock/ClayReactorMetaTileEntity.kt | 41 +- .../multiblock/IMultiblockPart.kt | 4 +- .../multiblock/LaserProxyMetaTileEntity.kt | 40 +- .../multiblock/MultiblockLogic.kt | 57 +- .../multiblock/ProxyMetaTileEntityBase.kt | 36 +- .../metatileentity/registry/CMteManager.kt | 4 +- .../metatileentity/registry/CMteRegistry.kt | 23 +- .../api/metatileentity/trait/AutoIoHandler.kt | 80 +- .../metatileentity/trait/ClayMarkerHandler.kt | 27 +- .../metatileentity/trait/OverclockHandler.kt | 13 +- .../trc/clayium/api/network/PacketDataList.kt | 2 +- .../com/github/trc/clayium/api/pan/IPan.kt | 2 +- .../github/trc/clayium/api/pan/IPanAdapter.kt | 2 +- .../github/trc/clayium/api/pan/IPanCable.kt | 5 +- .../github/trc/clayium/api/pan/IPanRecipe.kt | 2 +- .../trc/clayium/api/pan/IPanRecipeFactory.kt | 16 +- .../github/trc/clayium/api/pan/IPanUser.kt | 3 +- .../trc/clayium/api/recipe/IRecipeProvider.kt | 14 +- .../clayium/api/unification/OreDictUnifier.kt | 2 +- .../unification/material/CMarkerMaterial.kt | 7 +- .../unification/material/CMarkerMaterials.kt | 2 +- .../api/unification/material/CMaterial.kt | 83 +- .../api/unification/material/CMaterialFlag.kt | 3 +- .../unification/material/CMaterialFlags.kt | 2 +- .../material/CMaterialProperties.kt | 4 +- .../api/unification/material/CMaterials.kt | 1163 +++++++++-------- .../api/unification/material/CPropertyKey.kt | 4 +- .../api/unification/material/IMaterial.kt | 2 +- .../unification/material/MaterialAmount.kt | 11 +- .../unification/material/MaterialProperty.kt | 14 +- .../registry/CMarkerMaterialRegistry.kt | 2 +- .../clayium/api/unification/ore/OrePrefix.kt | 83 +- .../api/unification/stack/ItemAndMeta.kt | 13 +- .../api/unification/stack/ItemVariantMap.kt | 27 +- .../unification/stack/MultiItemVariantMap.kt | 8 +- .../unification/stack/SingleItemVariantMap.kt | 7 +- .../api/unification/stack/UnificationEntry.kt | 2 +- .../com/github/trc/clayium/api/util/CLog.kt | 2 +- .../com/github/trc/clayium/api/util/CUtils.kt | 18 +- .../github/trc/clayium/api/util/ClayTiers.kt | 3 +- .../api/util/Cuboid6BlockPosIterator.kt | 5 +- .../com/github/trc/clayium/api/util/ITier.kt | 3 +- .../trc/clayium/api/util/MachineIoMode.kt | 2 +- .../com/github/trc/clayium/api/util/Mods.kt | 5 +- .../trc/clayium/api/util/RelativeDirection.kt | 2 +- .../trc/clayium/api/util/TileEntityAccess.kt | 23 +- .../github/trc/clayium/api/util/VBlocks.kt | 7 +- .../com/github/trc/clayium/api/util/VItems.kt | 7 +- .../clayium/api/util/registry/CRegistry.kt | 18 +- .../api/util/registry/MaterialRegistry.kt | 9 +- .../github/trc/clayium/client/ClientProxy.kt | 41 +- .../github/trc/clayium/client/ModelUtils.kt | 159 ++- .../clayium/client/gui/GuiClayWorkTable.kt | 121 +- .../trc/clayium/client/gui/TextureExtra.kt | 51 +- .../gui/button/GuiButtonImageToggleable.kt | 48 +- .../client/model/LaserReflectorModelLoader.kt | 21 +- .../client/model/MaterialStateMapper.kt | 5 +- .../client/model/MetaTileEntityBakedModel.kt | 28 +- .../client/model/MetaTileEntityModel.kt | 2 +- .../client/model/MetaTileEntityModelLoader.kt | 5 +- .../model/MetaTileEntityPipeBakedModel.kt | 174 ++- .../clayium/client/model/MetalBlockModel.kt | 32 +- .../client/model/MetalBlockModelLoader.kt | 12 +- .../trc/clayium/client/model/ModelTextures.kt | 112 +- .../client/renderer/AreaMarkerRenderer.kt | 23 +- .../clayium/client/renderer/CRenderUtils.kt | 8 +- .../renderer/ClayLaserReflectorRenderer.kt | 27 +- .../client/renderer/ClayLaserRenderer.kt | 11 +- .../clayium/client/renderer/ClayMarkerTESR.kt | 13 +- .../client/renderer/InterfaceRenderer.kt | 159 ++- .../LaserReflectorItemStackRenderer.kt | 9 +- .../MetaTileEntityRenderDispatcher.kt | 34 +- .../client/renderer/PipedMachineIoRenderer.kt | 103 +- .../github/trc/clayium/common/ClayiumMod.kt | 15 +- .../github/trc/clayium/common/CommonProxy.kt | 94 +- .../github/trc/clayium/common/GuiHandler.kt | 20 +- .../common/blocks/BlockCaReactorCoil.kt | 6 +- .../common/blocks/BlockCaReactorHull.kt | 16 +- .../common/blocks/BlockClayLaserReflector.kt | 92 +- .../blocks/BlockEnergyStorageUpgrade.kt | 21 +- .../clayium/common/blocks/BlockMachineHull.kt | 3 +- .../common/blocks/BlockMaterialBase.kt | 15 +- .../clayium/common/blocks/BlockOverclocker.kt | 19 +- .../clayium/common/blocks/BlockPanCable.kt | 109 +- .../common/blocks/BlockQuartzCrucible.kt | 48 +- .../clayium/common/blocks/BlockResonator.kt | 17 +- .../blocks/BlockSimpleTileEntityHolder.kt | 15 +- .../clayium/common/blocks/ClayiumBlocks.kt | 129 +- .../common/blocks/ColoredSiliconeBlock.kt | 3 +- .../blocks/ItemBlockClayLaserReflector.kt | 2 +- .../common/blocks/ItemBlockEnergizedClay.kt | 14 +- .../common/blocks/ItemBlockMaterial.kt | 7 +- .../blocks/TileEntityClayLaserReflector.kt | 24 +- .../blocks/TileEntityCreativeEnergySource.kt | 17 +- .../blocks/chunkloader/ChunkLoaderBlock.kt | 12 +- .../chunkloader/ChunkLoaderTileEntity.kt | 11 +- .../BlockClayCraftingBoard.kt | 28 +- .../TileClayCraftingTable.kt | 154 ++- .../common/blocks/claytree/BlockClayLeaves.kt | 42 +- .../common/blocks/claytree/BlockClayLog.kt | 4 +- .../blocks/claytree/BlockClaySapling.kt | 41 +- .../clayworktable/BlockClayWorkTable.kt | 13 +- .../blocks/clayworktable/TileClayWorkTable.kt | 31 +- .../common/blocks/marker/BlockClayMarker.kt | 36 +- .../common/blocks/marker/ClayMarkerType.kt | 9 +- .../common/blocks/marker/TileClayMarker.kt | 40 +- .../common/blocks/material/BlockCompressed.kt | 78 +- .../blocks/material/BlockCompressedClay.kt | 7 +- .../blocks/material/BlockEnergizedClay.kt | 12 +- .../common/blocks/ores/BlockClayOre.kt | 23 +- .../common/blocks/ores/BlockDenseClayOre.kt | 9 +- .../common/blocks/ores/IClayOreBlock.kt | 6 +- .../blocks/properties/CMaterialProperty.kt | 7 +- .../common/creativetab/BasicCreativeTab.kt | 2 +- .../common/creativetab/ClayiumCTabs.kt | 8 +- .../trc/clayium/common/gui/ClayGuiTextures.kt | 85 +- .../common/gui/ContainerClayWorkTable.kt | 66 +- .../clayium/common/gui/ContainerClayium.kt | 24 +- .../clayium/common/gui/ResizingTextWidget.kt | 2 +- .../trc/clayium/common/items/ClayiumItems.kt | 50 +- .../common/items/ItemClayConfigTool.kt | 30 +- .../clayium/common/items/ItemClayPickaxe.kt | 15 +- .../clayium/common/items/ItemClayShovel.kt | 7 +- .../common/items/ItemClaySteelPickaxe.kt | 126 +- .../trc/clayium/common/items/ItemClayium.kt | 6 +- .../clayium/common/items/ItemMemoryCard.kt | 42 +- .../clayium/common/items/ItemSynchronizer.kt | 46 +- .../clayium/common/items/filter/FilterType.kt | 2 +- .../items/filter/ItemSimpleItemFilter.kt | 146 ++- .../items/metaitem/MetaItemClayParts.kt | 40 +- .../common/items/metaitem/MetaItemClayium.kt | 66 +- .../common/items/metaitem/MetaPrefixItem.kt | 48 +- .../metaitem/component/IItemComponent.kt | 15 +- .../metaitem/component/TooltipBehavior.kt | 7 +- .../common/loaders/OreDictionaryLoader.kt | 2 +- .../recipe/AlloySmelterRecipeLoader.kt | 48 +- .../loaders/recipe/AssemblerRecipeLoader.kt | 154 ++- .../loaders/recipe/BendingMachineLoader.kt | 8 +- .../common/loaders/recipe/CRecipeLoader.kt | 4 +- .../loaders/recipe/CaCondenserRecipeLoader.kt | 2 +- .../loaders/recipe/CaInjectorRecipeLoader.kt | 107 +- .../loaders/recipe/CentrifugeRecipeLoader.kt | 65 +- .../ChemicalMetalSeparatorRecipeLoader.kt | 8 +- .../recipe/ChemicalReactorRecipeLoader.kt | 58 +- .../recipe/ClayBlastFurnaceRecipeLoader.kt | 78 +- .../loaders/recipe/ClayReactorRecipeLoader.kt | 180 ++- .../recipe/ClayWorkTableRecipeLoader.kt | 3 +- .../loaders/recipe/CondenserRecipeLoader.kt | 30 +- .../loaders/recipe/CraftingRecipeLoader.kt | 382 ++++-- .../recipe/CuttingMachineRecipeLoader.kt | 65 +- .../loaders/recipe/DecomposerRecipeLoader.kt | 15 +- .../loaders/recipe/GrinderRecipeLoader.kt | 83 +- .../loaders/recipe/InscriberRecipeLoader.kt | 37 +- .../loaders/recipe/LaserRecipeLoader.kt | 2 +- .../loaders/recipe/LatheRecipeLoader.kt | 80 +- .../recipe/MachineBlockRecipeLoader.kt | 558 +++++--- .../recipe/MatterTransformerRecipeLoader.kt | 285 ++-- .../recipe/MillingMachineRecipeLoader.kt | 23 +- .../loaders/recipe/PipeDrawingRecipeLoader.kt | 6 +- .../recipe/SolarClayFabricatorRecipeLoader.kt | 15 +- .../loaders/recipe/WireDrawingRecipeLoader.kt | 30 +- .../AdvancedRangedMinerMetaTileEntity.kt | 58 +- .../AutoClayCondenserMetaTileEntity.kt | 159 ++- .../BlockBreakerMetaTileEntity.kt | 29 +- .../CaCondenserMetaTileEntity.kt | 28 +- .../CaInjectorMetaTileEntity.kt | 11 +- .../CentrifugeMetaTileEntity.kt | 105 +- .../ChemicalMetalSeparatorMetaTileEntity.kt | 91 +- .../ClayFabricatorMetaTileEntity.kt | 122 +- .../CobblestoneGeneratorMetaTileEntity.kt | 36 +- .../DistributorMetaTileEntity.kt | 191 +-- .../EnergyConverterMetaTileEntity.kt | 102 +- .../metatileentities/MetaTileEntities.kt | 574 +++++--- .../PanAdapterMetaTileEntity.kt | 171 ++- .../metatileentities/PanCoreMetaTileEntity.kt | 201 ++- .../PanDuplicatorMetaTileEntity.kt | 113 +- .../RangedMinerMetaTileEntity.kt | 11 +- .../ResonatingCollectorMetaTileEntity.kt | 43 +- .../SaltExtractorMetaTileEntity.kt | 33 +- .../SolarClayFabricatorMetaTileEntity.kt | 69 +- .../StorageContainerMetaTileEntity.kt | 262 ++-- .../VoidContainerMetaTileEntity.kt | 76 +- .../WaterwheelMetaTileEntity.kt | 76 +- .../multiblock/CaReactorMetaTileEntity.kt | 167 ++- .../multiblock/RedstoneProxyMetaTileEntity.kt | 37 +- .../trc/clayium/common/network/CNetwork.kt | 9 +- .../clayium/common/network/KeyInputPacket.kt | 6 +- .../network/handlers/KeyInputPacketHandler.kt | 2 +- .../trc/clayium/common/pan/PanRecipe.kt | 7 +- .../common/pan/factories/CPanRecipeFactory.kt | 36 +- .../CraftingTablePanRecipeFactory.kt | 25 +- .../pan/factories/FurnacePanRecipeFactory.kt | 10 +- .../trc/clayium/common/recipe/CWTRecipes.kt | 7 +- .../common/recipe/ClayWorkTableRecipe.kt | 58 +- .../trc/clayium/common/recipe/LaserRecipe.kt | 3 +- .../trc/clayium/common/recipe/Recipe.kt | 12 +- .../clayium/common/recipe/RecipeCategory.kt | 4 +- .../trc/clayium/common/recipe/RecipeInput.kt | 11 +- .../trc/clayium/common/recipe/RecipeUtils.kt | 42 +- .../builder/ClayFabricatorRecipeBuilder.kt | 93 +- .../recipe/builder/LaserRecipeBuilder.kt | 32 +- .../builder/MatterTransformerRecipeBuilder.kt | 70 +- .../common/recipe/builder/RecipeBuilder.kt | 164 ++- .../recipe/builder/SimpleRecipeBuilder.kt | 4 +- .../recipe/builder/WeightedRecipeBuilder.kt | 4 +- .../common/recipe/chanced/ChancedOutput.kt | 5 +- .../recipe/chanced/ChancedOutputList.kt | 40 +- .../common/recipe/chanced/IChancedOutput.kt | 2 +- .../recipe/chanced/IChancedOutputLogic.kt | 3 +- .../recipe/handler/MaterialRecipeHandler.kt | 52 +- .../recipe/ingredient/CItemRecipeInput.kt | 16 +- .../recipe/ingredient/CMultiOreRecipeInput.kt | 21 +- .../recipe/ingredient/COreRecipeInput.kt | 31 +- .../common/recipe/ingredient/CRecipeInput.kt | 3 +- .../common/recipe/registry/CRecipes.kt | 53 +- .../registry/CaReactorRecipeRegistry.kt | 39 +- .../registry/ClayWorkTableRecipeRegistry.kt | 18 +- .../recipe/registry/LaserRecipeRegistry.kt | 8 +- .../common/recipe/registry/RecipeRegistry.kt | 25 +- .../clayium/common/reflect/BlockReflect.kt | 9 +- .../unification/ClayiumOreDictUnifierImpl.kt | 21 +- .../common/unification/IOreDictUnifier.kt | 19 +- .../trc/clayium/common/util/BothSideI18n.kt | 11 +- .../trc/clayium/common/util/CNbtUtils.kt | 10 +- .../trc/clayium/common/util/DummyContainer.kt | 5 +- .../trc/clayium/common/util/KeyInput.kt | 15 +- .../trc/clayium/common/util/ToolClasses.kt | 2 +- .../trc/clayium/common/util/TransferUtils.kt | 18 +- .../trc/clayium/common/util/UtilLocale.kt | 29 +- .../common/worldgen/ClayOreGenerator.kt | 46 +- .../clayium/integration/CModIntegration.kt | 2 +- .../gregtech/GTOreDictUnifierAdapter.kt | 5 +- .../integration/groovy/GroovyScriptModule.kt | 5 +- .../groovy/LaserRecipeRegistryGrsAdapter.kt | 13 +- .../groovy/RecipeRegistryGrsAdapter.kt | 11 +- .../trc/clayium/integration/jei/JeiPlugin.kt | 111 +- .../jei/basic/ClayiumRecipeCategory.kt | 38 +- .../jei/basic/ClayiumRecipeWrapper.kt | 20 +- .../jei/basic/MetalSeparatorRecipeWrapper.kt | 15 +- .../basic/SolarClayFabricatorRecipeWrapper.kt | 14 +- .../ClayWorkTableRecipeCategory.kt | 12 +- .../ClayWorkTableRecipeWrapper.kt | 71 +- .../theoneprobe/TheOneProbeModule.kt | 2 +- .../providers/CapabilityInfoProvider.kt | 20 +- .../providers/ClayEnergyInfoProvider.kt | 15 +- .../providers/WorkableInfoProvider.kt | 12 +- .../network/ClayChunkLoaderCallback.kt | 2 +- .../com/github/trc/clayium/Bootstrap.kt | 2 +- .../clayenergy/TestClayEnergyStrings.kt | 49 +- .../metatileentity/TestClayDistributor.kt | 132 +- .../trc/clayium/network/TestPacketDataList.kt | 59 +- .../trc/clayium/util/ItemStackMatcher.kt | 45 +- .../com/github/trc/clayium/util/TestCUtils.kt | 83 +- .../trc/clayium/util/TestTileEntityAccess.kt | 62 +- 339 files changed, 9761 insertions(+), 4928 deletions(-) diff --git a/build.gradle b/build.gradle index d72c2aedf..97018748d 100644 --- a/build.gradle +++ b/build.gradle @@ -252,10 +252,10 @@ if (enableSpotless.toBoolean()) { target 'src/*/kotlin/**/*.kt' toggleOffOn() - ktlint() + ktfmt("0.50").kotlinlangStyle() -// trimTrailingWhitespace() -// endWithNewline() + trimTrailingWhitespace() + endWithNewline() } scala { target 'src/*/scala/**/*.scala' diff --git a/src/main/java/com/github/trc/clayium/api/gui/sync/codec/ClayLaserByteBufAdapter.java b/src/main/java/com/github/trc/clayium/api/gui/sync/codec/ClayLaserByteBufAdapter.java index fabeef2a3..00a698bea 100644 --- a/src/main/java/com/github/trc/clayium/api/gui/sync/codec/ClayLaserByteBufAdapter.java +++ b/src/main/java/com/github/trc/clayium/api/gui/sync/codec/ClayLaserByteBufAdapter.java @@ -14,6 +14,7 @@ * so we have to use Java. */ public class ClayLaserByteBufAdapter implements IByteBufAdapter<@Nullable ClayLaser> { + public static final ClayLaserByteBufAdapter INSTANCE = new ClayLaserByteBufAdapter(); private ClayLaserByteBufAdapter() {} diff --git a/src/main/java/com/github/trc/clayium/common/config/ConfigCore.java b/src/main/java/com/github/trc/clayium/common/config/ConfigCore.java index f62110b81..c76461b49 100644 --- a/src/main/java/com/github/trc/clayium/common/config/ConfigCore.java +++ b/src/main/java/com/github/trc/clayium/common/config/ConfigCore.java @@ -21,6 +21,7 @@ public class ConfigCore { public static FeGen feGen = new FeGen(); public static class SubCategoryRendering { + private SubCategoryRendering() {} @Config.Comment({ @@ -33,6 +34,7 @@ private SubCategoryRendering() {} } public static class SubCategoryWorldGen { + private SubCategoryWorldGen() {} @Config.Comment("Default: 88") @@ -60,6 +62,7 @@ private SubCategoryWorldGen() {} } public static class SubCategoryMisc { + private SubCategoryMisc() {} @Config.Comment({ @@ -80,8 +83,8 @@ private SubCategoryMisc() {} @Config.RangeInt(min = 1, max = 30) @Config.Comment({ - "The maximum tier that the waterwheel can provide energy to.", - "It cannot provide energy to machines of a higher tier.", + "The maximum tier that the waterwheel can provide energy to.", + "It cannot provide energy to machines of a higher tier.", "Default: 3" }) public int waterwheelMaxTier = 3; @@ -120,6 +123,7 @@ private SubCategoryMisc() {} } public static class FeGen { + private FeGen() {} @Config.Comment("Default: false") @@ -145,6 +149,7 @@ private FeGen() {} "Default: FE/t * 1000" }) @Config.Name("FE Storage Size") - public int[] feStorageSize = new int[] { 10_000, 30_000, 90_000, 270_000, 810_000, 2430_000, 7290_000, 21870_000, 65610_000, 196830_000 }; + public int[] feStorageSize = new int[] { 10_000, 30_000, 90_000, 270_000, 810_000, 2430_000, 7290_000, + 21870_000, 65610_000, 196830_000 }; } } diff --git a/src/main/java/com/github/trc/clayium/common/config/ConfigTierBalance.java b/src/main/java/com/github/trc/clayium/common/config/ConfigTierBalance.java index 6754a9f38..280be9195 100644 --- a/src/main/java/com/github/trc/clayium/common/config/ConfigTierBalance.java +++ b/src/main/java/com/github/trc/clayium/common/config/ConfigTierBalance.java @@ -10,39 +10,43 @@ @LangKey("clayium.config.tier") @Config(modid = MOD_ID, name = MOD_ID + "/tier_balance") public class ConfigTierBalance { + private ConfigTierBalance() {} + @RangeInt(min = 1) @Comment({ "Auto IO interval for machines other than buffers.", "These values correspond to the tiers 0 to 13 respectively, from top to bottom." }) - public static int[] machineInterval = new int[] {20, 20, 20, 20, 20, 2, 1, 1, 1, 1, 1, 1, 1, 1}; + public static int[] machineInterval = new int[] { 20, 20, 20, 20, 20, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; @RangeInt(min = 0) @Comment({ "The machine will transfer X items per transfer.", "These values correspond to the tiers 0 to 13 respectively, from top to bottom." }) - public static int[] machineAmount = new int[] {8, 8, 8, 8, 8, 16, 64, 64, 64, 64, 64, 64, 64, 64}; + public static int[] machineAmount = new int[] { 8, 8, 8, 8, 8, 16, 64, 64, 64, 64, 64, 64, 64, 64 }; @RangeInt(min = 1) @Comment({ "Auto IO interval for buffers.", "These values correspond to the tiers 0 to 13 respectively, from top to bottom." }) - public static int[] bufferInterval = new int[] {8, 8, 8, 8, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1}; + public static int[] bufferInterval = new int[] { 8, 8, 8, 8, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1 }; @RangeInt(min = 0) @Comment({ "The buffer will transfer X items per transfer.", "These values correspond to the tiers 0 to 13 respectively, from top to bottom." }) - public static int[] bufferAmount = new int[] {1, 1, 1, 1, 1, 4, 16, 64, 128, 192, 256, 512, 1024, 6400}; + public static int[] bufferAmount = new int[] { 1, 1, 1, 1, 1, 4, 16, 64, 128, 192, 256, 512, 1024, 6400 }; public static SubCategoryMachines crafting = new SubCategoryMachines(); public static class SubCategoryMachines { + private SubCategoryMachines() {} + @Comment({ "craft time multiplier for clay smelters.", "These values correspond to the tiers 4 to 9 respectively, from top to bottom." diff --git a/src/main/java/com/github/trc/clayium/common/util/DebugUtils.java b/src/main/java/com/github/trc/clayium/common/util/DebugUtils.java index 53656cd2b..6126cf64a 100644 --- a/src/main/java/com/github/trc/clayium/common/util/DebugUtils.java +++ b/src/main/java/com/github/trc/clayium/common/util/DebugUtils.java @@ -9,6 +9,7 @@ import net.minecraftforge.oredict.OreDictionary; public class DebugUtils { + @SuppressWarnings("unused") @SubscribeEvent @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/github/trc/clayium/mixins/ClayiumLateMixinLoadingPlugin.java b/src/main/java/com/github/trc/clayium/mixins/ClayiumLateMixinLoadingPlugin.java index a03490bc7..223b26e38 100644 --- a/src/main/java/com/github/trc/clayium/mixins/ClayiumLateMixinLoadingPlugin.java +++ b/src/main/java/com/github/trc/clayium/mixins/ClayiumLateMixinLoadingPlugin.java @@ -6,6 +6,7 @@ import java.util.List; public class ClayiumLateMixinLoadingPlugin implements ILateMixinLoader { + @Override public List getMixinConfigs() { return Collections.singletonList("mixins.clayium.json"); diff --git a/src/main/java/com/github/trc/clayium/mixins/modularui/FixDupeWithPhantomSlotMixin.java b/src/main/java/com/github/trc/clayium/mixins/modularui/FixDupeWithPhantomSlotMixin.java index 6642e16e0..c641c35b6 100644 --- a/src/main/java/com/github/trc/clayium/mixins/modularui/FixDupeWithPhantomSlotMixin.java +++ b/src/main/java/com/github/trc/clayium/mixins/modularui/FixDupeWithPhantomSlotMixin.java @@ -14,15 +14,18 @@ import java.util.List; -//todo: delete this once it's fixed in ModularUI. +// todo: delete this once it's fixed in ModularUI. // open a PR to ModularUI to fix this. @Mixin(ModularContainer.class) public abstract class FixDupeWithPhantomSlotMixin { - @Final @Shadow private List slots; + @Final + @Shadow + private List slots; @Inject(method = "slotClick", at = @At("HEAD"), cancellable = true) - public void clayium$slotClick(int slotId, int mouseButton, ClickType clickTypeIn, EntityPlayer player, CallbackInfoReturnable cir) { + public void clayium$slotClick(int slotId, int mouseButton, ClickType clickTypeIn, EntityPlayer player, + CallbackInfoReturnable cir) { if (!(clickTypeIn == ClickType.SWAP && mouseButton >= 0 && mouseButton < 9)) return; ModularSlot hotbar = this.slots.get(mouseButton); ModularSlot phantom = this.slots.get(slotId); diff --git a/src/main/kotlin/com/github/trc/clayium/api/CValues.kt b/src/main/kotlin/com/github/trc/clayium/api/CValues.kt index 611bda189..bcc6adaab 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/CValues.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/CValues.kt @@ -1,4 +1,5 @@ @file:JvmName("CValues") + /* * some code is copied from `gregtech.api.GTValues`. */ @@ -16,14 +17,13 @@ const val GUI_DEFAULT_HEIGHT: Int = 166 const val HARDNESS_UNBREAKABLE: Float = -1.0f /** - * This is worth exactly one normal Item. - * This Constant can be divided by many commonly used Numbers such as - * 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, ... 64 or 81 - * without losing precision and is for that reason used as Unit of Amount. - * But it is also small enough to be multiplied with larger Numbers. + * This is worth exactly one normal Item. This Constant can be divided by many commonly used Numbers + * such as 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, ... 64 or 81 without + * losing precision and is for that reason used as Unit of Amount. But it is also small enough to be + * multiplied with larger Numbers. * - * This is used to determine the amount of Material contained inside a prefixed Ore. - * For example, Nugget = `M / 9` as it contains out of 1/9 of an Ingot. + * This is used to determine the amount of Material contained inside a prefixed Ore. For example, + * Nugget = `M / 9` as it contains out of 1/9 of an Ingot. * * Copied from `gregtech.api.GTValues` */ @@ -31,4 +31,4 @@ const val M: Long = 3628800L const val W: Int = OreDictionary.WILDCARD_VALUE -const val FALLBACK: Int = -1 \ No newline at end of file +const val FALLBACK: Int = -1 diff --git a/src/main/kotlin/com/github/trc/clayium/api/ClayEnergy.kt b/src/main/kotlin/com/github/trc/clayium/api/ClayEnergy.kt index 4641611ce..0b58240ae 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/ClayEnergy.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/ClayEnergy.kt @@ -16,7 +16,7 @@ fun PacketBuffer.readClayEnergy(): ClayEnergy { @JvmInline value class ClayEnergy(val energy: Long) : Comparable { - //todo: minimum digits? + // todo: minimum digits? fun format(): String { return "${formatWithoutUnit()}CE" } @@ -26,9 +26,10 @@ value class ClayEnergy(val energy: Long) : Comparable { val digits = abs(energy).toString().length val microCe = energy.toDouble() * 10.0 val unitIndex = digits / 3 - val displayValue = String.format("%.3f", microCe / 10.0.pow(unitIndex * 3)) - .replace(matchesExcessZero, "") - .replace(matchesExcessDecimalPoint, "") + val displayValue = + String.format("%.3f", microCe / 10.0.pow(unitIndex * 3)) + .replace(matchesExcessZero, "") + .replace(matchesExcessDecimalPoint, "") return "$displayValue${units[unitIndex]}" } @@ -37,12 +38,19 @@ value class ClayEnergy(val energy: Long) : Comparable { } operator fun plus(other: ClayEnergy) = ClayEnergy(energy + other.energy) + operator fun minus(other: ClayEnergy) = ClayEnergy(energy - other.energy) + operator fun times(value: Int) = ClayEnergy(energy * value) + operator fun times(value: Long) = ClayEnergy(energy * value) + operator fun times(value: Double) = ClayEnergy((energy * value).toLong()) + operator fun div(value: Int) = ClayEnergy(energy / value) + operator fun div(value: Double) = ClayEnergy((energy.toDouble() / value).toLong()) + override operator fun compareTo(other: ClayEnergy) = energy.compareTo(other.energy) companion object { @@ -68,4 +76,4 @@ value class ClayEnergy(val energy: Long) : Comparable { return ClayEnergy(energy * 1000_00) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/ClayiumApi.kt b/src/main/kotlin/com/github/trc/clayium/api/ClayiumApi.kt index 36b7c1138..55d0d82d8 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/ClayiumApi.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/ClayiumApi.kt @@ -14,10 +14,9 @@ object ClayiumApi { val PAN_RECIPE_FACTORIES = mutableListOf() /** - * A Registry of MteRegistries. - * If you want to create new MteRegistry, - * listen to [ClayiumMteRegistryEvent] - * and register your MteRegistry using [ClayiumMteRegistryEvent.mteManager] + * A Registry of MteRegistries. If you want to create new MteRegistry, listen to + * [ClayiumMteRegistryEvent] and register your MteRegistry using + * [ClayiumMteRegistryEvent.mteManager] */ val mteManager: CMteManager = CMteManager() -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/LaserEnergy.kt b/src/main/kotlin/com/github/trc/clayium/api/LaserEnergy.kt index a1d6c739e..68b5185c2 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/LaserEnergy.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/LaserEnergy.kt @@ -10,7 +10,7 @@ value class LaserEnergy(val energy: Double) { fun format(): String { if (energy == 0.0) return "0" - val digits = floor(log(abs(energy),10.0)).toInt() + val digits = floor(log(abs(energy), 10.0)).toInt() val unitIndex = digits / 3 val displayValue = String.format("%.0f", energy / 10.0.pow(unitIndex * 3)) return "$displayValue${units[unitIndex]}" @@ -21,9 +21,13 @@ value class LaserEnergy(val energy: Double) { } operator fun plus(other: LaserEnergy) = LaserEnergy(energy + other.energy) + operator fun minus(other: LaserEnergy) = LaserEnergy(energy - other.energy) + operator fun times(value: Int) = LaserEnergy(energy * value) + operator fun times(value: Long) = LaserEnergy(energy * value) + operator fun compareTo(other: LaserEnergy) = energy.compareTo(other.energy) companion object { @@ -31,4 +35,4 @@ value class LaserEnergy(val energy: Double) { val units = listOf("", "k", "M", "G", "T", "P", "E", "Z", "Y") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/BlockMachine.kt b/src/main/kotlin/com/github/trc/clayium/api/block/BlockMachine.kt index 20a0cf56c..504ac0c5b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/BlockMachine.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/BlockMachine.kt @@ -48,34 +48,49 @@ class BlockMachine : Block(Material.IRON) { defaultState = defaultState.withProperty(IS_PIPE, false) } - override fun canCreatureSpawn(state: IBlockState, world: IBlockAccess, pos: BlockPos, type: EntityLiving.SpawnPlacementType) = false + override fun canCreatureSpawn( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos, + type: EntityLiving.SpawnPlacementType + ) = false override fun createBlockState(): BlockStateContainer { - return BlockStateContainer.Builder(this) - .add(IS_PIPE) - .add(TILE_ENTITY) - .build() + return BlockStateContainer.Builder(this).add(IS_PIPE).add(TILE_ENTITY).build() } - override fun getExtendedState(state: IBlockState, world: IBlockAccess, pos: BlockPos): IBlockState { + override fun getExtendedState( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos + ): IBlockState { val tileEntity = world.getTileEntity(pos) as? MetaTileEntityHolder ?: return state - return (state as IExtendedBlockState) - .withProperty(TILE_ENTITY, tileEntity) + return (state as IExtendedBlockState).withProperty(TILE_ENTITY, tileEntity) } override fun getStateFromMeta(meta: Int) = defaultState.withProperty(IS_PIPE, meta == 1) + override fun getMetaFromState(state: IBlockState) = if (state.getValue(IS_PIPE)) 1 else 0 override fun isFullBlock(state: IBlockState) = !state.getValue(IS_PIPE) + override fun isFullCube(state: IBlockState) = isFullBlock(state) + override fun isOpaqueCube(state: IBlockState) = isFullBlock(state) + override fun causesSuffocation(state: IBlockState) = isFullBlock(state) @Suppress("DEPRECATION") - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos): AxisAlignedBB { + override fun getBoundingBox( + state: IBlockState, + source: IBlockAccess, + pos: BlockPos + ): AxisAlignedBB { if (!state.getValue(IS_PIPE)) return super.getBoundingBox(state, source, pos) - val connections = source.getMetaTileEntity(pos)?.connectionsCache ?: return super.getBoundingBox(state, source, pos) + val connections = + source.getMetaTileEntity(pos)?.connectionsCache + ?: return super.getBoundingBox(state, source, pos) var aabb = CENTER_AABB for (i in 0..5) { if (connections[i]) { @@ -87,8 +102,13 @@ class BlockMachine : Block(Material.IRON) { @Suppress("DEPRECATION") override fun addCollisionBoxToList( - state: IBlockState, worldIn: World, pos: BlockPos, - entityBox: AxisAlignedBB, collidingBoxes: MutableList, entityIn: Entity?, isActualState: Boolean + state: IBlockState, + worldIn: World, + pos: BlockPos, + entityBox: AxisAlignedBB, + collidingBoxes: MutableList, + entityIn: Entity?, + isActualState: Boolean ) { val metaTileEntity = worldIn.getMetaTileEntity(pos) ?: return if (state.getValue(IS_PIPE)) { @@ -100,25 +120,41 @@ class BlockMachine : Block(Material.IRON) { } } } else { - return super.addCollisionBoxToList(state, worldIn, pos, entityBox, collidingBoxes, entityIn, isActualState) + return super.addCollisionBoxToList( + state, + worldIn, + pos, + entityBox, + collidingBoxes, + entityIn, + isActualState + ) } } override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState): TileEntity { return MetaTileEntityHolder() } - override fun onBlockPlacedBy(worldIn: World, pos: BlockPos, state: IBlockState, placer: EntityLivingBase, stack: ItemStack) { + override fun onBlockPlacedBy( + worldIn: World, + pos: BlockPos, + state: IBlockState, + placer: EntityLivingBase, + stack: ItemStack + ) { val holder = worldIn.getTileEntity(pos) as? MetaTileEntityHolder ?: return val mteRegistry = ClayiumApi.mteManager.getRegistry(this.registryName!!.namespace) val sampleMetaTileEntity = mteRegistry.getObjectById(stack.itemDamage) ?: return val newMetaTileEntity = holder.setMetaTileEntityFromSample(sampleMetaTileEntity) - newMetaTileEntity.frontFacing = if (newMetaTileEntity.isFacingValid(EnumFacing.UP)) { - EnumFacing.getDirectionFromEntityLiving(pos, placer) - } else { - placer.horizontalFacing.opposite - } + newMetaTileEntity.frontFacing = + if (newMetaTileEntity.isFacingValid(EnumFacing.UP)) { + EnumFacing.getDirectionFromEntityLiving(pos, placer) + } else { + placer.horizontalFacing.opposite + } if (stack.hasTagCompound()) { newMetaTileEntity.readItemStackNbt(stack.tagCompound!!) } @@ -130,7 +166,8 @@ class BlockMachine : Block(Material.IRON) { override fun breakBlock(worldIn: World, pos: BlockPos, state: IBlockState) { worldIn.getMetaTileEntity(pos)?.let { mte -> - mutableListOf().apply { mte.clearMachineInventory(this) } + mutableListOf() + .apply { mte.clearMachineInventory(this) } .forEach { spawnAsEntity(worldIn, pos, it) } mte.onRemoval() @@ -139,21 +176,45 @@ class BlockMachine : Block(Material.IRON) { super.breakBlock(worldIn, pos, state) } - override fun harvestBlock(worldIn: World, player: EntityPlayer, pos: BlockPos, state: IBlockState, te: TileEntity?, stack: ItemStack) { + override fun harvestBlock( + worldIn: World, + player: EntityPlayer, + pos: BlockPos, + state: IBlockState, + te: TileEntity?, + stack: ItemStack + ) { if ((te as? MetaTileEntityHolder) != null) beingBrokenMetaTileEntity.set(te.metaTileEntity) super.harvestBlock(worldIn, player, pos, state, te, stack) beingBrokenMetaTileEntity.remove() } - override fun getDrops(drops: NonNullList, world: IBlockAccess, pos: BlockPos, state: IBlockState, fortune: Int) { - val metaTileEntity: MetaTileEntity = world.getMetaTileEntity(pos) ?: beingBrokenMetaTileEntity.get() + override fun getDrops( + drops: NonNullList, + world: IBlockAccess, + pos: BlockPos, + state: IBlockState, + fortune: Int + ) { + val metaTileEntity: MetaTileEntity = + world.getMetaTileEntity(pos) ?: beingBrokenMetaTileEntity.get() val stack = metaTileEntity.getStackForm() val data = NBTTagCompound().apply { metaTileEntity.writeItemStackNbt(this) } if (!data.isEmpty) stack.tagCompound = data drops.add(stack) } - override fun onBlockActivated(worldIn: World, pos: BlockPos, state: IBlockState, playerIn: EntityPlayer, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onBlockActivated( + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { if (worldIn.isRemote) return true val tileEntity = worldIn.getTileEntity(pos) if (tileEntity is MetaTileEntityHolder) { @@ -165,12 +226,23 @@ class BlockMachine : Block(Material.IRON) { override fun onNeighborChange(world: IBlockAccess, pos: BlockPos, neighbor: BlockPos) { (world.getTileEntity(pos) as? MetaTileEntityHolder)?.let { - val facing = EnumFacing.getFacingFromVector(neighbor.x - pos.x.toFloat(), neighbor.y - pos.y.toFloat(), neighbor.z - pos.z.toFloat()) + val facing = + EnumFacing.getFacingFromVector( + neighbor.x - pos.x.toFloat(), + neighbor.y - pos.y.toFloat(), + neighbor.z - pos.z.toFloat() + ) it.onNeighborChanged(facing) } } - override fun neighborChanged(state: IBlockState, worldIn: World, pos: BlockPos, blockIn: Block?, fromPos: BlockPos) { + override fun neighborChanged( + state: IBlockState, + worldIn: World, + pos: BlockPos, + blockIn: Block?, + fromPos: BlockPos + ) { (worldIn.getTileEntity(pos) as? MetaTileEntityHolder)?.neighborChanged() } @@ -183,29 +255,55 @@ class BlockMachine : Block(Material.IRON) { } } - override fun getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack { + override fun getPickBlock( + state: IBlockState, + target: RayTraceResult, + world: World, + pos: BlockPos, + player: EntityPlayer + ): ItemStack { return world.getMetaTileEntity(pos)?.getStackForm() ?: ItemStack.EMPTY } - override fun canConnectRedstone(state: IBlockState, world: IBlockAccess, pos: BlockPos, side: EnumFacing?): Boolean { + override fun canConnectRedstone( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos, + side: EnumFacing? + ): Boolean { return world.getMetaTileEntity(pos)?.canConnectRedstone(side?.opposite) ?: false } - override fun shouldCheckWeakPower(state: IBlockState, world: IBlockAccess, pos: BlockPos, side: EnumFacing): Boolean { + override fun shouldCheckWeakPower( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos, + side: EnumFacing + ): Boolean { // The check in [World.getRedstonePower] in the vanilla code base is reversed. - // Setting this to false will actually cause getWeakPower to be called, rather than prevent it. + // Setting this to false will actually cause getWeakPower to be called, rather than prevent + // it. return false } - override fun getWeakPower(state: IBlockState, world: IBlockAccess, pos: BlockPos, side: EnumFacing): Int { + override fun getWeakPower( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos, + side: EnumFacing + ): Int { return world.getMetaTileEntity(pos)?.getWeakPower(side) ?: 0 } - @SideOnly(Side.CLIENT) - override fun getRenderLayer() = BlockRenderLayer.CUTOUT_MIPPED + @SideOnly(Side.CLIENT) override fun getRenderLayer() = BlockRenderLayer.CUTOUT_MIPPED @SideOnly(Side.CLIENT) - override fun addHitEffects(state: IBlockState, world: World, target: RayTraceResult, manager: ParticleManager): Boolean { + override fun addHitEffects( + state: IBlockState, + world: World, + target: RayTraceResult, + manager: ParticleManager + ): Boolean { CustomParticleHandler.handleHitEffects(state, world, target, manager) return true } @@ -216,15 +314,32 @@ class BlockMachine : Block(Material.IRON) { return true } - override fun addRunningEffects(state: IBlockState, world: World, pos: BlockPos, entity: Entity): Boolean { + override fun addRunningEffects( + state: IBlockState, + world: World, + pos: BlockPos, + entity: Entity + ): Boolean { if (world.isRemote) { CustomParticleHandler.handleRunningEffects(world, pos, state, entity) } return true } - override fun addLandingEffects(state: IBlockState, worldObj: WorldServer, blockPosition: BlockPos, iblockstate: IBlockState, entity: EntityLivingBase, numberOfParticles: Int): Boolean { - CustomParticleHandler.handleLandingEffects(worldObj, blockPosition, entity, numberOfParticles) + override fun addLandingEffects( + state: IBlockState, + worldObj: WorldServer, + blockPosition: BlockPos, + iblockstate: IBlockState, + entity: EntityLivingBase, + numberOfParticles: Int + ): Boolean { + CustomParticleHandler.handleLandingEffects( + worldObj, + blockPosition, + entity, + numberOfParticles + ) return true } @@ -234,13 +349,14 @@ class BlockMachine : Block(Material.IRON) { val TILE_ENTITY = UnlistedTileEntityProperty("tile_entity") val CENTER_AABB = AxisAlignedBB(0.3125, 0.3125, 0.3125, 0.6875, 0.6875, 0.6875) - val SIDE_AABBS = listOf( - AxisAlignedBB(0.3125, 0.0, 0.3125, 0.6875, 0.3125, 0.6875), - AxisAlignedBB(0.3125, 0.6875, 0.3125, 0.6875, 1.0, 0.6875), - AxisAlignedBB(0.3125, 0.3125, 0.0, 0.6875, 0.6875, 0.3125), - AxisAlignedBB(0.3125, 0.3125, 0.6875, 0.6875, 0.6875, 1.0), - AxisAlignedBB(0.0, 0.3125, 0.3125, 0.3125, 0.6875, 0.6875), - AxisAlignedBB(0.6875, 0.3125, 0.3125, 1.0, 0.6875, 0.6875), - ) + val SIDE_AABBS = + listOf( + AxisAlignedBB(0.3125, 0.0, 0.3125, 0.6875, 0.3125, 0.6875), + AxisAlignedBB(0.3125, 0.6875, 0.3125, 0.6875, 1.0, 0.6875), + AxisAlignedBB(0.3125, 0.3125, 0.0, 0.6875, 0.6875, 0.3125), + AxisAlignedBB(0.3125, 0.3125, 0.6875, 0.6875, 0.6875, 1.0), + AxisAlignedBB(0.0, 0.3125, 0.3125, 0.3125, 0.6875, 0.6875), + AxisAlignedBB(0.6875, 0.3125, 0.3125, 1.0, 0.6875, 0.6875), + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/ICaReactorHull.kt b/src/main/kotlin/com/github/trc/clayium/api/block/ICaReactorHull.kt index c556a3ea8..a3a619a59 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/ICaReactorHull.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/ICaReactorHull.kt @@ -6,5 +6,6 @@ import net.minecraft.world.IBlockAccess interface ICaReactorHull { fun getCaRank(stack: ItemStack): Int + fun getCaRank(world: IBlockAccess, pos: BlockPos): Int -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/IEnergyStorageUpgradeBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/IEnergyStorageUpgradeBlock.kt index a8d1563c6..efd8e559d 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/IEnergyStorageUpgradeBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/IEnergyStorageUpgradeBlock.kt @@ -5,4 +5,4 @@ import net.minecraft.world.IBlockAccess interface IEnergyStorageUpgradeBlock { fun getExtraStackLimit(world: IBlockAccess, pos: BlockPos): Int -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/IOverclockerBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/IOverclockerBlock.kt index 65f721fcf..e5b7df4ed 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/IOverclockerBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/IOverclockerBlock.kt @@ -5,4 +5,4 @@ import net.minecraft.world.IBlockAccess interface IOverclockerBlock { fun getOverclockFactor(world: IBlockAccess, pos: BlockPos): Double -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/IResonatingBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/IResonatingBlock.kt index d6be0df02..fd8a4f276 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/IResonatingBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/IResonatingBlock.kt @@ -4,4 +4,4 @@ import net.minecraft.block.state.IBlockState interface IResonatingBlock { fun getResonance(state: IBlockState): Double -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/ITieredBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/ITieredBlock.kt index 0d074ce58..32b41192b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/ITieredBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/ITieredBlock.kt @@ -7,5 +7,6 @@ import net.minecraft.world.IBlockAccess interface ITieredBlock { fun getTier(stack: ItemStack): ITier + fun getTier(world: IBlockAccess, pos: BlockPos): ITier -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockDamaged.kt b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockDamaged.kt index 7cddf78e8..c0046560d 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockDamaged.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockDamaged.kt @@ -11,15 +11,20 @@ import net.minecraftforge.fml.relauncher.SideOnly class ItemBlockDamaged( tieredBlock: T, -) : ItemBlockTiered(tieredBlock) where T: Block, T: ITieredBlock { +) : ItemBlockTiered(tieredBlock) where T : Block, T : ITieredBlock { @SideOnly(Side.CLIENT) override fun getItemStackDisplayName(stack: ItemStack): String { return I18n.format("$translationKey.${stack.metadata}") } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) UtilLocale.formatTooltips(tooltip, "$translationKey.${stack.metadata}.tooltip") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockMachine.kt b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockMachine.kt index 96ecaf836..1c4de7830 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockMachine.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockMachine.kt @@ -24,16 +24,31 @@ class ItemBlockMachine( hasSubtypes = true } - override fun onItemUseFirst(player: EntityPlayer, world: World, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, hand: EnumHand): EnumActionResult { + override fun onItemUseFirst( + player: EntityPlayer, + world: World, + pos: BlockPos, + side: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + hand: EnumHand + ): EnumActionResult { if (!world.isRemote && KeyInput.SPRINT.isKeyDown(player as EntityPlayerMP)) { val stack = player.getHeldItem(hand) - val sampleMetaTileEntity = CUtils.getMetaTileEntity(stack) ?: return EnumActionResult.PASS + val sampleMetaTileEntity = + CUtils.getMetaTileEntity(stack) ?: return EnumActionResult.PASS val metaTileEntity = world.getMetaTileEntity(pos) ?: return EnumActionResult.PASS - if (!metaTileEntity.canBeReplacedTo(world, pos, sampleMetaTileEntity)) return EnumActionResult.PASS + if (!metaTileEntity.canBeReplacedTo(world, pos, sampleMetaTileEntity)) + return EnumActionResult.PASS val oldState = world.getBlockState(pos) if (!player.isCreative) stack.shrink(1) - world.playEvent(Constants.WorldEvents.BREAK_BLOCK_EFFECTS, pos, Block.getStateId(oldState)) + world.playEvent( + Constants.WorldEvents.BREAK_BLOCK_EFFECTS, + pos, + Block.getStateId(oldState) + ) metaTileEntity.replaceTo(world, pos, sampleMetaTileEntity) return EnumActionResult.SUCCESS @@ -50,13 +65,17 @@ class ItemBlockMachine( } } - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { return CUtils.getMetaTileEntity(stack)?.addInformation(stack, worldIn, tooltip, flagIn) ?: super.addInformation(stack, worldIn, tooltip, flagIn) } override fun getForgeRarity(stack: ItemStack): IRarity { - return CUtils.getMetaTileEntity(stack)?.forgeRarity - ?: super.getForgeRarity(stack) + return CUtils.getMetaTileEntity(stack)?.forgeRarity ?: super.getForgeRarity(stack) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockTiered.kt b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockTiered.kt index 87b5b3752..1eafeeb01 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockTiered.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/ItemBlockTiered.kt @@ -15,13 +15,15 @@ import net.minecraftforge.fml.relauncher.SideOnly open class ItemBlockTiered( private val tieredBlock: T, hasSubTypes: Boolean = true, -) : ItemBlock(tieredBlock), ITieredItem - where T : Block, T : ITieredBlock { +) : ItemBlock(tieredBlock), ITieredItem where T : Block, T : ITieredBlock { init { hasSubtypes = hasSubTypes } + override fun getMetadata(damage: Int) = if (hasSubtypes) damage else 0 + override fun getForgeRarity(stack: ItemStack) = tieredBlock.getTier(stack).rarity + override fun getTier(stack: ItemStack) = tieredBlock.getTier(stack) @SideOnly(Side.CLIENT) @@ -33,7 +35,10 @@ open class ItemBlockTiered( } // then search for tier-less else if (I18n.hasKey(translationKey)) { - return I18n.format(translationKey, I18n.format(this.getTier(stack).prefixTranslationKey)) + return I18n.format( + translationKey, + I18n.format(this.getTier(stack).prefixTranslationKey) + ) } // fallback to super else { @@ -42,14 +47,23 @@ open class ItemBlockTiered( } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add(ITier.tierNumericTooltip(this.getTier(stack))) - UtilLocale.formatTooltips(tooltip, "$translationKey.${this.getTier(stack).lowerName}.tooltip") + UtilLocale.formatTooltips( + tooltip, + "$translationKey.${this.getTier(stack).lowerName}.tooltip" + ) UtilLocale.formatTooltips(tooltip, "$translationKey.tooltip") super.addInformation(stack, worldIn, tooltip, flagIn) } companion object { - fun noSubTypes(tieredBlock: T) where T : Block, T : ITieredBlock = ItemBlockTiered(tieredBlock, false) + fun noSubTypes(tieredBlock: T) where T : Block, T : ITieredBlock = + ItemBlockTiered(tieredBlock, false) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/VariantBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/VariantBlock.kt index ada78531f..af93a04db 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/VariantBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/VariantBlock.kt @@ -16,9 +16,10 @@ open class VariantBlock( material: Material, ) : Block(material) where E : Enum, E : IStringSerializable { - lateinit var variantProperty : PropertyEnum + lateinit var variantProperty: PropertyEnum protected set - protected lateinit var values : Array + + protected lateinit var values: Array init { require(values.size <= 16) @@ -37,28 +38,36 @@ open class VariantBlock( } override fun getMetaFromState(state: IBlockState) = state.getValue(variantProperty).ordinal - override fun getStateFromMeta(meta: Int) = defaultState.withProperty(variantProperty, values[meta]) + + override fun getStateFromMeta(meta: Int) = + defaultState.withProperty(variantProperty, values[meta]) + override fun damageDropped(state: IBlockState) = getMetaFromState(state) fun getItem(variant: E, amount: Int = 1) = ItemStack(this, amount, variant.ordinal) fun getEnum(state: IBlockState): E = state.getValue(variantProperty) + fun getEnum(stack: ItemStack): E = values[stack.metadata.coerceAtMost(values.size - 1)] companion object { // copied from GTCEu @Suppress("UNCHECKED_CAST") - fun getActualTypeParameter(thisClass: Class, declaringClass: Class): Class { + fun getActualTypeParameter( + thisClass: Class, + declaringClass: Class + ): Class { var type = thisClass.genericSuperclass while (type !is ParameterizedType || type.rawType != declaringClass) { - type = if (type is ParameterizedType) { - (type.rawType as Class<*>).genericSuperclass - } else { - (type as Class<*>).genericSuperclass - } + type = + if (type is ParameterizedType) { + (type.rawType as Class<*>).genericSuperclass + } else { + (type as Class<*>).genericSuperclass + } } return type.actualTypeArguments[0] as Class } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/block/VariantItemBlock.kt b/src/main/kotlin/com/github/trc/clayium/api/block/VariantItemBlock.kt index 245f27c7d..c812e4ae6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/block/VariantItemBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/block/VariantItemBlock.kt @@ -8,9 +8,10 @@ import net.minecraft.util.IStringSerializable import net.minecraft.world.World import net.minecraftforge.common.IRarity -class VariantItemBlock(val variantBlock: B) : ItemBlock(variantBlock) -where E : Enum, E : IStringSerializable, B : VariantBlock -{ +class VariantItemBlock(val variantBlock: B) : ItemBlock(variantBlock) where +E : Enum, +E : IStringSerializable, +B : VariantBlock { init { hasSubtypes = true } @@ -30,10 +31,15 @@ where E : Enum, E : IStringSerializable, B : VariantBlock return super.getForgeRarity(stack) } - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) if (variantBlock is ITieredBlock) { tooltip.add(ITier.tierNumericTooltip(variantBlock.getTier(stack))) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/AbstractWorkable.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/AbstractWorkable.kt index aec7c7a26..266ca7b00 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/AbstractWorkable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/AbstractWorkable.kt @@ -26,12 +26,13 @@ import net.minecraftforge.fml.common.Optional import org.jetbrains.annotations.MustBeInvokedByOverriders import kotlin.math.round -//todo cleanup +// todo cleanup abstract class AbstractWorkable( metaTileEntity: MetaTileEntity, ) : MTETrait(metaTileEntity, ClayiumDataCodecs.RECIPE_LOGIC), IControllable { var requiredProgress = 0L protected set + var currentProgress = 0L protected set @@ -39,16 +40,14 @@ abstract class AbstractWorkable( protected var invalidInputsForRecipes = false protected var outputsFull = false - /** - * always false for 1 tick recipe. so it isn't used for Redstone Interface. - */ - private val isProcessingRecipe: Boolean get() = currentProgress != 0L + /** always false for 1 tick recipe. so it isn't used for Redstone Interface. */ + private val isProcessingRecipe: Boolean + get() = currentProgress != 0L + + /** used for Redstone Interfaces. should be overridden if the machine has 1 tick recipe. */ + override val isWorking: Boolean + get() = isProcessingRecipe - /** - * used for Redstone Interfaces. - * should be overridden if the machine has 1 tick recipe. - */ - override val isWorking: Boolean get() = isProcessingRecipe override var isWorkingEnabled: Boolean = true private var canProgress = false @@ -56,15 +55,12 @@ abstract class AbstractWorkable( protected var itemOutputs: List = emptyList() /** - * try to search for a new recipe. - * you should mutate [invalidInputsForRecipes] or [outputsFull] here. + * try to search for a new recipe. you should mutate [invalidInputsForRecipes] or [outputsFull] + * here. */ protected abstract fun trySearchNewRecipe() - /** - * Show recipes in JEI. - * Not called if Jei isn't loaded. - */ + /** Show recipes in JEI. Not called if Jei isn't loaded. */ protected abstract fun showRecipesInJei() protected open fun getTier(): Int = metaTileEntity.tier.numeric @@ -76,7 +72,8 @@ abstract class AbstractWorkable( } if (!canProgress) return - // if you updateProgress then searchRecipe, it practically increases recipe duration by 1 tick. + // if you updateProgress then searchRecipe, it practically increases recipe duration by 1 + // tick. // this is because when the (recipe output > half of the max stack size), // next recipe output cannot fit in the output slot and thus will not match. if (!isProcessingRecipe && shouldSearchForRecipe()) { @@ -92,17 +89,14 @@ abstract class AbstractWorkable( this.canProgress = canProgress() } - /** - * Called every second. - * You can check some extra conditions like neighbouring blocks here. - */ + /** Called every second. You can check some extra conditions like neighbouring blocks here. */ protected open fun canProgress(): Boolean { return true } /** - * Called every tick when the machine is working. - * If you have to consume Energy or other resources, You should do it here. + * Called every tick when the machine is working. If you have to consume Energy or other + * resources, You should do it here. */ protected open fun updateWorkingProgress() { currentProgress += (getProgressPerTick() * ocHandler.accelerationFactor).toLong() @@ -112,8 +106,8 @@ abstract class AbstractWorkable( } /** - * returns the progress per tick without overclocking. - * called every tick when the machine is working. + * returns the progress per tick without overclocking. called every tick when the machine is + * working. */ protected open fun getProgressPerTick(): Long { return 1 @@ -138,17 +132,17 @@ abstract class AbstractWorkable( private fun canFitNewOutputs(): Boolean { return true - + // currently, NotifiableItemStackHandler.onContentsChanged isn't called // if the item is extracted without pressing a shift key in GUI. // therefore, metaTileEntity.hasNotifiedOutputs is remains false in that case. // so output full check is disabled. -// if (outputsFull && !metaTileEntity.hasNotifiedOutputs) return false -// -// outputsFull = false -// metaTileEntity.hasNotifiedOutputs = false -// return true + // if (outputsFull && !metaTileEntity.hasNotifiedOutputs) return false + // + // outputsFull = false + // metaTileEntity.hasNotifiedOutputs = false + // return true } override fun serializeNBT(): NBTTagCompound { @@ -167,20 +161,30 @@ abstract class AbstractWorkable( } fun getProgressBar(syncManager: GuiSyncManager): ProgressWidget { - syncManager.syncValue("requiredProgress", SyncHandlers.longNumber(::requiredProgress, ::requiredProgress::set)) - syncManager.syncValue("craftingProgress", SyncHandlers.longNumber(::currentProgress, ::currentProgress::set)) - - val widget = ProgressWidget() - .size(22, 17) - .progress(this::getNormalizedProgress) - .texture(ClayGuiTextures.PROGRESS_BAR, 22) + syncManager.syncValue( + "requiredProgress", + SyncHandlers.longNumber(::requiredProgress, ::requiredProgress::set) + ) + syncManager.syncValue( + "craftingProgress", + SyncHandlers.longNumber(::currentProgress, ::currentProgress::set) + ) + + val widget = + ProgressWidget() + .size(22, 17) + .progress(this::getNormalizedProgress) + .texture(ClayGuiTextures.PROGRESS_BAR, 22) if (Mods.JustEnoughItems.isModLoaded) { - widget.addTooltipLine(IKey.lang("jei.tooltip.show.recipes")) - .listenGuiAction(IGuiAction.MousePressed { _ -> - if (!widget.isBelowMouse) return@MousePressed false - showRecipesInJei() - return@MousePressed true - }) + widget + .addTooltipLine(IKey.lang("jei.tooltip.show.recipes")) + .listenGuiAction( + IGuiAction.MousePressed { _ -> + if (!widget.isBelowMouse) return@MousePressed false + showRecipesInJei() + return@MousePressed true + } + ) } return widget @@ -201,31 +205,40 @@ abstract class AbstractWorkable( @Optional.Method(modid = Mods.Names.THE_ONE_PROBE) @MustBeInvokedByOverriders - /** - * must be annotated with `@Optional.Method(modid = Mods.Names.THE_ONE_PROBE)` - */ - open fun addProbeInfo(mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + /** must be annotated with `@Optional.Method(modid = Mods.Names.THE_ONE_PROBE)` */ + open fun addProbeInfo( + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { if (!isWorking) return var progress = currentProgress var maxProgress = requiredProgress - val suffix = if (maxProgress > HALF_HOUR_TICKS) { - progress = round(progress / ONE_MIN_TICKS).toLong() - maxProgress = round(maxProgress / ONE_MIN_TICKS).toLong() - " / $maxProgress min" - } else if (maxProgress > 20) { - progress = round(progress / 20.0).toLong() - maxProgress = round(maxProgress / 20.0).toLong() - " / $maxProgress s" - } else { - " / $maxProgress t" - } + val suffix = + if (maxProgress > HALF_HOUR_TICKS) { + progress = round(progress / ONE_MIN_TICKS).toLong() + maxProgress = round(maxProgress / ONE_MIN_TICKS).toLong() + " / $maxProgress min" + } else if (maxProgress > 20) { + progress = round(progress / 20.0).toLong() + maxProgress = round(maxProgress / 20.0).toLong() + " / $maxProgress s" + } else { + " / $maxProgress t" + } val color = if (isWorkingEnabled) COLOR_ENABLED_ARGB else COLOR_DISABLED_ARGB if (requiredProgress > 0) { probeInfo.progress( - progress, maxProgress, probeInfo.defaultProgressStyle() + progress, + maxProgress, + probeInfo + .defaultProgressStyle() .suffix(suffix) .filledColor(color) .alternateFilledColor(color) diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumCapabilities.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumCapabilities.kt index e247a5197..8fbb485bb 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumCapabilities.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumCapabilities.kt @@ -7,12 +7,11 @@ object ClayiumCapabilities { @CapabilityInject(ISynchronizedInterface::class) lateinit var SYNCHRONIZED_INTERFACE: Capability - @CapabilityInject(IItemFilter::class) - lateinit var ITEM_FILTER: Capability + @CapabilityInject(IItemFilter::class) lateinit var ITEM_FILTER: Capability @CapabilityInject(IClayEnergyProvider::class) lateinit var ENERGIZED_CLAY: Capability @CapabilityInject(IConfigurationTool::class) lateinit var CONFIG_TOOL: Capability -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumDataCodecs.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumDataCodecs.kt index 11317ccf6..a32905ef0 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumDataCodecs.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumDataCodecs.kt @@ -2,6 +2,7 @@ package com.github.trc.clayium.api.capability object ClayiumDataCodecs { private var nextId = 0 + fun assignId(): Int = nextId++ val INITIALIZE_MTE = assignId() @@ -42,4 +43,4 @@ object ClayiumDataCodecs { const val RESONANCE_LISTENER = "resonanceListener" const val OVERCLOCK_HANDLER = "overclockHandler" const val CLAY_MARKER_HANDLER = "clayMarkerHandler" -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumTileCapabilities.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumTileCapabilities.kt index a90cc87ce..ebf04bac6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumTileCapabilities.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/ClayiumTileCapabilities.kt @@ -11,8 +11,7 @@ import net.minecraftforge.common.capabilities.CapabilityInject object ClayiumTileCapabilities { @CapabilityInject(IClayEnergyHolder::class) lateinit var CLAY_ENERGY_HOLDER: Capability - @CapabilityInject(AutoIoHandler::class) - lateinit var AUTO_IO_HANDLER: Capability + @CapabilityInject(AutoIoHandler::class) lateinit var AUTO_IO_HANDLER: Capability @CapabilityInject(IClayLaserSource::class) lateinit var CLAY_LASER_SOURCE: Capability @@ -20,21 +19,16 @@ object ClayiumTileCapabilities { @CapabilityInject(IClayLaserAcceptor::class) lateinit var CLAY_LASER_ACCEPTOR: Capability - @CapabilityInject(IControllable::class) - lateinit var CONTROLLABLE: Capability + @CapabilityInject(IControllable::class) lateinit var CONTROLLABLE: Capability - @CapabilityInject(AbstractWorkable::class) - lateinit var WORKABLE: Capability + @CapabilityInject(AbstractWorkable::class) lateinit var WORKABLE: Capability @CapabilityInject(AbstractRecipeLogic::class) lateinit var RECIPE_LOGIC: Capability - @CapabilityInject(IPanCable::class) - lateinit var PAN_CABLE: Capability - @CapabilityInject(IPanAdapter::class) - lateinit var PAN_ADAPTER: Capability - @CapabilityInject(IPanUser::class) - lateinit var PAN_USER: Capability + @CapabilityInject(IPanCable::class) lateinit var PAN_CABLE: Capability + @CapabilityInject(IPanAdapter::class) lateinit var PAN_ADAPTER: Capability + @CapabilityInject(IPanUser::class) lateinit var PAN_USER: Capability @CapabilityInject(IPipeConnectable::class) lateinit var PIPE_CONNECTABLE: Capability -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyHolder.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyHolder.kt index 42f827687..ac41b85e0 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyHolder.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyHolder.kt @@ -9,11 +9,10 @@ interface IClayEnergyHolder { fun getEnergyStored(): ClayEnergy - /** - * @return true if energy can/was drained, otherwise false - */ + /** @return true if energy can/was drained, otherwise false */ fun drawEnergy(ce: ClayEnergy, simulate: Boolean): Boolean + fun addEnergy(ce: ClayEnergy) fun hasEnoughEnergy(ce: ClayEnergy): Boolean -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyProvider.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyProvider.kt index 93edb8201..abe825ac6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyProvider.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayEnergyProvider.kt @@ -4,4 +4,4 @@ import com.github.trc.clayium.api.ClayEnergy fun interface IClayEnergyProvider { fun getClayEnergy(): ClayEnergy -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserAcceptor.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserAcceptor.kt index 4dbdb7e81..f6342c39f 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserAcceptor.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserAcceptor.kt @@ -6,8 +6,9 @@ import net.minecraft.util.EnumFacing interface IClayLaserAcceptor { /** * Called every tick when the laser is irradiating this block. + * * @param irradiatedSide the side that is irradiated by the laser * @param laser if null, it means the laser irradiation has stopped. */ fun acceptLaser(irradiatedSide: EnumFacing, laser: ClayLaser?) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserSource.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserSource.kt index 8c2a9d336..8d6382a3e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserSource.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IClayLaserSource.kt @@ -4,11 +4,8 @@ import com.github.trc.clayium.api.laser.ClayLaser import net.minecraft.util.EnumFacing interface IClayLaserSource { - /** - * The laser that is irradiating. - * Null if deactivated. - */ + /** The laser that is irradiating. Null if deactivated. */ val irradiatingLaser: ClayLaser? val direction: EnumFacing val length: Int -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IConfigurationTool.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IConfigurationTool.kt index ee1d63c59..a88840a15 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IConfigurationTool.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IConfigurationTool.kt @@ -11,4 +11,4 @@ fun interface IConfigurationTool { ROTATION, FILTER_REMOVER, } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IControllable.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IControllable.kt index 5454023cc..3e3e18ae3 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IControllable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IControllable.kt @@ -3,4 +3,4 @@ package com.github.trc.clayium.api.capability interface IControllable { var isWorkingEnabled: Boolean val isWorking: Boolean -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IItemFilter.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IItemFilter.kt index ed6de95ce..7d140e352 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IItemFilter.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IItemFilter.kt @@ -9,4 +9,4 @@ import net.minecraftforge.common.util.INBTSerializable */ interface IItemFilter : INBTSerializable { fun test(stack: ItemStack): Boolean -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectable.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectable.kt index 53664f248..34b331372 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectable.kt @@ -5,11 +5,11 @@ import net.minecraft.util.EnumFacing /** * Interface for TileEntities that can be connected to piped machines. * - * This interface is used to determine whether a pipe should extend to that direction during rendering. - * not used for actual IO handling. + * This interface is used to determine whether a pipe should extend to that direction during + * rendering. not used for actual IO handling. */ interface IPipeConnectable { val pipeConnectionLogic: IPipeConnectionLogic fun getPipeConnectionMode(side: EnumFacing): PipeConnectionMode -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectionLogic.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectionLogic.kt index 94a9113f8..13e3e0293 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectionLogic.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/IPipeConnectionLogic.kt @@ -4,16 +4,24 @@ interface IPipeConnectionLogic { fun canConnect(thisMode: PipeConnectionMode, neighborMode: PipeConnectionMode): Boolean object Machine : IPipeConnectionLogic { - override fun canConnect(thisMode: PipeConnectionMode, neighborMode: PipeConnectionMode): Boolean { - if (thisMode == PipeConnectionMode.NONE || neighborMode == PipeConnectionMode.NONE) return false - if (thisMode == PipeConnectionMode.BOTH || neighborMode == PipeConnectionMode.BOTH) return true + override fun canConnect( + thisMode: PipeConnectionMode, + neighborMode: PipeConnectionMode + ): Boolean { + if (thisMode == PipeConnectionMode.NONE || neighborMode == PipeConnectionMode.NONE) + return false + if (thisMode == PipeConnectionMode.BOTH || neighborMode == PipeConnectionMode.BOTH) + return true return thisMode != neighborMode } } object ItemPipe : IPipeConnectionLogic { - override fun canConnect(thisMode: PipeConnectionMode, neighborMode: PipeConnectionMode): Boolean { + override fun canConnect( + thisMode: PipeConnectionMode, + neighborMode: PipeConnectionMode + ): Boolean { return neighborMode != PipeConnectionMode.NONE } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/ISynchronizedInterface.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/ISynchronizedInterface.kt index 2826dc755..f4f848b42 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/ISynchronizedInterface.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/ISynchronizedInterface.kt @@ -9,20 +9,15 @@ interface ISynchronizedInterface { val target: MetaTileEntity? /** - * should be synced to the client because it is used for rendering target position. - * null if no target. + * should be synced to the client because it is used for rendering target position. null if no + * target. */ val targetPos: BlockPos? - /** - * should be synced to the client since it is used for rendering target dimension name. - */ + /** should be synced to the client since it is used for rendering target dimension name. */ val targetDimensionId: Int - /** - * the ItemStack form of the target block. - * only used for rendering. not used on the server. - */ + /** the ItemStack form of the target block. only used for rendering. not used on the server. */ val targetItemStack: ItemStack /** @@ -31,4 +26,4 @@ interface ISynchronizedInterface { * @return true if the synchronization was successful */ fun synchronize(pos: BlockPos, dimensionId: Int): Boolean -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/PipeConnectionMode.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/PipeConnectionMode.kt index 0a516d34e..08021edb6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/PipeConnectionMode.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/PipeConnectionMode.kt @@ -5,5 +5,4 @@ enum class PipeConnectionMode { INPUT, OUTPUT, BOTH, - ; -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/SimpleCapabilityManager.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/SimpleCapabilityManager.kt index 48b174740..f930059f8 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/SimpleCapabilityManager.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/SimpleCapabilityManager.kt @@ -12,15 +12,35 @@ import net.minecraftforge.common.capabilities.CapabilityManager object SimpleCapabilityManager { private fun registerCapabilityWithNoDefault(capabilityClass: Class) { - CapabilityManager.INSTANCE.register(capabilityClass, object : Capability.IStorage { - override fun writeNBT(capability: Capability?, instance: T?, side: EnumFacing?): NBTBase? { - throw UnsupportedOperationException("Capability $capabilityClass does not support default instances") - } - override fun readNBT(capability: Capability?, instance: T?, side: EnumFacing?, nbt: NBTBase?) { - throw UnsupportedOperationException("Capability $capabilityClass does not support default instances") + CapabilityManager.INSTANCE.register( + capabilityClass, + object : Capability.IStorage { + override fun writeNBT( + capability: Capability?, + instance: T?, + side: EnumFacing? + ): NBTBase? { + throw UnsupportedOperationException( + "Capability $capabilityClass does not support default instances" + ) + } + + override fun readNBT( + capability: Capability?, + instance: T?, + side: EnumFacing?, + nbt: NBTBase? + ) { + throw UnsupportedOperationException( + "Capability $capabilityClass does not support default instances" + ) + } } + ) { + throw UnsupportedOperationException( + "Capability $capabilityClass does not support default instances" + ) } - ) { throw UnsupportedOperationException("Capability $capabilityClass does not support default instances") } } fun registerCapabilities() { @@ -41,4 +61,4 @@ object SimpleCapabilityManager { registerCapabilityWithNoDefault(IPanUser::class.java) registerCapabilityWithNoDefault(IPanAdapter::class.java) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/AbstractRecipeLogic.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/AbstractRecipeLogic.kt index 741622662..f4ee6ead8 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/AbstractRecipeLogic.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/AbstractRecipeLogic.kt @@ -14,9 +14,7 @@ import net.minecraft.util.EnumFacing import net.minecraftforge.common.capabilities.Capability import kotlin.math.pow -/** - * Recipe-based implementation of [AbstractWorkable] - */ +/** Recipe-based implementation of [AbstractWorkable] */ abstract class AbstractRecipeLogic( metaTileEntity: MetaTileEntity, val recipeProvider: IRecipeProvider, @@ -31,8 +29,8 @@ abstract class AbstractRecipeLogic( protected set /** - * Draw energy from the energy container. - * Overclocking should be applied. + * Draw energy from the energy container. Overclocking should be applied. + * * @param ce Clay Energy to remove * @param simulate whether to simulate energy extraction or not, default is false * @return true if energy can/was drained, otherwise false @@ -53,11 +51,12 @@ abstract class AbstractRecipeLogic( override fun trySearchNewRecipe() { var currentRecipe: Recipe? = null - currentRecipe = if (previousRecipe?.matches(false, inputInventory, getTier()) == true) { - previousRecipe - } else { - recipeProvider.searchRecipe(getTier(), inputInventory.toList()) - } + currentRecipe = + if (previousRecipe?.matches(false, inputInventory, getTier()) == true) { + previousRecipe + } else { + recipeProvider.searchRecipe(getTier(), inputInventory.toList()) + } if (currentRecipe == null) { invalidInputsForRecipes = true @@ -75,7 +74,8 @@ abstract class AbstractRecipeLogic( return false } if (!recipe.matches(true, inputInventory, getTier())) return false - val (cePerTick, duration) = applyOverclock(recipe.cePerTick, recipe.duration, ocHandler.compensatedFactor) + val (cePerTick, duration) = + applyOverclock(recipe.cePerTick, recipe.duration, ocHandler.compensatedFactor) this.itemOutputs = outputs this.recipeCEt = ClayEnergy(cePerTick) this.requiredProgress = duration @@ -86,9 +86,14 @@ abstract class AbstractRecipeLogic( /** * Applies overclock to the recipe. + * * @return { RawCEt, duration } */ - protected open fun applyOverclock(cePt: ClayEnergy, duration: Long, compensatedFactor: Double): LongArray { + protected open fun applyOverclock( + cePt: ClayEnergy, + duration: Long, + compensatedFactor: Double + ): LongArray { val rawCEt = cePt.energy * compensatedFactor.pow(1.5) val durationOCed = (duration / compensatedFactor) return longArrayOf(rawCEt.toLong(), durationOCed.toLong()) @@ -114,4 +119,4 @@ abstract class AbstractRecipeLogic( super.getCapability(capability, facing) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayEnergyHolder.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayEnergyHolder.kt index 49d20e4d2..00d0a3afe 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayEnergyHolder.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayEnergyHolder.kt @@ -26,16 +26,19 @@ class ClayEnergyHolder( metaTileEntity: MetaTileEntity, ) : MTETrait(metaTileEntity, ClayiumDataCodecs.CLAY_ENERGY_HOLDER), IClayEnergyHolder { - private val backingEcSlotHandler = object : ClayiumItemStackHandler(metaTileEntity, 1) { - override fun getSlotLimit(slot: Int): Int { - return ceSlotStackLimit + private val backingEcSlotHandler = + object : ClayiumItemStackHandler(metaTileEntity, 1) { + override fun getSlotLimit(slot: Int): Int { + return ceSlotStackLimit + } + } + override val energizedClayItemHandler = + FilteredItemHandlerModifiable(backingEcSlotHandler) { + it.hasCapability(ClayiumCapabilities.ENERGIZED_CLAY, null) } - } - override val energizedClayItemHandler = FilteredItemHandlerModifiable(backingEcSlotHandler) { - it.hasCapability(ClayiumCapabilities.ENERGIZED_CLAY, null) - } - private val energizedClayImporter = AutoIoHandler.EcImporter(metaTileEntity, energizedClayItemHandler) + private val energizedClayImporter = + AutoIoHandler.EcImporter(metaTileEntity, energizedClayItemHandler) private var clayEnergy: ClayEnergy = ClayEnergy.ZERO private var ceSlotStackLimit = 1 @@ -72,9 +75,7 @@ class ClayEnergyHolder( this.clayEnergy += ce } - /** - * tries to consume energized clay from the slot if the current energy is not enough - */ + /** tries to consume energized clay from the slot if the current energy is not enough */ override fun hasEnoughEnergy(ce: ClayEnergy): Boolean { if (this.clayEnergy < ce) tryConsumeEnergizedClay() return this.clayEnergy >= ce @@ -82,17 +83,16 @@ class ClayEnergyHolder( fun createSlotWidget(): ItemSlot { return ItemSlot() - .slot(SyncHandlers.itemSlot(energizedClayItemHandler, 0) - .accessibility(false, false)) + .slot(SyncHandlers.itemSlot(energizedClayItemHandler, 0).accessibility(false, false)) .setEnabledIf { GuiScreen.isShiftKeyDown() } .background(IDrawable.EMPTY) } fun createCeTextWidget(syncManager: GuiSyncManager): TextWidget { - syncManager.syncValue("${this.name}.text", SyncHandlers.longNumber( - { clayEnergy.energy }, - { clayEnergy = ClayEnergy(it) } - )) + syncManager.syncValue( + "${this.name}.text", + SyncHandlers.longNumber({ clayEnergy.energy }, { clayEnergy = ClayEnergy(it) }) + ) return IKey.dynamic { this.clayEnergy.format() }.asWidgetResizing() } @@ -106,9 +106,7 @@ class ClayEnergyHolder( } override fun serializeNBT(): NBTTagCompound { - return super.serializeNBT().apply { - setLong("clayEnergy", clayEnergy.energy) - } + return super.serializeNBT().apply { setLong("clayEnergy", clayEnergy.energy) } } override fun deserializeNBT(data: NBTTagCompound) { @@ -123,4 +121,4 @@ class ClayEnergyHolder( super.getCapability(capability, facing) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserIrradiator.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserIrradiator.kt index c1e902596..c6556aa00 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserIrradiator.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserIrradiator.kt @@ -15,16 +15,16 @@ class ClayLaserIrradiator( val tileEntity: IWorldObject, ) { - val world get() = tileEntity.worldObj - val pos get() = tileEntity.position + val world + get() = tileEntity.worldObj + + val pos + get() = tileEntity.position private var previousTarget: WeakReference? = null private var lastDirection = EnumFacing.NORTH - /** - * to memorize how much energy irradiated to block - * won't be used if target was TileEntity - */ + /** to memorize how much energy irradiated to block won't be used if target was TileEntity */ private var previousTargetPos: BlockPos? = null private var totalEnergyIrradiated: Double = 0.0 private var transformationCt: Byte = 0 @@ -32,9 +32,7 @@ class ClayLaserIrradiator( private fun TileEntity.getLaserAcceptor(targetSide: EnumFacing) = getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, targetSide) - /** - * returns laser length. - */ + /** returns laser length. */ fun irradiateLaser(direction: EnumFacing, laser: ClayLaser): Int { val world = this.world ?: return 0 val pos = this.pos ?: return 0 @@ -62,8 +60,7 @@ class ClayLaserIrradiator( fun stopIrradiation() { val targetSide = lastDirection.opposite - this.previousTarget?.get()?.getLaserAcceptor(targetSide) - ?.acceptLaser(targetSide, null) + this.previousTarget?.get()?.getLaserAcceptor(targetSide)?.acceptLaser(targetSide, null) } private fun getLaserLength(direction: EnumFacing): Int { @@ -101,4 +98,4 @@ class ClayLaserIrradiator( world.destroyBlock(targetPos, false) world.setBlockState(targetPos, resultState) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserSourceMteTrait.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserSourceMteTrait.kt index 82fac63b8..3ffb6f634 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserSourceMteTrait.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayLaserSourceMteTrait.kt @@ -26,26 +26,24 @@ class ClayLaserSourceMteTrait( val syncFlag = !metaTileEntity.isRemote && (field != value) field = value if (syncFlag) { - writeCustomData(UPDATE_LASER_LENGTH) { - writeInt(value) - } + writeCustomData(UPDATE_LASER_LENGTH) { writeInt(value) } } } + var isIrradiating = false set(value) { val syncFlag = !metaTileEntity.isRemote && (field != value) field = value if (syncFlag) { - writeCustomData(UPDATE_LASER_ACTIVATION) { - writeBoolean(value) - } + writeCustomData(UPDATE_LASER_ACTIVATION) { writeBoolean(value) } } } override val irradiatingLaser: ClayLaser? get() = if (isIrradiating) sampleLaser else null - override val direction get() = metaTileEntity.frontFacing + override val direction + get() = metaTileEntity.frontFacing override fun update() { if (metaTileEntity.isRemote) return @@ -80,6 +78,7 @@ class ClayLaserSourceMteTrait( } override fun getCapability(capability: Capability, facing: EnumFacing?): T? { - return if (capability === ClayiumTileCapabilities.CLAY_LASER_SOURCE) capability.cast(this) else null + return if (capability === ClayiumTileCapabilities.CLAY_LASER_SOURCE) capability.cast(this) + else null } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayiumItemStackHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayiumItemStackHandler.kt index 6a8991450..26bee7be8 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayiumItemStackHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ClayiumItemStackHandler.kt @@ -11,4 +11,4 @@ open class ClayiumItemStackHandler( super.onContentsChanged(slot) notifiable.markDirty() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EmptyItemStackHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EmptyItemStackHandler.kt index 0e3afc646..72a95829b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EmptyItemStackHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EmptyItemStackHandler.kt @@ -4,6 +4,8 @@ import net.minecraftforge.items.IItemHandlerModifiable import net.minecraftforge.items.wrapper.EmptyHandler /** - * forge's [EmptyHandler.INSTANCE] is declared as IItemHandler, so we need an IItemHandlerModifiable version + * forge's [EmptyHandler.INSTANCE] is declared as IItemHandler, so we need an IItemHandlerModifiable + * version */ -object EmptyItemStackHandler : IItemHandlerModifiable by (EmptyHandler.INSTANCE as IItemHandlerModifiable) +object EmptyItemStackHandler : + IItemHandlerModifiable by (EmptyHandler.INSTANCE as IItemHandlerModifiable) diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageExportOnly.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageExportOnly.kt index 56c180fbf..eb04c83df 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageExportOnly.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageExportOnly.kt @@ -12,4 +12,4 @@ class EnergyStorageExportOnly( override fun receiveEnergy(maxReceive: Int, simulate: Boolean): Int { return 0 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageSerializable.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageSerializable.kt index 8d63bb94b..40b1603ab 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageSerializable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/EnergyStorageSerializable.kt @@ -6,14 +6,19 @@ import net.minecraftforge.energy.EnergyStorage import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly -class EnergyStorageSerializable @JvmOverloads constructor( +class EnergyStorageSerializable +@JvmOverloads +constructor( capacity: Int, maxReceive: Int, maxExtract: Int, energy: Int = 0, ) : EnergyStorage(capacity, maxReceive, maxExtract, energy), INBTSerializable { @JvmOverloads - constructor(capacity: Int, maxTransfer: Int = capacity) : this(capacity, maxTransfer, maxTransfer) + constructor( + capacity: Int, + maxTransfer: Int = capacity + ) : this(capacity, maxTransfer, maxTransfer) override fun serializeNBT(): NBTTagCompound { val data = NBTTagCompound() @@ -25,11 +30,9 @@ class EnergyStorageSerializable @JvmOverloads constructor( this.energy = nbt.getInteger("energy") } - /** - * should only be used for syncing (e.g. GUI) - */ + /** should only be used for syncing (e.g. GUI) */ @SideOnly(Side.CLIENT) fun setEnergy(energy: Int) { this.energy = energy } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandler.kt index f2faeb958..ff5476fea 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandler.kt @@ -24,4 +24,4 @@ open class FilteredItemHandler( } return ItemStack.EMPTY } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandlerModifiable.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandlerModifiable.kt index c1b6aac30..11de8290b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandlerModifiable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/FilteredItemHandlerModifiable.kt @@ -5,16 +5,19 @@ import net.minecraft.item.ItemStack import net.minecraftforge.items.IItemHandlerModifiable /** - * [IItemHandlerModifiable] version of [FilteredItemHandler]. - * Note: [setStackInSlot] will not be filtered. + * [IItemHandlerModifiable] version of [FilteredItemHandler]. Note: [setStackInSlot] will not be + * filtered. */ class FilteredItemHandlerModifiable( private val modifiable: IItemHandlerModifiable, filter: (ItemStack) -> Boolean ) : FilteredItemHandler(modifiable, filter), IItemHandlerModifiable { - constructor(delegate: IItemHandlerModifiable, filter: IItemFilter) : this(delegate, filter::test) + constructor( + delegate: IItemHandlerModifiable, + filter: IItemFilter + ) : this(delegate, filter::test) override fun setStackInSlot(slot: Int, stack: ItemStack) { modifiable.setStackInSlot(slot, stack) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/InfiniteItemStackHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/InfiniteItemStackHandler.kt index 9843b113d..13ae9a81c 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/InfiniteItemStackHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/InfiniteItemStackHandler.kt @@ -17,13 +17,11 @@ class InfiniteItemStackHandler( } override fun extractItem(slot: Int, amount: Int, simulate: Boolean): ItemStack { - return stack.copy().apply { - count = amount.coerceAtMost(getSlotLimit(0)) - } + return stack.copy().apply { count = amount.coerceAtMost(getSlotLimit(0)) } } override fun getSlotLimit(slot: Int) = stack.maxStackSize // for gui override fun setStackInSlot(slot: Int, stack: ItemStack) {} -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ItemHandlerProxy.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ItemHandlerProxy.kt index 4236807a1..3e3efe81b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ItemHandlerProxy.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ItemHandlerProxy.kt @@ -46,4 +46,4 @@ class ItemHandlerProxy( outputInventory.getSlotLimit(slot - inputInventory.slots) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/LaserEnergyHolder.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/LaserEnergyHolder.kt index 80867edf4..74dee7e61 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/LaserEnergyHolder.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/LaserEnergyHolder.kt @@ -22,6 +22,7 @@ class LaserEnergyHolder( var storedPower = LaserEnergy.ZERO private set + private var receivedLasers: Array = arrayOfNulls(6) override fun update() { @@ -57,18 +58,16 @@ class LaserEnergyHolder( } fun createLpTextWidget(syncManager: GuiSyncManager): TextWidget { - syncManager.syncValue("laser_power", SyncHandlers.doubleNumber( - { storedPower.energy }, - { storedPower = LaserEnergy(it) } - )) + syncManager.syncValue( + "laser_power", + SyncHandlers.doubleNumber({ storedPower.energy }, { storedPower = LaserEnergy(it) }) + ) return IKey.dynamic { "Laser : ${this.storedPower.format()}" }.asWidgetResizing() } override fun serializeNBT(): NBTTagCompound { - return super.serializeNBT().apply { - setDouble("storedPower", storedPower.energy) - } + return super.serializeNBT().apply { setDouble("storedPower", storedPower.energy) } } override fun deserializeNBT(data: NBTTagCompound) { @@ -79,5 +78,4 @@ class LaserEnergyHolder( override fun acceptLaser(irradiatedSide: EnumFacing, laser: ClayLaser?) { this.receivedLasers[irradiatedSide.index] = laser } - -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ListeningItemStackHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ListeningItemStackHandler.kt index 748aef467..d60b336f6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ListeningItemStackHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ListeningItemStackHandler.kt @@ -2,8 +2,9 @@ package com.github.trc.clayium.api.capability.impl import net.minecraftforge.items.ItemStackHandler -class ListeningItemStackHandler(size: Int, private val listener: (Int) -> Unit) : ItemStackHandler(size) { +class ListeningItemStackHandler(size: Int, private val listener: (Int) -> Unit) : + ItemStackHandler(size) { override fun onContentsChanged(slot: Int) { listener(slot) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/MultiblockRecipeLogic.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/MultiblockRecipeLogic.kt index c53869b63..f3e062dbe 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/MultiblockRecipeLogic.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/MultiblockRecipeLogic.kt @@ -16,4 +16,4 @@ open class MultiblockRecipeLogic( override fun canProgress(): Boolean { return multiblockLogic.structureFormed } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/NotifiableItemStackHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/NotifiableItemStackHandler.kt index 370419024..24972d853 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/NotifiableItemStackHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/NotifiableItemStackHandler.kt @@ -9,7 +9,12 @@ open class NotifiableItemStackHandler( private val isExport: Boolean, ) : ClayiumItemStackHandler(metaTileEntity, size) { - constructor(metaTileEntity: MetaTileEntity, size: Int, entityToNotify: MetaTileEntity, isExport: Boolean) : this(metaTileEntity, size, mutableListOf(entityToNotify), isExport) + constructor( + metaTileEntity: MetaTileEntity, + size: Int, + entityToNotify: MetaTileEntity, + isExport: Boolean + ) : this(metaTileEntity, size, mutableListOf(entityToNotify), isExport) override fun onContentsChanged(slot: Int) { super.onContentsChanged(slot) @@ -27,4 +32,4 @@ open class NotifiableItemStackHandler( fun removeNotifiableEntity(entity: MetaTileEntity) { entitiesToNotify.remove(entity) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RangedItemHandlerProxy.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RangedItemHandlerProxy.kt index 98eb97c97..897bcf489 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RangedItemHandlerProxy.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RangedItemHandlerProxy.kt @@ -7,5 +7,8 @@ class RangedItemHandlerProxy( private val itemHandler: IItemHandlerModifiable, private val range: IntRange, ) : IItemHandlerModifiable by RangedWrapper(itemHandler, range.first, range.last + 1) { - constructor(itemHandler: IItemHandlerModifiable, availableSlot: Int) : this(itemHandler, availableSlot..availableSlot) -} \ No newline at end of file + constructor( + itemHandler: IItemHandlerModifiable, + availableSlot: Int + ) : this(itemHandler, availableSlot..availableSlot) +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicCaInjector.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicCaInjector.kt index 46974b042..f223dfc52 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicCaInjector.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicCaInjector.kt @@ -11,14 +11,15 @@ class RecipeLogicCaInjector( private val resonanceManager: ResonanceManager, ) : RecipeLogicEnergy(metaTileEntity, recipeRegistry, energyHolder) { - val accelerationExponent = when (metaTileEntity.tier.numeric) { - 9 -> 0.2 - 10 -> 0.9 - 11 -> 3.0 - else -> 1.0 - } + val accelerationExponent = + when (metaTileEntity.tier.numeric) { + 9 -> 0.2 + 10 -> 0.9 + 11 -> 3.0 + else -> 1.0 + } override fun getProgressPerTick(): Long { return resonanceManager.resonance.pow(accelerationExponent).toLong() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicClayFurnace.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicClayFurnace.kt index 88e4ebb80..897b21bae 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicClayFurnace.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicClayFurnace.kt @@ -20,27 +20,45 @@ class RecipeLogicClayFurnace( ) : RecipeLogicEnergy(metaTileEntity, registry, clayEnergyHolder) { override fun trySearchNewRecipe() { - val smeltingResult = FurnaceRecipes.instance().getSmeltingResult(inputInventory.getStackInSlot(0)).copy() + val smeltingResult = + FurnaceRecipes.instance().getSmeltingResult(inputInventory.getStackInSlot(0)).copy() if (smeltingResult.isEmpty) return super.trySearchNewRecipe() prepareVanillaFurnaceRecipe(smeltingResult) } - override fun applyOverclock(cePt: ClayEnergy, duration: Long, compensatedFactor: Double): LongArray { + override fun applyOverclock( + cePt: ClayEnergy, + duration: Long, + compensatedFactor: Double + ): LongArray { val (cet, duration) = super.applyOverclock(cePt, duration, compensatedFactor) val machineTierNum = metaTileEntity.tier.numeric val multipliedRecipeCEt = - ClayEnergy((cet.toDouble() * ConfigTierBalance.crafting.smelterConsumingEnergyMultiplier[machineTierNum - 4]).toLong()) - val multipliedRecipeTime = (duration * ConfigTierBalance.crafting.smelterCraftTimeMultiplier[machineTierNum - 4]).toLong() + ClayEnergy( + (cet.toDouble() * + ConfigTierBalance.crafting.smelterConsumingEnergyMultiplier[ + machineTierNum - 4]) + .toLong() + ) + val multipliedRecipeTime = + (duration * ConfigTierBalance.crafting.smelterCraftTimeMultiplier[machineTierNum - 4]) + .toLong() return longArrayOf(multipliedRecipeCEt.energy, multipliedRecipeTime) } override fun prepareRecipe(recipe: Recipe): Boolean { - val multipliedRecipeCEt = ClayEnergy( - (recipe.cePerTick.energy.toDouble() * ConfigTierBalance.crafting.smelterConsumingEnergyMultiplier[metaTileEntity.tier.numeric - 4]).toLong() - ) - val multipliedRecipeTime = ( - recipe.duration * ConfigTierBalance.crafting.smelterCraftTimeMultiplier[metaTileEntity.tier.numeric - 4] - ).toLong() + val multipliedRecipeCEt = + ClayEnergy( + (recipe.cePerTick.energy.toDouble() * + ConfigTierBalance.crafting.smelterConsumingEnergyMultiplier[ + metaTileEntity.tier.numeric - 4]) + .toLong() + ) + val multipliedRecipeTime = + (recipe.duration * + ConfigTierBalance.crafting.smelterCraftTimeMultiplier[ + metaTileEntity.tier.numeric - 4]) + .toLong() if (!this.drawEnergy(multipliedRecipeCEt, simulate = true)) return false val outputs = recipe.copyOutputs() if (!TransferUtils.insertToHandler(metaTileEntity.exportItems, outputs, true)) { @@ -58,13 +76,16 @@ class RecipeLogicClayFurnace( private fun prepareVanillaFurnaceRecipe(smeltingResult: ItemStack) { require(!smeltingResult.isEmpty) - if (!TransferUtils.insertToHandler(metaTileEntity.exportItems, listOf(smeltingResult), true)) { + if ( + !TransferUtils.insertToHandler(metaTileEntity.exportItems, listOf(smeltingResult), true) + ) { this.outputsFull = true return } this.inputInventory.extractItem(0, 1, false) - val (cet, duration) = applyOverclock(BASE_CE_CONSUMPTION, FURNACE_RECIPE_TIME, ocHandler.compensatedFactor) + val (cet, duration) = + applyOverclock(BASE_CE_CONSUMPTION, FURNACE_RECIPE_TIME, ocHandler.compensatedFactor) this.itemOutputs = listOf(smeltingResult) this.recipeCEt = ClayEnergy(cet) this.requiredProgress = duration @@ -72,7 +93,7 @@ class RecipeLogicClayFurnace( } private companion object { - private const val FURNACE_RECIPE_TIME = 200L //ticks + private const val FURNACE_RECIPE_TIME = 200L // ticks private val BASE_CE_CONSUMPTION = ClayEnergy(4) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicEnergy.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicEnergy.kt index e3e3bee73..8a73a0abb 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicEnergy.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/RecipeLogicEnergy.kt @@ -20,17 +20,27 @@ open class RecipeLogicEnergy( private var energyConsumingMultiplier = 1.0 override fun drawEnergy(ce: ClayEnergy, simulate: Boolean): Boolean { - return energyHolder.drawEnergy(ClayEnergy((ce.energy * ocHandler.accelerationFactor).toLong()), simulate) + return energyHolder.drawEnergy( + ClayEnergy((ce.energy * ocHandler.accelerationFactor).toLong()), + simulate + ) } - override fun applyOverclock(cePt: ClayEnergy, duration: Long, compensatedFactor: Double): LongArray { + override fun applyOverclock( + cePt: ClayEnergy, + duration: Long, + compensatedFactor: Double + ): LongArray { val (cet, duration) = super.applyOverclock(cePt, duration, compensatedFactor) - return longArrayOf((cet * energyConsumingMultiplier).toLong(), (duration * durationMultiplier).toLong()) + return longArrayOf( + (cet * energyConsumingMultiplier).toLong(), + (duration * durationMultiplier).toLong() + ) } /** - * Mainly used by Condensers, Grinders, Centrifuges. - * The speed of these machines depends on the tier. + * Mainly used by Condensers, Grinders, Centrifuges. The speed of these machines depends on the + * tier. */ fun setDurationMultiplier(provider: (tier: Int) -> Double): RecipeLogicEnergy { durationMultiplier = provider(this.getTier()) @@ -38,19 +48,28 @@ open class RecipeLogicEnergy( } /** - * Mainly used by Condensers, Grinders, Centrifuges. - * The speed of these machines depends on the tier. + * Mainly used by Condensers, Grinders, Centrifuges. The speed of these machines depends on the + * tier. */ fun setEnergyConsumingMultiplier(provider: (tier: Int) -> Double): RecipeLogicEnergy { energyConsumingMultiplier = provider(this.getTier()) return this } - override fun addProbeInfo(mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { super.addProbeInfo(mode, probeInfo, player, world, state, hitData) if (this.isWorking) { val cet = recipeCEt * ocHandler.accelerationFactor - probeInfo.text("Using ${TextFormatting.RED}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t") + probeInfo.text( + "Using ${TextFormatting.RED}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t" + ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ResonanceManager.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ResonanceManager.kt index 762f70a1d..8d67023fb 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ResonanceManager.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/ResonanceManager.kt @@ -9,10 +9,8 @@ import com.github.trc.clayium.api.metatileentity.MTETrait import com.github.trc.clayium.api.metatileentity.MetaTileEntity import net.minecraft.network.PacketBuffer -class ResonanceManager( - metaTileEntity: MetaTileEntity, - private val range: Int -) : MTETrait(metaTileEntity, ClayiumDataCodecs.RESONANCE_LISTENER) { +class ResonanceManager(metaTileEntity: MetaTileEntity, private val range: Int) : + MTETrait(metaTileEntity, ClayiumDataCodecs.RESONANCE_LISTENER) { var resonance = 1.0 private set(value) { @@ -20,9 +18,7 @@ class ResonanceManager( val syncFlag = (!metaTileEntity.isRemote) && (field != v) field = v if (syncFlag) { - writeCustomData(UPDATE_RESONANCE) { - writeDouble(v) - } + writeCustomData(UPDATE_RESONANCE) { writeDouble(v) } } } @@ -59,4 +55,4 @@ class ResonanceManager( fun sync(syncManager: GuiSyncManager) { syncManager.syncValue("resonance", SyncHandlers.doubleNumber(::resonance, ::resonance::set)) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/SimpleItemFilter.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/SimpleItemFilter.kt index 5225c0019..1c706da4c 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/SimpleItemFilter.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/SimpleItemFilter.kt @@ -28,4 +28,4 @@ class SimpleItemFilter( override fun toString(): String { return "SimpleItemFilter(stacks=$stacks, whitelist=$whitelist)" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/VoidingItemHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/VoidingItemHandler.kt index b71d4672b..84769446e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/capability/impl/VoidingItemHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/capability/impl/VoidingItemHandler.kt @@ -5,9 +5,14 @@ import net.minecraftforge.items.IItemHandlerModifiable open class VoidingItemHandler : IItemHandlerModifiable { override fun getSlots() = 1 + override fun getStackInSlot(slot: Int) = ItemStack.EMPTY + override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean) = ItemStack.EMPTY + override fun extractItem(slot: Int, amount: Int, simulate: Boolean) = ItemStack.EMPTY + override fun getSlotLimit(slot: Int) = 64 + override fun setStackInSlot(slot: Int, stack: ItemStack) {} -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/events/ClayiumMteRegistryEvent.kt b/src/main/kotlin/com/github/trc/clayium/api/events/ClayiumMteRegistryEvent.kt index 32f1dd056..7a3591ff4 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/events/ClayiumMteRegistryEvent.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/events/ClayiumMteRegistryEvent.kt @@ -5,4 +5,4 @@ import net.minecraftforge.fml.common.eventhandler.Event class ClayiumMteRegistryEvent( val mteManager: CMteManager, -) : Event() \ No newline at end of file +) : Event() diff --git a/src/main/kotlin/com/github/trc/clayium/api/extensions/ccl/CclExtensions.kt b/src/main/kotlin/com/github/trc/clayium/api/extensions/ccl/CclExtensions.kt index 593c5e2d0..c9233d596 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/extensions/ccl/CclExtensions.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/extensions/ccl/CclExtensions.kt @@ -3,16 +3,22 @@ package com.github.trc.clayium.api.extensions.ccl import codechicken.lib.colour.ColourARGB import codechicken.lib.colour.ColourRGBA -/** - * @return `[a, r, g, b]` - */ +/** @return `[a, r, g, b]` */ fun ColourARGB.packIntArray(): IntArray { - return intArrayOf(a.toInt() and 0xFF, r.toInt() and 0xFF, g.toInt() and 0xFF, b.toInt() and 0xFF) + return intArrayOf( + a.toInt() and 0xFF, + r.toInt() and 0xFF, + g.toInt() and 0xFF, + b.toInt() and 0xFF + ) } -/** - * @return `[r, g, b, a]` - */ +/** @return `[r, g, b, a]` */ fun ColourRGBA.packIntArray(): IntArray { - return intArrayOf(r.toInt() and 0xFF, g.toInt() and 0xFF, b.toInt() and 0xFF, a.toInt() and 0xFF) + return intArrayOf( + r.toInt() and 0xFF, + g.toInt() and 0xFF, + b.toInt() and 0xFF, + a.toInt() and 0xFF + ) } diff --git a/src/main/kotlin/com/github/trc/clayium/api/gui/MetaTileEntityGuiFactory.kt b/src/main/kotlin/com/github/trc/clayium/api/gui/MetaTileEntityGuiFactory.kt index e2c470018..0adf5b558 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/gui/MetaTileEntityGuiFactory.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/gui/MetaTileEntityGuiFactory.kt @@ -12,10 +12,16 @@ import net.minecraft.network.PacketBuffer import net.minecraft.util.math.BlockPos import net.minecraft.world.World -object MetaTileEntityGuiFactory : AbstractUIFactory("$MOD_ID:metatileentity") { +object MetaTileEntityGuiFactory : + AbstractUIFactory("$MOD_ID:metatileentity") { - fun open(player: EntityPlayer, metaTileEntity: T) where T: MetaTileEntity { - val data = MetaTileEntityGuiData.WorldAndPos(player, metaTileEntity.world ?: return, metaTileEntity.pos ?: return) + fun open(player: EntityPlayer, metaTileEntity: T) where T : MetaTileEntity { + val data = + MetaTileEntityGuiData.WorldAndPos( + player, + metaTileEntity.world ?: return, + metaTileEntity.pos ?: return + ) GuiManager.open(this, data, player as EntityPlayerMP) } @@ -53,4 +59,4 @@ object MetaTileEntityGuiFactory : AbstractUIFactory("$MOD return MetaTileEntityGuiData.Id(player, mteId) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/gui/data/MetaTileEntityGuiData.kt b/src/main/kotlin/com/github/trc/clayium/api/gui/data/MetaTileEntityGuiData.kt index d16b19efc..c347bd49a 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/gui/data/MetaTileEntityGuiData.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/gui/data/MetaTileEntityGuiData.kt @@ -21,7 +21,9 @@ sealed class MetaTileEntityGuiData( ) : MetaTileEntityGuiData(player) { override val metaTileEntity: MetaTileEntity by lazy { this.world.getMetaTileEntity(pos) - ?: throw IllegalStateException("Could not find a MetaTileEntity at $pos in ${this.world.provider?.dimensionType}") + ?: throw IllegalStateException( + "Could not find a MetaTileEntity at $pos in ${this.world.provider?.dimensionType}" + ) } } @@ -30,9 +32,13 @@ sealed class MetaTileEntityGuiData( private val metaTileEntityId: ResourceLocation, ) : MetaTileEntityGuiData(player) { override val metaTileEntity: MetaTileEntity by lazy { - ClayiumApi.mteManager.getRegistry(metaTileEntityId.namespace) - .getObject(metaTileEntityId)?.createMetaTileEntity() - ?: throw IllegalStateException("Could not find a MetaTileEntity Id $metaTileEntityId") + ClayiumApi.mteManager + .getRegistry(metaTileEntityId.namespace) + .getObject(metaTileEntityId) + ?.createMetaTileEntity() + ?: throw IllegalStateException( + "Could not find a MetaTileEntity Id $metaTileEntityId" + ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/gui/sync/ClayLaserSyncValue.kt b/src/main/kotlin/com/github/trc/clayium/api/gui/sync/ClayLaserSyncValue.kt index 08df2ab75..2de3134d7 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/gui/sync/ClayLaserSyncValue.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/gui/sync/ClayLaserSyncValue.kt @@ -9,4 +9,4 @@ import java.util.function.Supplier class ClayLaserSyncValue( getter: Supplier, setter: Consumer, -) : GenericSyncValue(getter, setter, ClayLaserByteBufAdapter.INSTANCE) \ No newline at end of file +) : GenericSyncValue(getter, setter, ClayLaserByteBufAdapter.INSTANCE) diff --git a/src/main/kotlin/com/github/trc/clayium/api/item/ITieredItem.kt b/src/main/kotlin/com/github/trc/clayium/api/item/ITieredItem.kt index 74f7af302..6d381d826 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/item/ITieredItem.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/item/ITieredItem.kt @@ -5,4 +5,4 @@ import net.minecraft.item.ItemStack interface ITieredItem { fun getTier(stack: ItemStack): ITier -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/laser/ClayLaser.kt b/src/main/kotlin/com/github/trc/clayium/api/laser/ClayLaser.kt index a6feaa6a3..1fe42ab4b 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/laser/ClayLaser.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/laser/ClayLaser.kt @@ -27,17 +27,23 @@ data class ClayLaser( val age: Int = 0, ) { - val energy: Double = calcLaserEnergyPerColor(blue, bases[0], maxEnergies[0]) * - calcLaserEnergyPerColor(green, bases[1], maxEnergies[1]) * - calcLaserEnergyPerColor(red, bases[2], maxEnergies[2]) - 1 + val energy: Double = + calcLaserEnergyPerColor(blue, bases[0], maxEnergies[0]) * + calcLaserEnergyPerColor(green, bases[1], maxEnergies[1]) * + calcLaserEnergyPerColor(red, bases[2], maxEnergies[2]) - 1 companion object { private val bases = doubleArrayOf(2.5, 1.8, 1.5) private val maxEnergies = doubleArrayOf(1000.0, 300.0, 100.0) @Suppress("LocalVariableName") - private fun calcLaserEnergyPerColor(n_i: Int, b_i: Double, m_i: Double, r: Double = 0.1): Double { - if (n_i <= 0 || r <= 0.0 || m_i < 0.0 || b_i < 1.0) return 1.0 + private fun calcLaserEnergyPerColor( + n_i: Int, + b_i: Double, + m_i: Double, + r: Double = 0.1 + ): Double { + if (n_i <= 0 || r <= 0.0 || m_i < 0.0 || b_i < 1.0) return 1.0 val nd = n_i.toDouble() val r1 = r + 1.0 val C_i = b_i.pow((r1) * (ln(r1 / r) / ln(m_i))) @@ -49,4 +55,4 @@ data class ClayLaser( return max(1.0, E_i) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractItemGeneratorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractItemGeneratorMetaTileEntity.kt index 0f3a9bbbe..b6c00d641 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractItemGeneratorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractItemGeneratorMetaTileEntity.kt @@ -22,8 +22,8 @@ import net.minecraft.world.World import kotlin.math.min /** - * A base for machines that generate items without using recipes. - * For example, cobblestone generator and salt extractor. + * A base for machines that generate items without using recipes. For example, cobblestone generator + * and salt extractor. */ abstract class AbstractItemGeneratorMetaTileEntity( metaTileEntityId: ResourceLocation, @@ -31,26 +31,37 @@ abstract class AbstractItemGeneratorMetaTileEntity( validInputModes: List = onlyNoneList, validOutputModes: List = validOutputModesLists[1], name: String, -) : MetaTileEntity( - metaTileEntityId, tier, - validInputModes, validOutputModes, - name, -) { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModes, + validOutputModes, + name, + ) { - open val inventoryRowSize = when (tier.numeric) { - in 4..7 -> tier.numeric - 3 - 8 -> 4 - in 9..13 -> 6 - else -> 1 - } - open val inventoryColumnSize = when (tier.numeric) { - in 4..7 -> tier.numeric - 2 - in 8..13 -> 9 - else -> 1 - } + open val inventoryRowSize = + when (tier.numeric) { + in 4..7 -> tier.numeric - 3 + 8 -> 4 + in 9..13 -> 6 + else -> 1 + } + open val inventoryColumnSize = + when (tier.numeric) { + in 4..7 -> tier.numeric - 2 + in 8..13 -> 9 + else -> 1 + } override val importItems = EmptyItemStackHandler - override val exportItems = NotifiableItemStackHandler(this, inventoryRowSize * inventoryColumnSize, this, isExport = true) + override val exportItems = + NotifiableItemStackHandler( + this, + inventoryRowSize * inventoryColumnSize, + this, + isExport = true + ) override val itemInventory = exportItems val autoIoHandler: AutoIoHandler = AutoIoHandler.Combined(this, isBuffer = true) @@ -60,9 +71,7 @@ abstract class AbstractItemGeneratorMetaTileEntity( abstract val progressPerItem: Int abstract val progressPerTick: Int - /** - * will not be modified. - */ + /** will not be modified. */ abstract val generatingItem: ItemStack override fun isFacingValid(facing: EnumFacing): Boolean { @@ -79,13 +88,13 @@ abstract class AbstractItemGeneratorMetaTileEntity( if (isRemote) return if (offsetTimer % 20 == 0L) isTerrainValid = isTerrainValid() if (hasNotifiedOutputs) outputFull = false - if (!isTerrainValid || outputFull) return // don't progress if terrain is invalid or output is full. + if (!isTerrainValid || outputFull) + return // don't progress if terrain is invalid or output is full. if (canProgress()) { if (progressPerTick.toDouble() + progress.toDouble() > Int.MAX_VALUE.toDouble()) progress = Int.MAX_VALUE - else - progress += progressPerTick + else progress += progressPerTick } if (progress >= progressPerItem) { var generatingItemAmount = progress / progressPerItem @@ -102,14 +111,11 @@ abstract class AbstractItemGeneratorMetaTileEntity( } } - /** - * not called every tick. - */ + /** not called every tick. */ abstract fun isTerrainValid(): Boolean /** - * called every tick. - * energy draining, etc. + * called every tick. energy draining, etc. * * @return whether the machine can progress. */ @@ -120,23 +126,37 @@ abstract class AbstractItemGeneratorMetaTileEntity( val columnStr = "I".repeat(inventoryColumnSize) val matrixStr = (0.. - ItemSlot().slot( - SyncHandlers.itemSlot(itemInventory, index) - .slotGroup("machine_inventory") - ) - }.build().align(Alignment.Center)) + child( + buildMainParentWidget(syncManager) + .child( + SlotGroupWidget.builder() + .matrix(*matrixStr.toTypedArray()) + .key('I') { index -> + ItemSlot() + .slot( + SyncHandlers.itemSlot(itemInventory, index) + .slotGroup("machine_inventory") + ) + } + .build() + .align(Alignment.Center) + ) ) } } - override fun canBeReplacedTo(world: World, pos: BlockPos, sampleMetaTileEntity: MetaTileEntity): Boolean { + override fun canBeReplacedTo( + world: World, + pos: BlockPos, + sampleMetaTileEntity: MetaTileEntity + ): Boolean { if (sampleMetaTileEntity.tier < this.tier) return false return super.canBeReplacedTo(world, pos, sampleMetaTileEntity) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractMinerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractMinerMetaTileEntity.kt index 4d01165e2..00fac9a06 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractMinerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/AbstractMinerMetaTileEntity.kt @@ -66,7 +66,9 @@ abstract class AbstractMinerMetaTileEntity( name: String, validInputModes: List = validInputModesLists[0], validOutputModes: List = validOutputModesLists[1], -) : MetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModes, name), IClayLaserAcceptor { +) : + MetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModes, name), + IClayLaserAcceptor { override val itemInventory = ClayiumItemStackHandler(this, INV_ROW * INV_COLUMN) override val importItems = EmptyItemStackHandler @@ -83,20 +85,18 @@ abstract class AbstractMinerMetaTileEntity( protected var currentPos: BlockPos? = null - /** - * used for rendering. - * null for disable range rendering. - */ + /** used for rendering. null for disable range rendering. */ abstract val rangeRelative: Cuboid6? abstract val maxBlocksPerTick: Int abstract fun drawEnergy(accelerationRate: Double): Boolean + abstract fun getNextBlockPos(): BlockPos? /** - * return true if the block is mined, so the next block is searched. - * also, if all [maxBlocksPerTick] blocks are mined, [progress] will be reset. + * return true if the block is mined, so the next block is searched. also, if all + * [maxBlocksPerTick] blocks are mined, [progress] will be reset. */ protected open fun mine(world: World, pos: BlockPos, state: IBlockState): Boolean { val drops = NonNullList.create() @@ -116,8 +116,7 @@ abstract class AbstractMinerMetaTileEntity( progress += PROGRESS_PER_TICK_BASE * getAccelerationRate() for (i in 0.., faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val atlas = getter.apply(clayiumId("blocks/miner_back")) MINER_BACK = EnumFacing.entries.map { ModelTextures.createQuad(it, atlas) } } - @SideOnly(Side.CLIENT) - override fun getMaxRenderDistanceSquared() = Double.POSITIVE_INFINITY + @SideOnly(Side.CLIENT) override fun getMaxRenderDistanceSquared() = Double.POSITIVE_INFINITY @SideOnly(Side.CLIENT) override fun getRenderBoundingBox() = TileEntityBeacon.INFINITE_EXTENT_AABB - @SideOnly(Side.CLIENT) - override fun useGlobalRenderer() = true + + @SideOnly(Side.CLIENT) override fun useGlobalRenderer() = true + @SideOnly(Side.CLIENT) override fun renderMetaTileEntity(x: Double, y: Double, z: Double, partialTicks: Float) { AreaMarkerRenderer.render(Cuboid6.full, rangeRelative, x, y, z, rangeRenderMode) @@ -287,4 +334,4 @@ abstract class AbstractMinerMetaTileEntity( @JvmStatic // for protected visibility protected lateinit var MINER_BACK: List } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayBufferMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayBufferMetaTileEntity.kt index dab2d8766..bb6894248 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayBufferMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayBufferMetaTileEntity.kt @@ -27,25 +27,35 @@ import net.minecraftforge.items.CapabilityItemHandler class ClayBufferMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, validInputModes = bufferValidInputModes, validOutputModes = validOutputModesLists[1], name = "clay_buffer") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModes = bufferValidInputModes, + validOutputModes = validOutputModesLists[1], + name = "clay_buffer" + ) { override val hasFrontFacing: Boolean = false override val pipeConnectionLogic = IPipeConnectionLogic.ItemPipe - val inventoryRowSize = when (tier.numeric) { - in 4..7 -> tier.numeric - 3 - 8, -> 4 - in 9..13 -> 6 - else -> 1 - } - val inventoryColumnSize = when (tier.numeric) { - in 4..7 -> tier.numeric - 2 - in 8..13 -> 9 - else -> 1 - } + val inventoryRowSize = + when (tier.numeric) { + in 4..7 -> tier.numeric - 3 + 8, -> 4 + in 9..13 -> 6 + else -> 1 + } + val inventoryColumnSize = + when (tier.numeric) { + in 4..7 -> tier.numeric - 2 + in 8..13 -> 9 + else -> 1 + } - override val itemInventory = ClayiumItemStackHandler(this, inventoryRowSize * inventoryColumnSize) + override val itemInventory = + ClayiumItemStackHandler(this, inventoryRowSize * inventoryColumnSize) override val importItems = itemInventory override val exportItems = itemInventory private val autoIoHandler: AutoIoHandler = AutoIoHandler.Combined(this, isBuffer = true) @@ -71,36 +81,57 @@ class ClayBufferMetaTileEntity( val columnStr = "I".repeat(inventoryColumnSize) val matrixStr = (0.. - ItemSlot().slot( - SyncHandlers.itemSlot(itemInventory, index) - .slotGroup("buffer_inv") - ) - } - .build()) - .child( - TextWidget(IKey.lang("container.inventory")) - .paddingTop(1) - .paddingBottom(1) - .left(6))) + .align(Alignment.TopLeft) + ) + .child( + Column() + .marginTop(18) + .child( + SlotGroupWidget.builder() + .matrix(*matrixStr.toTypedArray()) + .key('I') { index -> + ItemSlot() + .slot( + SyncHandlers.itemSlot(itemInventory, index) + .slotGroup("buffer_inv") + ) + } + .build() + ) + .child( + TextWidget(IKey.lang("container.inventory")) + .paddingTop(1) + .paddingBottom(1) + .left(6) + ) + ) .bindPlayerInventory() } - override fun onReplace(world: World, pos: BlockPos, newMetaTileEntity: MetaTileEntity, oldMteData: NBTTagCompound) { - CNbtUtils.handleInvSizeDifference(world, pos, oldMteData, IMPORT_INVENTORY, newMetaTileEntity.itemInventory) + override fun onReplace( + world: World, + pos: BlockPos, + newMetaTileEntity: MetaTileEntity, + oldMteData: NBTTagCompound + ) { + CNbtUtils.handleInvSizeDifference( + world, + pos, + oldMteData, + IMPORT_INVENTORY, + newMetaTileEntity.itemInventory + ) } override fun createMetaTileEntity(): MetaTileEntity { return ClayBufferMetaTileEntity(this.metaTileEntityId, this.tier) } - -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayInterfaceMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayInterfaceMetaTileEntity.kt index 6eab69968..e19ce5c39 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayInterfaceMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayInterfaceMetaTileEntity.kt @@ -28,9 +28,14 @@ class ClayInterfaceMetaTileEntity( override val faceTexture = clayiumId("blocks/clay_interface") override val useFaceForAllSides = true - override val importItems: IItemHandlerModifiable get() = targetImportItems.get() ?: EmptyItemStackHandler - override val exportItems: IItemHandlerModifiable get() = targetExportItems.get() ?: EmptyItemStackHandler - override val itemInventory: IItemHandler get() = targetItemInventory.get() ?: EmptyItemStackHandler + override val importItems: IItemHandlerModifiable + get() = targetImportItems.get() ?: EmptyItemStackHandler + + override val exportItems: IItemHandlerModifiable + get() = targetExportItems.get() ?: EmptyItemStackHandler + + override val itemInventory: IItemHandler + get() = targetItemInventory.get() ?: EmptyItemStackHandler private var targetImportItems: WeakReference = WeakReference(null) private var targetExportItems: WeakReference = WeakReference(null) @@ -52,13 +57,17 @@ class ClayInterfaceMetaTileEntity( this.targetExportItems = WeakReference(target.exportItems) this.targetItemInventory = WeakReference(target.itemInventory) target.getCapability(ClayiumTileCapabilities.AUTO_IO_HANDLER, null)?.let { targetHandler -> - this.autoIoHandler = AutoIoHandler.Combined(this, targetHandler.isBuffer, target.tier.numeric) + this.autoIoHandler = + AutoIoHandler.Combined(this, targetHandler.isBuffer, target.tier.numeric) } - target.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, null)?.let { targetEnergyHolder -> - this.ecImporter = AutoIoHandler.EcImporter(this, targetEnergyHolder.energizedClayItemHandler) + target.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, null)?.let { + targetEnergyHolder -> + this.ecImporter = + AutoIoHandler.EcImporter(this, targetEnergyHolder.energizedClayItemHandler) } - // Disable Trait Sync. These traits not exist on the client side, and they have no data to sync. + // Disable Trait Sync. These traits not exist on the client side, and they have no data to + // sync. val autoIoHandler = this.autoIoHandler if (autoIoHandler != null) { traitByNetworkId.remove(autoIoHandler.networkId) @@ -84,7 +93,14 @@ class ClayInterfaceMetaTileEntity( this.validOutputModes = onlyNoneList } - override fun onRightClick(player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onRightClick( + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { if (super.onRightClick(player, hand, clickedSide, hitX, hitY, hitZ)) { return true } @@ -100,6 +116,7 @@ class ClayInterfaceMetaTileEntity( } override fun canOpenGui() = false + override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { throw UnsupportedOperationException("no direct gui for clay interfaces") } @@ -110,4 +127,4 @@ class ClayInterfaceMetaTileEntity( } return super.getCapability(capability, facing) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayLaserMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayLaserMetaTileEntity.kt index a46f451a5..2d945c049 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayLaserMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/ClayLaserMetaTileEntity.kt @@ -29,7 +29,14 @@ class ClayLaserMetaTileEntity( private val laserRed: Int = 0, private val laserGreen: Int = 0, private val laserBlue: Int = 0, -) : MetaTileEntity(metaTileEntityId, tier, validInputModesLists[0], validOutputModesLists[0], "clay_laser",) { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModesLists[0], + validOutputModesLists[0], + "clay_laser", + ) { override val faceTexture = ResourceLocation(MOD_ID, "blocks/clay_laser") override val importItems: IItemHandlerModifiable = EmptyItemStackHandler @@ -37,12 +44,13 @@ class ClayLaserMetaTileEntity( override val itemInventory: IItemHandler = EmptyItemStackHandler private val clayEnergyHolder = ClayEnergyHolder(this) - val energyCost = ClayEnergy.milli( - when (tier.numeric) { - in 7..10 -> 400 * 10.toDouble().pow((tier.numeric - 7).toDouble()) - else -> 400 - }.toLong() - ) + val energyCost = + ClayEnergy.milli( + when (tier.numeric) { + in 7..10 -> 400 * 10.toDouble().pow((tier.numeric - 7).toDouble()) + else -> 400 + }.toLong() + ) val laserManager = ClayLaserSourceMteTrait(this, laserRed, laserGreen, laserBlue) private var canActivateByRedstone = false @@ -64,38 +72,43 @@ class ClayLaserMetaTileEntity( if (isRemote) return refreshRedstone() if (canActivateByRedstone) { - this.laserManager.isIrradiating = clayEnergyHolder.drawEnergy(energyCost, simulate = false) + this.laserManager.isIrradiating = + clayEnergyHolder.drawEnergy(energyCost, simulate = false) } else { this.laserManager.isIrradiating = false } } override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - return ModularPanel.defaultPanel("clay_laser_tier$tier", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT - 40) + return ModularPanel.defaultPanel( + "clay_laser_tier$tier", + GUI_DEFAULT_WIDTH, + GUI_DEFAULT_HEIGHT - 40 + ) .columnWithPlayerInv { - child(buildMainParentWidget(syncManager) - .child(clayEnergyHolder.createCeTextWidget(syncManager) - .bottom(12).left(0)) - .child(clayEnergyHolder.createSlotWidget() - .align(Alignment.BottomRight)) + child( + buildMainParentWidget(syncManager) + .child(clayEnergyHolder.createCeTextWidget(syncManager).bottom(12).left(0)) + .child(clayEnergyHolder.createSlotWidget().align(Alignment.BottomRight)) ) } } override fun useGlobalRenderer() = true - @SideOnly(Side.CLIENT) - override fun getMaxRenderDistanceSquared() = Double.POSITIVE_INFINITY - @SideOnly(Side.CLIENT) - override fun shouldRenderInPass(pass: Int) = (pass == 1) + + @SideOnly(Side.CLIENT) override fun getMaxRenderDistanceSquared() = Double.POSITIVE_INFINITY + + @SideOnly(Side.CLIENT) override fun shouldRenderInPass(pass: Int) = (pass == 1) private fun refreshRedstone() { val pos = this.pos ?: return val world = this.world ?: return // default->isNotPowered, inverted->isPowered - canActivateByRedstone = world.isBlockPowered(pos) == ConfigCore.misc.invertClayLaserRsCondition + canActivateByRedstone = + world.isBlockPowered(pos) == ConfigCore.misc.invertClayLaserRsCondition } override fun createMetaTileEntity(): MetaTileEntity { return ClayLaserMetaTileEntity(metaTileEntityId, tier, laserRed, laserGreen, laserBlue) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MTETrait.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MTETrait.kt index e456869c9..b3f90c0e5 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MTETrait.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MTETrait.kt @@ -19,15 +19,19 @@ abstract class MTETrait( } open fun update() {} + open fun onFirstTick() {} open fun onPlacement() {} + open fun onRemoval() {} open fun serializeNBT(): NBTTagCompound = NBTTagCompound() + open fun deserializeNBT(data: NBTTagCompound) {} override fun writeInitialSyncData(buf: PacketBuffer) {} + override fun receiveInitialSyncData(buf: PacketBuffer) {} override fun writeCustomData(discriminator: Int, dataWriter: PacketBuffer.() -> Unit) { @@ -44,4 +48,4 @@ abstract class MTETrait( private val idByName = Object2IntOpenHashMap().apply { defaultReturnValue(-1) } private var nextId = 0 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MetaTileEntity.kt index fc6d13834..5c41c07da 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MetaTileEntity.kt @@ -86,36 +86,50 @@ abstract class MetaTileEntity( open val validInputModes: List, open val validOutputModes: List, /** - * simple name for this machine, like "bending_machine" or "ranged_miner". - * used for translation key and item model registration. - * translation key will be "machine.${metaTileEntityId.namespace}.name". - * for a translating logic, see [getItemStackDisplayName]. - * item model location will be ("${metaTileEntityId.namespace}:machines/${name}", "tier={tier.lowerName}"). + * simple name for this machine, like "bending_machine" or "ranged_miner". used for translation + * key and item model registration. translation key will be + * "machine.${metaTileEntityId.namespace}.name". for a translating logic, see + * [getItemStackDisplayName]. item model location will be + * ("${metaTileEntityId.namespace}:machines/${name}", "tier={tier.lowerName}"). */ private val name: String, ) : ISyncedTileEntity, IWorldObject, IGuiHolder, IPipeConnectable { val mteRegistry = ClayiumApi.mteManager.getRegistry(metaTileEntityId.namespace) - val blockMachine get() = mteRegistry.blockMachine - val itemBlockMachine get() = mteRegistry.itemBlockMachine + val blockMachine + get() = mteRegistry.blockMachine + + val itemBlockMachine + get() = mteRegistry.itemBlockMachine val forgeRarity = tier.rarity val translationKey = "machine.${metaTileEntityId.namespace}.$name" var holder: MetaTileEntityHolder? = null - val world: World? get() = holder?.world - val pos: BlockPos? get() = holder?.pos - val isInvalid get() = holder?.isInvalid ?: true - val isRemote get() = world?.isRemote ?: true + val world: World? + get() = holder?.world + + val pos: BlockPos? + get() = holder?.pos + + val isInvalid + get() = holder?.isInvalid ?: true + + val isRemote + get() = world?.isRemote ?: true override val pipeConnectionLogic: IPipeConnectionLogic = IPipeConnectionLogic.Machine // IWorldObj - override val worldObj: World? get() = world - override val position: BlockPos? get() = pos + override val worldObj: World? + get() = world + + override val position: BlockPos? + get() = pos open val faceTexture: ResourceLocation? = null - open val requiredTextures get() = listOf(faceTexture) + open val requiredTextures + get() = listOf(faceTexture) protected val mteTraits = mutableMapOf() protected val traitByNetworkId = Int2ObjectOpenHashMap() @@ -132,15 +146,23 @@ abstract class MetaTileEntity( protected val _inputModes = MutableList(6) { NONE } protected val _outputModes = MutableList(6) { NONE } private val _connectionsCache = BooleanArray(6) - val inputModes get() = _inputModes.toList() - val outputModes get() = _outputModes.toList() - val connectionsCache get() = _connectionsCache.copyOf() + val inputModes + get() = _inputModes.toList() + + val outputModes + get() = _outputModes.toList() + + val connectionsCache + get() = _connectionsCache.copyOf() private val filterAndTypes = MutableList(6) { null } - val filters: List = object : AbstractList() { - override val size get() = filterAndTypes.size - override fun get(index: Int) = filterAndTypes[index]?.filter - } + val filters: List = + object : AbstractList() { + override val size + get() = filterAndTypes.size + + override fun get(index: Int) = filterAndTypes[index]?.filter + } open val hasFrontFacing = true var frontFacing = EnumFacing.NORTH @@ -155,20 +177,26 @@ abstract class MetaTileEntity( private var timer = 0L private val timerOffset = (0..19).random() - val offsetTimer: Long get() = timer + timerOffset + val offsetTimer: Long + get() = timer + timerOffset - /** - * If true, [faceTexture] will be added to all [EnumFacing]. - */ + /** If true, [faceTexture] will be added to all [EnumFacing]. */ open val useFaceForAllSides = false val overclockHandler = OverclockHandler(this) - val overclock: Double get() = overclockHandler.rawOcFactor + val overclock: Double + get() = overclockHandler.rawOcFactor @SideOnly(Side.CLIENT) open fun registerItemModel(item: Item, meta: Int) { - ModelLoader.setCustomModelResourceLocation(item, meta, - ModelResourceLocation(ResourceLocation(metaTileEntityId.namespace, "machines/$name"), "tier=${tier.lowerName}")) + ModelLoader.setCustomModelResourceLocation( + item, + meta, + ModelResourceLocation( + ResourceLocation(metaTileEntityId.namespace, "machines/$name"), + "tier=${tier.lowerName}" + ) + ) } fun addMetaTileEntityTrait(trait: MTETrait) { @@ -176,7 +204,9 @@ abstract class MetaTileEntity( traitByNetworkId[trait.networkId] = trait } - override fun markDirty() { holder?.markDirty() } + override fun markDirty() { + holder?.markDirty() + } @MustBeInvokedByOverriders open fun update() { @@ -191,7 +221,11 @@ abstract class MetaTileEntity( mteTraits.values.forEach(MTETrait::onFirstTick) } - open fun canBeReplacedTo(world: World, pos: BlockPos, sampleMetaTileEntity: MetaTileEntity): Boolean { + open fun canBeReplacedTo( + world: World, + pos: BlockPos, + sampleMetaTileEntity: MetaTileEntity + ): Boolean { // shouldn't be replaced if the same MTE. if (sampleMetaTileEntity.metaTileEntityId == this.metaTileEntityId) return false val thisClass = this::class @@ -218,7 +252,12 @@ abstract class MetaTileEntity( this.scheduleRenderUpdate() } - protected open fun onReplace(world: World, pos: BlockPos, newMetaTileEntity: MetaTileEntity, oldMteData: NBTTagCompound) {} + protected open fun onReplace( + world: World, + pos: BlockPos, + newMetaTileEntity: MetaTileEntity, + oldMteData: NBTTagCompound + ) {} open fun writeToNBT(data: NBTTagCompound) { data.setByte("frontFacing", frontFacing.index.toByte()) @@ -239,9 +278,15 @@ abstract class MetaTileEntity( open fun readFromNBT(data: NBTTagCompound) { frontFacing = EnumFacing.byIndex(data.getByte("frontFacing").toInt()) - data.getByteArray("inputModes").forEachIndexed { i, id -> _inputModes[i] = MachineIoMode.byId(id.toInt()) } - data.getByteArray("outputModes").forEachIndexed { i, id -> _outputModes[i] = MachineIoMode.byId(id.toInt()) } - data.getByteArray("connections").forEachIndexed { i, b -> _connectionsCache[i] = (b == 1.toByte()) } + data.getByteArray("inputModes").forEachIndexed { i, id -> + _inputModes[i] = MachineIoMode.byId(id.toInt()) + } + data.getByteArray("outputModes").forEachIndexed { i, id -> + _outputModes[i] = MachineIoMode.byId(id.toInt()) + } + data.getByteArray("connections").forEachIndexed { i, b -> + _connectionsCache[i] = (b == 1.toByte()) + } filterAndTypes.forEachIndexed { i, filter -> if (data.hasKey("filterType$i") && data.hasKey("filter$i")) { val type = FilterType.byId(data.getInteger("filterType$i")) @@ -318,7 +363,8 @@ abstract class MetaTileEntity( filterAndTypes[side] = null } else { val type = FilterType.byId(typeId) - // on the client side, the filter is only used to rendering, so we don't have to deserialize it. + // on the client side, the filter is only used to rendering, so we don't have to + // deserialize it. filterAndTypes[side] = FilterAndType(type.factory(), type) } this.scheduleRenderUpdate() @@ -329,11 +375,12 @@ abstract class MetaTileEntity( } SYNC_MTE_TRAIT -> { val traitNetworkId = buf.readVarInt() - val trait = traitByNetworkId[traitNetworkId] - ?: run { - CLog.error("Could not find MTETrait with id $traitNetworkId at $pos") - return - } + val trait = + traitByNetworkId[traitNetworkId] + ?: run { + CLog.error("Could not find MTETrait with id $traitNetworkId at $pos") + return + } trait.receiveCustomData(buf.readVarInt(), buf) } } @@ -352,22 +399,45 @@ abstract class MetaTileEntity( return capability.cast(this) } if (capability === CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (facing == null) return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) + if (facing == null) + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) val i = facing.index - val inputSlots = when (inputModes[i]) { - FIRST -> createFilteredItemHandler(RangedItemHandlerProxy(importItems, availableSlot = 0), facing) - SECOND -> createFilteredItemHandler(RangedItemHandlerProxy(importItems, availableSlot = 1), facing) - ALL -> createFilteredItemHandler(importItems, facing) - CE -> this.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, facing)?.energizedClayItemHandler - else -> null - } - val outputSlots = when (outputModes[i]) { - FIRST -> createFilteredItemHandler(RangedItemHandlerProxy(exportItems, availableSlot = 0), facing) - SECOND -> createFilteredItemHandler(RangedItemHandlerProxy(exportItems, availableSlot = 1), facing) - ALL -> createFilteredItemHandler(exportItems, facing) - else -> null - } - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(ItemHandlerProxy(inputSlots, outputSlots)) + val inputSlots = + when (inputModes[i]) { + FIRST -> + createFilteredItemHandler( + RangedItemHandlerProxy(importItems, availableSlot = 0), + facing + ) + SECOND -> + createFilteredItemHandler( + RangedItemHandlerProxy(importItems, availableSlot = 1), + facing + ) + ALL -> createFilteredItemHandler(importItems, facing) + CE -> + this.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, facing) + ?.energizedClayItemHandler + else -> null + } + val outputSlots = + when (outputModes[i]) { + FIRST -> + createFilteredItemHandler( + RangedItemHandlerProxy(exportItems, availableSlot = 0), + facing + ) + SECOND -> + createFilteredItemHandler( + RangedItemHandlerProxy(exportItems, availableSlot = 1), + facing + ) + ALL -> createFilteredItemHandler(exportItems, facing) + else -> null + } + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast( + ItemHandlerProxy(inputSlots, outputSlots) + ) } return mteTraits.values.firstNotNullOfOrNull { it.getCapability(capability, facing) } } @@ -381,7 +451,10 @@ abstract class MetaTileEntity( * * @param side if null, it returns original [handler]. */ - protected fun createFilteredItemHandler(handler: IItemHandler, side: EnumFacing?): IItemHandler { + protected fun createFilteredItemHandler( + handler: IItemHandler, + side: EnumFacing? + ): IItemHandler { if (side == null) return handler val filter = filters[side.index] return if (filter == null) handler else FilteredItemHandler(handler, filter) @@ -389,9 +462,17 @@ abstract class MetaTileEntity( /** * only called on the server side. + * * @return true if something happened and no further processing should be done. */ - open fun onRightClick(player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + open fun onRightClick( + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { val stack = player.getHeldItem(hand) val confTool = stack.getCapability(ClayiumCapabilities.CONFIG_TOOL, null) if (confTool != null) { @@ -409,7 +490,15 @@ abstract class MetaTileEntity( open fun canOpenGui() = true - open fun onToolClick(toolType: IConfigurationTool.ToolType, player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) { + open fun onToolClick( + toolType: IConfigurationTool.ToolType, + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ) { if (this.world?.isRemote == true) return val world = this.world ?: return val pos = this.pos ?: return @@ -433,7 +522,15 @@ abstract class MetaTileEntity( } } - fun onToolClick(tool: IConfigurationTool, player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + fun onToolClick( + tool: IConfigurationTool, + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { val type = tool.getType(player.isSneaking) ?: return false this.onToolClick(type, player, hand, clickedSide, hitX, hitY, hitZ) return true @@ -465,33 +562,35 @@ abstract class MetaTileEntity( } fun getInput(side: EnumFacing) = _inputModes[side.index] + fun getOutput(side: EnumFacing) = _outputModes[side.index] fun isInputModeValid(mode: MachineIoMode) = mode in validInputModes + fun isOutputModeValid(mode: MachineIoMode) = mode in validOutputModes - /** - * If [mode] is not in [validInputModes], it will not be set. - */ + /** If [mode] is not in [validInputModes], it will not be set. */ fun setInput(side: EnumFacing, mode: MachineIoMode) { if (mode !in this.validInputModes) return _inputModes[side.index] = mode this.refreshConnection(side) - (this.getNeighbor(side) as? MetaTileEntityHolder)?.metaTileEntity?.refreshConnection(side.opposite) + (this.getNeighbor(side) as? MetaTileEntityHolder) + ?.metaTileEntity + ?.refreshConnection(side.opposite) writeCustomData(UPDATE_INPUT_MODE) { writeByte(side.index) writeByte(mode.id) } } - /** - * If [mode] is not in [validOutputModes], it will not be set. - */ + /** If [mode] is not in [validOutputModes], it will not be set. */ fun setOutput(side: EnumFacing, mode: MachineIoMode) { if (mode !in this.validOutputModes) return _outputModes[side.index] = mode this.refreshConnection(side) - (this.getNeighbor(side) as? MetaTileEntityHolder)?.metaTileEntity?.refreshConnection(side.opposite) + (this.getNeighbor(side) as? MetaTileEntityHolder) + ?.metaTileEntity + ?.refreshConnection(side.opposite) writeCustomData(UPDATE_OUTPUT_MODE) { writeByte(side.index) writeByte(mode.id) @@ -500,9 +599,12 @@ abstract class MetaTileEntity( protected fun toggleInput(side: EnumFacing) { val current = _inputModes[side.index] - _inputModes[side.index] = validInputModes[(validInputModes.indexOf(current) + 1) % validInputModes.size] + _inputModes[side.index] = + validInputModes[(validInputModes.indexOf(current) + 1) % validInputModes.size] this.refreshConnection(side) - (this.getNeighbor(side) as? MetaTileEntityHolder)?.metaTileEntity?.refreshConnection(side.opposite) + (this.getNeighbor(side) as? MetaTileEntityHolder) + ?.metaTileEntity + ?.refreshConnection(side.opposite) writeCustomData(UPDATE_INPUT_MODE) { writeByte(side.index) writeByte(_inputModes[side.index].id) @@ -511,9 +613,12 @@ abstract class MetaTileEntity( protected fun toggleOutput(side: EnumFacing) { val current = _outputModes[side.index] - _outputModes[side.index] = validOutputModes[(validOutputModes.indexOf(current) + 1) % validOutputModes.size] + _outputModes[side.index] = + validOutputModes[(validOutputModes.indexOf(current) + 1) % validOutputModes.size] this.refreshConnection(side) - (this.getNeighbor(side) as? MetaTileEntityHolder)?.metaTileEntity?.refreshConnection(side.opposite) + (this.getNeighbor(side) as? MetaTileEntityHolder) + ?.metaTileEntity + ?.refreshConnection(side.opposite) writeCustomData(UPDATE_OUTPUT_MODE) { writeByte(side.index) writeByte(_outputModes[side.index].id) @@ -527,18 +632,33 @@ abstract class MetaTileEntity( if (neighborTileEntity == null) { _connectionsCache[i] = false } else { - val neighborConnectable = neighborTileEntity.getCapability(ClayiumTileCapabilities.PIPE_CONNECTABLE, side.opposite) + val neighborConnectable = + neighborTileEntity.getCapability( + ClayiumTileCapabilities.PIPE_CONNECTABLE, + side.opposite + ) if (neighborConnectable == null) { - // neighbor has no specific implementation for this logic. default to hasItemHandler. - _connectionsCache[i] = neighborTileEntity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) + // neighbor has no specific implementation for this logic. default to + // hasItemHandler. + _connectionsCache[i] = + neighborTileEntity.hasCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) } else { val thisMode = getPipeConnectionMode(side) val neighborMode = neighborConnectable.getPipeConnectionMode(side.opposite) val neighborConnectionLogic = neighborConnectable.pipeConnectionLogic - _connectionsCache[i] = (pipeConnectionLogic.canConnect(thisMode = thisMode, neighborMode = neighborMode) - || neighborConnectionLogic.canConnect(thisMode = neighborMode, neighborMode = thisMode)) + _connectionsCache[i] = + (pipeConnectionLogic.canConnect( + thisMode = thisMode, + neighborMode = neighborMode + ) || + neighborConnectionLogic.canConnect( + thisMode = neighborMode, + neighborMode = thisMode + )) } - } if (previous != _connectionsCache[i]) { writeCustomData(UPDATE_CONNECTIONS) { @@ -549,22 +669,41 @@ abstract class MetaTileEntity( } override fun getPipeConnectionMode(side: EnumFacing): PipeConnectionMode { - val input = when (getInput(side)) { - NONE -> false - FIRST, SECOND, ALL, CE, - M_ALL, M_1, M_2, M_3, M_4, M_5, M_6 -> true - } + val input = + when (getInput(side)) { + NONE -> false + FIRST, + SECOND, + ALL, + CE, + M_ALL, + M_1, + M_2, + M_3, + M_4, + M_5, + M_6 -> true + } - val output = when (getOutput(side)) { - NONE -> false - FIRST, SECOND, ALL, CE, - M_ALL, M_1, M_2, M_3, M_4, M_5, M_6 -> true - } + val output = + when (getOutput(side)) { + NONE -> false + FIRST, + SECOND, + ALL, + CE, + M_ALL, + M_1, + M_2, + M_3, + M_4, + M_5, + M_6 -> true + } return if (input && output) PipeConnectionMode.BOTH else if (input) PipeConnectionMode.INPUT - else if (output) PipeConnectionMode.OUTPUT - else PipeConnectionMode.NONE + else if (output) PipeConnectionMode.OUTPUT else PipeConnectionMode.NONE } fun setFilter(side: EnumFacing, filter: IItemFilter, type: FilterType) { @@ -606,10 +745,11 @@ abstract class MetaTileEntity( } open fun writeItemStackNbt(data: NBTTagCompound) {} + open fun readItemStackNbt(data: NBTTagCompound) {} - open fun onNeighborChanged(facing: EnumFacing) { - } + open fun onNeighborChanged(facing: EnumFacing) {} + open fun neighborChanged() { EnumFacing.entries.forEach(this::refreshConnection) overclockHandler.onNeighborBlockChange() @@ -620,12 +760,12 @@ abstract class MetaTileEntity( open fun getWeakPower(side: EnumFacing?): Int = 0 fun getNeighbor(side: EnumFacing) = holder?.getNeighbor(side) + fun scheduleRenderUpdate() = holder?.scheduleRenderUpdate() + fun notifyNeighbors() = holder?.notifyNeighbors() - /** - * @return null if the neighbor is not loaded. - */ + /** @return null if the neighbor is not loaded. */ fun getNeighborBlockState(side: EnumFacing): IBlockState? { val world = this.world ?: return null val pos = this.pos?.offset(side) ?: return null @@ -641,13 +781,21 @@ abstract class MetaTileEntity( return if (BothSideI18n.hasKey("${this.translationKey}.${tier.lowerName}")) { BothSideI18n.format("${this.translationKey}.${tier.lowerName}") } else { - BothSideI18n.format(this.translationKey, BothSideI18n.format(this.tier.prefixTranslationKey)) + BothSideI18n.format( + this.translationKey, + BothSideI18n.format(this.tier.prefixTranslationKey) + ) } } @SideOnly(Side.CLIENT) @MustBeInvokedByOverriders - open fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + open fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add(I18n.format("tooltip.clayium.tier", tier.numeric)) UtilLocale.formatTooltips(tooltip, "$translationKey.${tier.lowerName}.tooltip") UtilLocale.formatTooltips(tooltip, "$translationKey.tooltip") @@ -657,37 +805,43 @@ abstract class MetaTileEntity( return tab === CreativeTabs.SEARCH || tab === ClayiumCTabs.main } - @SideOnly(Side.CLIENT) - open fun shouldRenderInPass(pass: Int) = (pass == 0) - @SideOnly(Side.CLIENT) - open fun getMaxRenderDistanceSquared(): Double = 4096.0 - /** - * null for use TileEntity defaults. - */ - @SideOnly(Side.CLIENT) - open fun getRenderBoundingBox(): AxisAlignedBB? = null + @SideOnly(Side.CLIENT) open fun shouldRenderInPass(pass: Int) = (pass == 0) - /** - * also called on model reload. - */ + @SideOnly(Side.CLIENT) open fun getMaxRenderDistanceSquared(): Double = 4096.0 + + /** null for use TileEntity defaults. */ + @SideOnly(Side.CLIENT) open fun getRenderBoundingBox(): AxisAlignedBB? = null + + /** also called on model reload. */ @SideOnly(Side.CLIENT) - open fun bakeQuads(getter: java.util.function.Function, faceBakery: FaceBakery) {} + open fun bakeQuads( + getter: java.util.function.Function, + faceBakery: FaceBakery + ) {} - /** - * Adds base textures such as Machine hulls. - */ + /** Adds base textures such as Machine hulls. */ @SideOnly(Side.CLIENT) - open fun getQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + open fun getQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (state == null || side == null || state !is IExtendedBlockState) return quads.add(ModelTextures.getHullQuads(this.tier)?.get(side) ?: return) } /** - * Adds overlay textures such as Machine faces. - * This is called after [getQuads], but before adding IO textures. + * Adds overlay textures such as Machine faces. This is called after [getQuads], but before + * adding IO textures. */ @SideOnly(Side.CLIENT) - open fun overlayQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + open fun overlayQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (this.hasFrontFacing && this.faceTexture != null) { if (this.useFaceForAllSides || side == this.frontFacing) { ModelTextures.FACE_QUADS[this.faceTexture]?.get(side)?.let { quads.add(it) } @@ -695,47 +849,47 @@ abstract class MetaTileEntity( } } - /** - * You can use GlStateManager to render extra things if needed. - * todo: cc render? - */ + /** You can use GlStateManager to render extra things if needed. todo: cc render? */ @SideOnly(Side.CLIENT) open fun renderMetaTileEntity(x: Double, y: Double, z: Double, partialTicks: Float) {} - @SideOnly(Side.CLIENT) - open fun useGlobalRenderer() = false - protected fun largeSlot(slot: ModularSlot) = ParentWidget() - .size(26, 26) - .background(ClayGuiTextures.LARGE_SLOT) - .child(ItemSlot().align(Alignment.Center) - .slot(slot) - .background(IDrawable.EMPTY)) + @SideOnly(Side.CLIENT) open fun useGlobalRenderer() = false + + protected fun largeSlot(slot: ModularSlot) = + ParentWidget() + .size(26, 26) + .background(ClayGuiTextures.LARGE_SLOT) + .child(ItemSlot().align(Alignment.Center).slot(slot).background(IDrawable.EMPTY)) override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - return ModularPanel.defaultPanel(translationKey) - .columnWithPlayerInv { - child(buildMainParentWidget(syncManager)) - } + return ModularPanel.defaultPanel(translationKey).columnWithPlayerInv { + child(buildMainParentWidget(syncManager)) + } } - protected inline fun ModularPanel.columnWithPlayerInv(builder: (Column.() -> Column)) = this.child( - Column().margin(7).sizeRel(1f) - .builder() - .child(SlotGroupWidget.playerInventory(0)) - ) + protected inline fun ModularPanel.columnWithPlayerInv(builder: (Column.() -> Column)) = + this.child( + Column().margin(7).sizeRel(1f).builder().child(SlotGroupWidget.playerInventory(0)) + ) - /** - * returns the main parent widget positioned above player inventory. - */ + /** returns the main parent widget positioned above player inventory. */ protected open fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - return ParentWidget().widthRel(1f).expanded().marginBottom(2) - .child(IKey.str(getStackForm().displayName).asWidget() - .align(Alignment.TopLeft)) + return ParentWidget() + .widthRel(1f) + .expanded() + .marginBottom(2) + .child(IKey.str(getStackForm().displayName).asWidget().align(Alignment.TopLeft)) .child(IKey.lang("container.inventory").asWidget().align(Alignment.BottomLeft)) - .child(IKey.dynamic { - // if empty string, a bug occurs. - if (overclock != 1.0) I18n.format("gui.clayium.overclock", overclock) else " " - }.asWidgetResizing().alignment(Alignment.CenterRight).align(Alignment.BottomRight)) + .child( + IKey.dynamic { + // if empty string, a bug occurs. + if (overclock != 1.0) I18n.format("gui.clayium.overclock", overclock) + else " " + } + .asWidgetResizing() + .alignment(Alignment.CenterRight) + .align(Alignment.BottomRight) + ) } private data class FilterAndType(val filter: IItemFilter, val type: FilterType) @@ -749,17 +903,11 @@ abstract class MetaTileEntity( const val IMPORT_INVENTORY = "importInventory" const val EXPORT_INVENTORY = "exportInventory" - val validInputModesLists = listOf( - listOf(NONE, CE), - listOf(ALL, CE, NONE), - listOf(ALL, FIRST, SECOND, CE, NONE) - ) + val validInputModesLists = + listOf(listOf(NONE, CE), listOf(ALL, CE, NONE), listOf(ALL, FIRST, SECOND, CE, NONE)) - val validOutputModesLists = listOf( - onlyNoneList, - listOf(ALL, NONE), - listOf(ALL, FIRST, SECOND, NONE) - ) + val validOutputModesLists = + listOf(onlyNoneList, listOf(ALL, NONE), listOf(ALL, FIRST, SECOND, NONE)) fun clearInventory(itemBuffer: MutableList, inventory: IItemHandlerModifiable) { for (i in 0.., facing: EnumFacing?): Boolean { - return metaTileEntity?.getCapability(capability, facing) != null || super.hasCapability(capability, facing) + return metaTileEntity?.getCapability(capability, facing) != null || + super.hasCapability(capability, facing) } override fun getCapability(capability: Capability, facing: EnumFacing?): T? { - return metaTileEntity?.getCapability(capability, facing) ?: super.getCapability(capability, facing) + return metaTileEntity?.getCapability(capability, facing) + ?: super.getCapability(capability, facing) } override fun onNeighborChanged(facing: EnumFacing) { @@ -124,15 +126,27 @@ class MetaTileEntityHolder : NeighborCacheTileEntityBase(), ITickable { world?.notifyNeighborsOfStateChange(pos, blockType, true) } - override fun shouldRefresh(world: World, pos: BlockPos, oldState: IBlockState, newSate: IBlockState): Boolean { + override fun shouldRefresh( + world: World, + pos: BlockPos, + oldState: IBlockState, + newSate: IBlockState + ): Boolean { return oldState.block != newSate.block } @SideOnly(Side.CLIENT) - override fun shouldRenderInPass(pass: Int) = metaTileEntity?.shouldRenderInPass(pass) ?: super.shouldRenderInPass(pass) - @Suppress("UsePropertyAccessSyntax") // `super.maxRenderDistanceSquared` errors with "Unresolved reference" + override fun shouldRenderInPass(pass: Int) = + metaTileEntity?.shouldRenderInPass(pass) ?: super.shouldRenderInPass(pass) + + @Suppress( + "UsePropertyAccessSyntax" + ) // `super.maxRenderDistanceSquared` errors with "Unresolved reference" @SideOnly(Side.CLIENT) - override fun getMaxRenderDistanceSquared() = metaTileEntity?.getMaxRenderDistanceSquared() ?: super.getMaxRenderDistanceSquared() + override fun getMaxRenderDistanceSquared() = + metaTileEntity?.getMaxRenderDistanceSquared() ?: super.getMaxRenderDistanceSquared() + @SideOnly(Side.CLIENT) - override fun getRenderBoundingBox() = metaTileEntity?.getRenderBoundingBox() ?: super.getRenderBoundingBox() -} \ No newline at end of file + override fun getRenderBoundingBox() = + metaTileEntity?.getRenderBoundingBox() ?: super.getRenderBoundingBox() +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MultiTrackBufferMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MultiTrackBufferMetaTileEntity.kt index 4e4a154a5..9e542d9bc 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MultiTrackBufferMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/MultiTrackBufferMetaTileEntity.kt @@ -1,6 +1,5 @@ package com.github.trc.clayium.api.metatileentity - import com.cleanroommc.modularui.screen.ModularPanel import com.cleanroommc.modularui.utils.Alignment import com.cleanroommc.modularui.value.sync.GuiSyncManager @@ -48,38 +47,43 @@ import kotlin.math.min class MultiTrackBufferMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, - validInputModes = mBufferValidIoModes[getTrackRows(tier.numeric)-2], validOutputModes = mBufferValidIoModes[getTrackRows(tier.numeric)-2], - "multi_track_buffer") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModes = mBufferValidIoModes[getTrackRows(tier.numeric) - 2], + validOutputModes = mBufferValidIoModes[getTrackRows(tier.numeric) - 2], + "multi_track_buffer" + ) { override val hasFrontFacing: Boolean = true override val pipeConnectionLogic: IPipeConnectionLogic = IPipeConnectionLogic.ItemPipe val trackRow = getTrackRows(tier.numeric) - val trackInvSize = when (tier.numeric) { - 4 -> 1 - 5 -> 2 - in 6..7 -> 4 - 8 -> 6 - in 9..13 -> 9 - else -> 1 - } + val trackInvSize = + when (tier.numeric) { + 4 -> 1 + 5 -> 2 + in 6..7 -> 4 + 8 -> 6 + in 9..13 -> 9 + else -> 1 + } - val tracks: Array = (0.. = + (0.. - { stack: ItemStack -> - val filterStack = filtersHandler.getStackInSlot(slot) - val filter = filterStack.getCapability(ClayiumCapabilities.ITEM_FILTER, null) - if (filterStack.isEmpty) true - else if (filter != null) filter.test(stack) - else filterStack.isItemEqual(stack) + private val slotFilters = + (0.. + { stack: ItemStack -> + val filterStack = filtersHandler.getStackInSlot(slot) + val filter = filterStack.getCapability(ClayiumCapabilities.ITEM_FILTER, null) + if (filterStack.isEmpty) true + else if (filter != null) filter.test(stack) else filterStack.isItemEqual(stack) + } } - } override val itemInventory = CombinedInvWrapper(*tracks) override val importItems: IItemHandlerModifiable = itemInventory override val exportItems: IItemHandlerModifiable = itemInventory @@ -92,11 +96,13 @@ class MultiTrackBufferMetaTileEntity( override fun getCapability(capability: Capability, facing: EnumFacing?): T? { if (capability === CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (facing == null) return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) + if (facing == null) + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast( ItemHandlerProxy( - getItemHandler(getInput(facing), facing), getItemHandler(getOutput(facing), facing) + getItemHandler(getInput(facing), facing), + getItemHandler(getOutput(facing), facing) ) ) } @@ -115,38 +121,72 @@ class MultiTrackBufferMetaTileEntity( } } - private fun getTrackWithFilter(track: Int): IItemHandler = FilteredItemHandler(tracks[track], slotFilters[track]) + private fun getTrackWithFilter(track: Int): IItemHandler = + FilteredItemHandler(tracks[track], slotFilters[track]) override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { (0.. - for ((i, handler) in tracks.withIndex()) { - column.child(Row().width(trackInvSize * 18 + 4 + 18).height(18) - .child(SlotGroupWidget.builder() - .matrix(slotsRowString) - .key('I') { slotIndex -> - ItemSlot().slot(SyncHandlers.itemSlot(handler, slotIndex) - .slotGroup("mt_buffer_inv_${i}") - .filter(slotFilters[i])) - .background(ClayGuiTextures.M_TRACK_SLOTS[i]) - } - .build()) - .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(filtersHandler, i)) - .background(ClayGuiTextures.M_TRACK_FILTER_SLOTS[i]) - .align(Alignment.CenterRight))) - } - } - ) + child( + buildMainParentWidget(syncManager) + .child( + Column() + .width(trackInvSize * 18 + 4 + 18) + .height(trackRow * 18) + .align(Alignment.Center) + .also { column -> + for ((i, handler) in tracks.withIndex()) { + column.child( + Row() + .width(trackInvSize * 18 + 4 + 18) + .height(18) + .child( + SlotGroupWidget.builder() + .matrix(slotsRowString) + .key('I') { slotIndex -> + ItemSlot() + .slot( + SyncHandlers.itemSlot( + handler, + slotIndex + ) + .slotGroup( + "mt_buffer_inv_${i}" + ) + .filter(slotFilters[i]) + ) + .background( + ClayGuiTextures.M_TRACK_SLOTS[i] + ) + } + .build() + ) + .child( + ItemSlot() + .slot( + SyncHandlers.phantomItemSlot( + filtersHandler, + i + ) + ) + .background( + ClayGuiTextures.M_TRACK_FILTER_SLOTS[i] + ) + .align(Alignment.CenterRight) + ) + ) + } + } + ) ) } } @@ -161,22 +201,36 @@ class MultiTrackBufferMetaTileEntity( CUtils.readItems(filtersHandler, "filterSlots", data) } - private inner class MultiTrackIoHandler : AutoIoHandler.Combined(this@MultiTrackBufferMetaTileEntity, isBuffer = true) { + private inner class MultiTrackIoHandler : + AutoIoHandler.Combined(this@MultiTrackBufferMetaTileEntity, isBuffer = true) { override fun importFromNeighbors() { var remaining = amountPerAction for (side in EnumFacing.entries) { if (!(remaining > 0 && isImporting(side))) continue val neighbor = getNeighbor(side) ?: continue - if (neighbor is MetaTileEntityHolder && neighbor.metaTileEntity is MultiTrackBufferMetaTileEntity) { + if ( + neighbor is MetaTileEntityHolder && + neighbor.metaTileEntity is MultiTrackBufferMetaTileEntity + ) { val neighborBuffer = neighbor.metaTileEntity as MultiTrackBufferMetaTileEntity - remaining = transferMultiTrack(neighborBuffer, this@MultiTrackBufferMetaTileEntity, remaining) + remaining = + transferMultiTrack( + neighborBuffer, + this@MultiTrackBufferMetaTileEntity, + remaining + ) } else { - remaining = transferItemStack( - from = neighbor.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) ?: continue, - to = getImportItems(side) ?: continue, - amount = remaining, - ) + remaining = + transferItemStack( + from = + neighbor.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) ?: continue, + to = getImportItems(side) ?: continue, + amount = remaining, + ) } } } @@ -187,22 +241,33 @@ class MultiTrackBufferMetaTileEntity( if (!(remaining > 0 && isExporting(side))) continue val neighbor = getNeighbor(side) ?: continue - if (neighbor is MetaTileEntityHolder && neighbor.metaTileEntity is MultiTrackBufferMetaTileEntity) { + if ( + neighbor is MetaTileEntityHolder && + neighbor.metaTileEntity is MultiTrackBufferMetaTileEntity + ) { val neighborBuffer = neighbor.metaTileEntity as MultiTrackBufferMetaTileEntity - remaining = transferMultiTrack(this@MultiTrackBufferMetaTileEntity, neighborBuffer, remaining) + remaining = + transferMultiTrack( + this@MultiTrackBufferMetaTileEntity, + neighborBuffer, + remaining + ) } else { - remaining = transferItemStack( - from = getExportItems(side) ?: continue, - to = neighbor.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) ?: continue, - amount = remaining, - ) + remaining = + transferItemStack( + from = getExportItems(side) ?: continue, + to = + neighbor.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) ?: continue, + amount = remaining, + ) } } } - /** - * returns remaining amount - */ + /** returns remaining amount */ private fun transferMultiTrack( from: MultiTrackBufferMetaTileEntity, to: MultiTrackBufferMetaTileEntity, @@ -218,8 +283,19 @@ class MultiTrackBufferMetaTileEntity( } } - override fun onReplace(world: World, pos: BlockPos, newMetaTileEntity: MetaTileEntity, oldMteData: NBTTagCompound) { - CNbtUtils.handleInvSizeDifference(world, pos, oldMteData, IMPORT_INVENTORY, newMetaTileEntity.itemInventory) + override fun onReplace( + world: World, + pos: BlockPos, + newMetaTileEntity: MetaTileEntity, + oldMteData: NBTTagCompound + ) { + CNbtUtils.handleInvSizeDifference( + world, + pos, + oldMteData, + IMPORT_INVENTORY, + newMetaTileEntity.itemInventory + ) } override fun createMetaTileEntity(): MetaTileEntity { @@ -227,18 +303,20 @@ class MultiTrackBufferMetaTileEntity( } companion object { - val mBufferValidIoModes = listOf( - listOf(NONE, M_ALL, M_1, M_2), - listOf(NONE, M_ALL, M_1, M_2, M_3), - listOf(NONE, M_ALL, M_1, M_2, M_3, M_4), - listOf(NONE, M_ALL, M_1, M_2, M_3, M_4, M_5), - listOf(NONE, M_ALL, M_1, M_2, M_3, M_4, M_5, M_6) - ) + val mBufferValidIoModes = + listOf( + listOf(NONE, M_ALL, M_1, M_2), + listOf(NONE, M_ALL, M_1, M_2, M_3), + listOf(NONE, M_ALL, M_1, M_2, M_3, M_4), + listOf(NONE, M_ALL, M_1, M_2, M_3, M_4, M_5), + listOf(NONE, M_ALL, M_1, M_2, M_3, M_4, M_5, M_6) + ) - fun getTrackRows(tier: Int) = when (tier) { - in 4..8 -> tier - 2 - in 9..13 -> 6 - else -> 2 - } + fun getTrackRows(tier: Int) = + when (tier) { + in 4..8 -> tier - 2 + in 9..13 -> 6 + else -> 2 + } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/NeighborCacheTileEntityBase.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/NeighborCacheTileEntityBase.kt index b00228d2c..93f8387ec 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/NeighborCacheTileEntityBase.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/NeighborCacheTileEntityBase.kt @@ -61,4 +61,4 @@ abstract class NeighborCacheTileEntityBase : SyncedTileEntityBase() { open fun onNeighborChanged(facing: EnumFacing) { neighborCache[facing.index] = null } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SimpleMachineMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SimpleMachineMetaTileEntity.kt index c802312b3..1bdce02cb 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SimpleMachineMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SimpleMachineMetaTileEntity.kt @@ -16,24 +16,50 @@ class SimpleMachineMetaTileEntity( override val faceTexture: ResourceLocation, recipeRegistry: RecipeRegistry<*>, // saved for createMetaTileEntity() - private val workableProvider: (MetaTileEntity, RecipeRegistry<*>, ClayEnergyHolder) -> AbstractRecipeLogic = ::RecipeLogicEnergy, -) : WorkableMetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModes, recipeRegistry) { + private val workableProvider: + (MetaTileEntity, RecipeRegistry<*>, ClayEnergyHolder) -> AbstractRecipeLogic = + ::RecipeLogicEnergy, +) : + WorkableMetaTileEntity( + metaTileEntityId, + tier, + validInputModes, + validOutputModes, + recipeRegistry + ) { constructor( metaTileEntityId: ResourceLocation, tier: ITier, recipeRegistry: RecipeRegistry<*>, - workableProvider: (MetaTileEntity, RecipeRegistry<*>, ClayEnergyHolder) -> AbstractRecipeLogic = ::RecipeLogicEnergy, + workableProvider: + (MetaTileEntity, RecipeRegistry<*>, ClayEnergyHolder) -> AbstractRecipeLogic = + ::RecipeLogicEnergy, ) : this( - metaTileEntityId, tier, - validInputModesLists[recipeRegistry.maxInputs], validOutputModesLists[recipeRegistry.maxOutputs], - faceTexture = ResourceLocation(metaTileEntityId.namespace, "blocks/${recipeRegistry.category.categoryName}"), - recipeRegistry, workableProvider + metaTileEntityId, + tier, + validInputModesLists[recipeRegistry.maxInputs], + validOutputModesLists[recipeRegistry.maxOutputs], + faceTexture = + ResourceLocation( + metaTileEntityId.namespace, + "blocks/${recipeRegistry.category.categoryName}" + ), + recipeRegistry, + workableProvider ) override val workable = workableProvider(this, recipeRegistry, clayEnergyHolder) override fun createMetaTileEntity(): MetaTileEntity { - return SimpleMachineMetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModes, faceTexture, recipeRegistry, workableProvider) + return SimpleMachineMetaTileEntity( + metaTileEntityId, + tier, + validInputModes, + validOutputModes, + faceTexture, + recipeRegistry, + workableProvider + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SyncedTileEntityBase.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SyncedTileEntityBase.kt index 1f2dffcf2..be0c2061c 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SyncedTileEntityBase.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/SyncedTileEntityBase.kt @@ -23,8 +23,11 @@ abstract class SyncedTileEntityBase : TileEntity(), ISyncedTileEntity { override fun getUpdatePacket(): SPacketUpdateTileEntity? { if (this.updates.isEmpty) return null - return SPacketUpdateTileEntity(pos, 0, - NBTTagCompound().also { it.setTag("d", this.updates.dumpToNbt()) }) + return SPacketUpdateTileEntity( + pos, + 0, + NBTTagCompound().also { it.setTag("d", this.updates.dumpToNbt()) } + ) } override fun onDataPacket(net: NetworkManager, pkt: SPacketUpdateTileEntity) { @@ -50,4 +53,4 @@ abstract class SyncedTileEntityBase : TileEntity(), ISyncedTileEntity { receiveInitialSyncData(PacketBuffer(Unpooled.wrappedBuffer(tag.getByteArray("d")))) super.handleUpdateTag(tag) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/WorkableMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/WorkableMetaTileEntity.kt index c42b857ce..ba71bff0d 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/WorkableMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/WorkableMetaTileEntity.kt @@ -31,10 +31,26 @@ abstract class WorkableMetaTileEntity( val recipeRegistry: RecipeRegistry<*>, val inputSize: Int = recipeRegistry.maxInputs, val outputSize: Int = recipeRegistry.maxOutputs, -) : MetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModes, recipeRegistry.category.categoryName) { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModes, + validOutputModes, + recipeRegistry.category.categoryName + ) { - constructor(metaTileEntityId: ResourceLocation, tier: ITier, recipeRegistry: RecipeRegistry<*>) - : this(metaTileEntityId, tier, validInputModesLists[recipeRegistry.maxInputs], validOutputModesLists[recipeRegistry.maxOutputs], recipeRegistry) + constructor( + metaTileEntityId: ResourceLocation, + tier: ITier, + recipeRegistry: RecipeRegistry<*> + ) : this( + metaTileEntityId, + tier, + validInputModesLists[recipeRegistry.maxInputs], + validOutputModesLists[recipeRegistry.maxOutputs], + recipeRegistry + ) override val importItems = NotifiableItemStackHandler(this, inputSize, this, false) override val exportItems = NotifiableItemStackHandler(this, outputSize, this, true) @@ -57,46 +73,61 @@ abstract class WorkableMetaTileEntity( } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - val slotsAndProgressBar = Row() - .widthRel(0.7f).height(26) - .align(Alignment.Center) - .child(workable.getProgressBar(syncManager).align(Alignment.Center)) + val slotsAndProgressBar = + Row() + .widthRel(0.7f) + .height(26) + .align(Alignment.Center) + .child(workable.getProgressBar(syncManager).align(Alignment.Center)) if (importItems.slots == 1) { - slotsAndProgressBar.child(largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) - .align(Alignment.CenterLeft)) + slotsAndProgressBar.child( + largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) + .align(Alignment.CenterLeft) + ) } else if (importItems.slots == 2) { syncManager.registerSlotGroup("input_inv", 1) slotsAndProgressBar.child( SlotGroupWidget.builder() - .matrix("II").key('I') { index -> - ItemSlot().slot( - SyncHandlers.itemSlot(importItems, index) - .slotGroup("input_inv")) + .matrix("II") + .key('I') { index -> + ItemSlot() + .slot(SyncHandlers.itemSlot(importItems, index).slotGroup("input_inv")) .apply { - if (index == 0) background(ClayGuiTextures.IMPORT_1_SLOT) else background(ClayGuiTextures.IMPORT_2_SLOT) - }} + if (index == 0) background(ClayGuiTextures.IMPORT_1_SLOT) + else background(ClayGuiTextures.IMPORT_2_SLOT) + } + } .build() - .align(Alignment.CenterLeft)) + .align(Alignment.CenterLeft) + ) } if (exportItems.slots == 1) { slotsAndProgressBar.child( - largeSlot(SyncHandlers.itemSlot(exportItems, 0) - .singletonSlotGroup() - .accessibility(false, true) - ).align(Alignment.CenterRight)) + largeSlot( + SyncHandlers.itemSlot(exportItems, 0) + .singletonSlotGroup() + .accessibility(false, true) + ) + .align(Alignment.CenterRight) + ) } else if (exportItems.slots == 2) { syncManager.registerSlotGroup("output_inv", 1) slotsAndProgressBar.child( SlotGroupWidget.builder() - .matrix("II").key('I') { index -> - ItemSlot().slot( - SyncHandlers.itemSlot(exportItems, index) - .accessibility(false, true) - .slotGroup("output_inv")) + .matrix("II") + .key('I') { index -> + ItemSlot() + .slot( + SyncHandlers.itemSlot(exportItems, index) + .accessibility(false, true) + .slotGroup("output_inv") + ) .apply { - if (index == 0) background(ClayGuiTextures.EXPORT_1_SLOT) else background(ClayGuiTextures.EXPORT_2_SLOT) - }} + if (index == 0) background(ClayGuiTextures.EXPORT_1_SLOT) + else background(ClayGuiTextures.EXPORT_2_SLOT) + } + } .build() .align(Alignment.CenterRight) ) @@ -104,18 +135,31 @@ abstract class WorkableMetaTileEntity( return super.buildMainParentWidget(syncManager) .child(slotsAndProgressBar.align(Alignment.Center)) - .child(clayEnergyHolder.createCeTextWidget(syncManager) - .debugName("CE Text") - .bottom(12).left(0)) - .child(clayEnergyHolder.createSlotWidget() - .debugName("CE Slot") - .align(Alignment.BottomRight)) - .childIf(tier.numeric < 3, ButtonWidget() - .size(16, 16).align(Alignment.BottomCenter) - .overlay(ClayGuiTextures.CE_BUTTON) - .hoverOverlay(ClayGuiTextures.CE_BUTTON_HOVERED) - .syncHandler(InteractionSyncHandler().setOnMousePressed { - clayEnergyHolder.addEnergy(ClayEnergy(1)) - })) + .child( + clayEnergyHolder + .createCeTextWidget(syncManager) + .debugName("CE Text") + .bottom(12) + .left(0) + ) + .child( + clayEnergyHolder + .createSlotWidget() + .debugName("CE Slot") + .align(Alignment.BottomRight) + ) + .childIf( + tier.numeric < 3, + ButtonWidget() + .size(16, 16) + .align(Alignment.BottomCenter) + .overlay(ClayGuiTextures.CE_BUTTON) + .hoverOverlay(ClayGuiTextures.CE_BUTTON_HOVERED) + .syncHandler( + InteractionSyncHandler().setOnMousePressed { + clayEnergyHolder.addEnergy(ClayEnergy(1)) + } + ) + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IMarkDirty.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IMarkDirty.kt index 3c4609caa..b3e7cfa94 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IMarkDirty.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IMarkDirty.kt @@ -2,4 +2,4 @@ package com.github.trc.clayium.api.metatileentity.interfaces interface IMarkDirty { fun markDirty() -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/ISyncedTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/ISyncedTileEntity.kt index a064a6ae5..5891f6888 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/ISyncedTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/ISyncedTileEntity.kt @@ -5,8 +5,10 @@ import net.minecraft.network.PacketBuffer interface ISyncedTileEntity { fun writeInitialSyncData(buf: PacketBuffer) + fun receiveInitialSyncData(buf: PacketBuffer) fun writeCustomData(discriminator: Int, dataWriter: PacketBuffer.() -> Unit) + fun receiveCustomData(discriminator: Int, buf: PacketBuffer) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IWorldObject.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IWorldObject.kt index 1c7f2db19..e21ef321e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IWorldObject.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/interfaces/IWorldObject.kt @@ -6,4 +6,4 @@ import net.minecraft.world.World interface IWorldObject : IMarkDirty { val worldObj: World? val position: BlockPos? -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayBlastFurnaceMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayBlastFurnaceMetaTileEntity.kt index 59d7ec969..06c16f222 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayBlastFurnaceMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayBlastFurnaceMetaTileEntity.kt @@ -18,20 +18,31 @@ import kotlin.let class ClayBlastFurnaceMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : WorkableMetaTileEntity(metaTileEntityId, tier, CRecipes.CLAY_BLAST_FURNACE,) { +) : + WorkableMetaTileEntity( + metaTileEntityId, + tier, + CRecipes.CLAY_BLAST_FURNACE, + ) { private val multiblockLogic = MultiblockLogic(this, ::checkStructure) - //todo: fix these code duplication? + // todo: fix these code duplication? fun getFaceInvalid(): ResourceLocation = clayiumId("blocks/blastfurnace") + fun getFaceValid() = clayiumId("blocks/blastfurnace_1") - override val faceTexture get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() - override val requiredTextures get() = listOf(getFaceValid(), getFaceInvalid()) + + override val faceTexture + get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() + + override val requiredTextures + get() = listOf(getFaceValid(), getFaceInvalid()) override val importItems = NotifiableItemStackHandler(this, 2, this, isExport = false) override val exportItems = NotifiableItemStackHandler(this, 2, this, isExport = true) override val itemInventory = ItemHandlerProxy(importItems, exportItems) - override val workable: MultiblockRecipeLogic = MultiblockRecipeLogic(this, recipeRegistry, multiblockLogic) + override val workable: MultiblockRecipeLogic = + MultiblockRecipeLogic(this, recipeRegistry, multiblockLogic) private fun checkStructure(handler: MultiblockLogic): StructureValidationResult { val world = world @@ -61,11 +72,10 @@ class ClayBlastFurnaceMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(multiblockLogic.tierTextWidget(syncManager) - .align(Alignment.BottomCenter)) + .child(multiblockLogic.tierTextWidget(syncManager).align(Alignment.BottomCenter)) } override fun createMetaTileEntity(): MetaTileEntity { return ClayBlastFurnaceMetaTileEntity(metaTileEntityId, tier) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayReactorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayReactorMetaTileEntity.kt index f833eda73..278db3520 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayReactorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ClayReactorMetaTileEntity.kt @@ -27,16 +27,21 @@ import net.minecraftforge.common.capabilities.Capability class ClayReactorMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -): WorkableMetaTileEntity(metaTileEntityId, tier, CRecipes.CLAY_REACTOR), IClayLaserAcceptor { +) : WorkableMetaTileEntity(metaTileEntityId, tier, CRecipes.CLAY_REACTOR), IClayLaserAcceptor { private val multiblockLogic = MultiblockLogic(this, ::checkStructure) var laser: ClayLaser? = null private set fun getFaceInvalid() = clayiumId("blocks/reactor") + fun getFaceValid() = clayiumId("blocks/reactor_1") - override val faceTexture get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() - override val requiredTextures get() = listOf(getFaceValid(), getFaceInvalid()) + + override val faceTexture + get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() + + override val requiredTextures + get() = listOf(getFaceValid(), getFaceInvalid()) private fun checkStructure(handler: MultiblockLogic): StructureValidationResult { val world = world ?: return StructureValidationResult.Invalid @@ -48,7 +53,8 @@ class ClayReactorMetaTileEntity( for (zz in 0..2) { val relPos = handler.getControllerRelativeCoord(controllerPos, xx, yy, zz) if (yy == 1 && xx == 0 && zz == 1) { - val laserProxy = getLaserProxy(relPos) ?: return StructureValidationResult.Invalid + val laserProxy = + getLaserProxy(relPos) ?: return StructureValidationResult.Invalid mbParts.add(laserProxy) tiers.add(laserProxy.tier) } @@ -81,10 +87,19 @@ class ClayReactorMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { syncManager.syncValue("clayLaser", ClayLaserSyncValue(::laser, ::laser::set)) return super.buildMainParentWidget(syncManager) - .child(IKey.dynamic { I18n.format("gui.clayium.laser_energy", UtilLocale.laserNumeral(this.laser?.energy?.toLong() ?: 0L)) }.asWidgetResizing() - .pos(102, 53)) - .child(multiblockLogic.tierTextWidget(syncManager) - .alignX(Alignment.Center.x).bottom(12)) + .child( + IKey.dynamic { + I18n.format( + "gui.clayium.laser_energy", + UtilLocale.laserNumeral(this.laser?.energy?.toLong() ?: 0L) + ) + } + .asWidgetResizing() + .pos(102, 53) + ) + .child( + multiblockLogic.tierTextWidget(syncManager).alignX(Alignment.Center.x).bottom(12) + ) } override fun acceptLaser(irradiatedSide: EnumFacing, laser: ClayLaser?) { @@ -98,10 +113,14 @@ class ClayReactorMetaTileEntity( return super.getCapability(capability, facing) } - private inner class ClayReactorRecipeLogic : MultiblockRecipeLogic(this@ClayReactorMetaTileEntity, - CRecipes.CLAY_REACTOR, multiblockLogic) { + private inner class ClayReactorRecipeLogic : + MultiblockRecipeLogic( + this@ClayReactorMetaTileEntity, + CRecipes.CLAY_REACTOR, + multiblockLogic + ) { override fun getProgressPerTick(): Long { return 1L + (laser?.energy ?: 0.0).toLong() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/IMultiblockPart.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/IMultiblockPart.kt index 1475c86b2..f4ee590f1 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/IMultiblockPart.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/IMultiblockPart.kt @@ -8,6 +8,8 @@ interface IMultiblockPart { val isAttachedToMultiblock: Boolean fun addToMultiblock(controller: MetaTileEntity) + fun removeFromMultiblock(controller: MetaTileEntity) + fun canPartShare() = true -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/LaserProxyMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/LaserProxyMetaTileEntity.kt index da115fc47..5e25d6228 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/LaserProxyMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/LaserProxyMetaTileEntity.kt @@ -35,19 +35,28 @@ class LaserProxyMetaTileEntity( override fun linkTo(target: MetaTileEntity) { super.linkTo(target) if (this.laser != null) { - target.getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, this.frontFacing.opposite) + target + .getCapability( + ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, + this.frontFacing.opposite + ) ?.acceptLaser(this.frontFacing.opposite, this.laser) } } override fun unlink() { super.unlink() - this.target?.getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, this.frontFacing.opposite) + this.target + ?.getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, this.frontFacing.opposite) ?.acceptLaser(this.frontFacing.opposite, null) } override fun canLink(target: MetaTileEntity): Boolean { - return super.canLink(target) && target.getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, this.frontFacing.opposite) != null + return super.canLink(target) && + target.getCapability( + ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, + this.frontFacing.opposite + ) != null } override fun createMetaTileEntity(): MetaTileEntity { @@ -55,6 +64,7 @@ class LaserProxyMetaTileEntity( } override fun canOpenGui() = false + override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): Nothing { throw UnsupportedOperationException() } @@ -62,21 +72,35 @@ class LaserProxyMetaTileEntity( override fun acceptLaser(irradiatedSide: EnumFacing, laser: ClayLaser?) { if (irradiatedSide == this.frontFacing) { this.laser = laser - this.target?.getCapability(ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, this.frontFacing.opposite) + this.target + ?.getCapability( + ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR, + this.frontFacing.opposite + ) ?.acceptLaser(this.frontFacing.opposite, laser) } } - override fun onToolClick(toolType: IConfigurationTool.ToolType, player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) { + override fun onToolClick( + toolType: IConfigurationTool.ToolType, + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ) { super.onToolClick(toolType, player, hand, clickedSide, hitX, hitY, hitZ) - //todo onFrontFacing set + // todo onFrontFacing set this.laser = null } override fun getCapability(capability: Capability, facing: EnumFacing?): T? { - if (capability == ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR && facing == this.frontFacing) { + if ( + capability == ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR && facing == this.frontFacing + ) { return ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR.cast(this) } return super.getCapability(capability, facing) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/MultiblockLogic.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/MultiblockLogic.kt index 8f44c5119..b0b669b0f 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/MultiblockLogic.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/MultiblockLogic.kt @@ -57,8 +57,13 @@ class MultiblockLogic( structureFormed = true this.multiblockParts.addAll(result.parts) this.multiblockParts.forEach { it.addToMultiblock(metaTileEntity) } - val tierNums = listOf(result.tiers.map { it.numeric }, result.parts.map { it.tier.numeric }).flatten() - .toIntArray() + val tierNums = + listOf( + result.tiers.map { it.numeric }, + result.parts.map { it.tier.numeric } + ) + .flatten() + .toIntArray() this.recipeLogicTier = calculateStructureTier(tierNums) writeStructureValidity(true) } @@ -74,28 +79,46 @@ class MultiblockLogic( val metaTileEntity = world.getMetaTileEntity(pos) if (metaTileEntity == this.metaTileEntity) return BlockValidationResult.Matched(null) - if (metaTileEntity is IMultiblockPart) return BlockValidationResult.MultiblockPart(metaTileEntity) + if (metaTileEntity is IMultiblockPart) + return BlockValidationResult.MultiblockPart(metaTileEntity) val block = world.getBlockState(pos).block - if (block is BlockMachineHull) return BlockValidationResult.Matched(block.getTier(world, pos)) + if (block is BlockMachineHull) + return BlockValidationResult.Matched(block.getTier(world, pos)) return BlockValidationResult.Invalid } - fun getControllerRelativeCoord(controllerPos: BlockPos, right: Int, up: Int, backwards: Int): BlockPos { + fun getControllerRelativeCoord( + controllerPos: BlockPos, + right: Int, + up: Int, + backwards: Int + ): BlockPos { val frontFacing = metaTileEntity.frontFacing val relRight = RelativeDirection.RIGHT.getActualFacing(frontFacing) val relUp = RelativeDirection.UP.getActualFacing(frontFacing) val relBackwards = RelativeDirection.BACK.getActualFacing(frontFacing) return BlockPos( - controllerPos.x + relRight.xOffset * right + relUp.xOffset * up + relBackwards.xOffset * backwards, - controllerPos.y + relRight.yOffset * right + relUp.yOffset * up + relBackwards.yOffset * backwards, - controllerPos.z + relRight.zOffset * right + relUp.zOffset * up + relBackwards.zOffset * backwards, + controllerPos.x + + relRight.xOffset * right + + relUp.xOffset * up + + relBackwards.xOffset * backwards, + controllerPos.y + + relRight.yOffset * right + + relUp.yOffset * up + + relBackwards.yOffset * backwards, + controllerPos.z + + relRight.zOffset * right + + relUp.zOffset * up + + relBackwards.zOffset * backwards, ) } private fun calculateStructureTier(partTiers: IntArray): Int { var a = 0.0 - for (tier in partTiers) { a += 2.0.pow(16 - tier) } + for (tier in partTiers) { + a += 2.0.pow(16 - tier) + } a /= partTiers.size return max(floor(16.0 - floor(ln(a) / ln(2.0) + 0.5)), 0.0).toInt() } @@ -127,18 +150,26 @@ class MultiblockLogic( } fun tierTextWidget(syncManager: GuiSyncManager): TextWidget { - syncManager.syncValue("multiblock_tier", SyncHandlers.intNumber({ recipeLogicTier }, { recipeLogicTier = it })) - return IKey.dynamic { I18n.format("tooltip.clayium.tier", recipeLogicTier) }.asWidgetResizing() + syncManager.syncValue( + "multiblock_tier", + SyncHandlers.intNumber({ recipeLogicTier }, { recipeLogicTier = it }) + ) + return IKey.dynamic { I18n.format("tooltip.clayium.tier", recipeLogicTier) } + .asWidgetResizing() } sealed interface BlockValidationResult { object Invalid : BlockValidationResult + data class Matched(val tier: ITier?) : BlockValidationResult + data class MultiblockPart(val part: IMultiblockPart) : BlockValidationResult } sealed interface StructureValidationResult { object Invalid : StructureValidationResult - data class Valid(val parts: Collection, val tiers: Collection) : StructureValidationResult + + data class Valid(val parts: Collection, val tiers: Collection) : + StructureValidationResult } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ProxyMetaTileEntityBase.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ProxyMetaTileEntityBase.kt index 5ab201476..02e6822a1 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ProxyMetaTileEntityBase.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/multiblock/ProxyMetaTileEntityBase.kt @@ -28,25 +28,26 @@ abstract class ProxyMetaTileEntityBase( metaTileEntityId: ResourceLocation, tier: ITier, translationKey: String, -) : MetaTileEntity( - metaTileEntityId, tier, onlyNoneList, onlyNoneList, translationKey -), IMultiblockPart, ISynchronizedInterface { +) : + MetaTileEntity(metaTileEntityId, tier, onlyNoneList, onlyNoneList, translationKey), + IMultiblockPart, + ISynchronizedInterface { final override var isAttachedToMultiblock = false private set private var teAccess: TileEntityAccess? = null - /** - * only available on the server side. - */ + /** only available on the server side. */ override val target: MetaTileEntity? get() = (teAccess?.getIfLoaded() as? MetaTileEntityHolder)?.metaTileEntity final override var targetPos: BlockPos? = null private set + final override var targetDimensionId: Int = -1 private set + final override var targetItemStack: ItemStack = ItemStack.EMPTY protected var hasSynchroParts = false @@ -110,7 +111,14 @@ abstract class ProxyMetaTileEntityBase( } } - override fun onRightClick(player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onRightClick( + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { if (super.onRightClick(player, hand, clickedSide, hitX, hitY, hitZ)) { return true } else if (!this.hasSynchroParts) { @@ -139,9 +147,7 @@ abstract class ProxyMetaTileEntityBase( this.unlink() } - /** - * check if synchronization with a Synchronizer Item is allowed. - */ + /** check if synchronization with a Synchronizer Item is allowed. */ protected open fun canSynchronize() = hasSynchroParts final override fun synchronize(pos: BlockPos, dimensionId: Int): Boolean { @@ -171,8 +177,8 @@ abstract class ProxyMetaTileEntityBase( } /** - * called when a player attempts to establish a link using a synchronizer. - * not called when validating the multiblock structure. + * called when a player attempts to establish a link using a synchronizer. not called when + * validating the multiblock structure. */ @MustBeInvokedByOverriders open fun canLink(target: MetaTileEntity): Boolean { @@ -197,9 +203,7 @@ abstract class ProxyMetaTileEntityBase( } private fun writeTargetRemoved() { - writeCustomData(INTERFACE_SYNC_MIMIC_TARGET) { - writeBoolean(false) - } + writeCustomData(INTERFACE_SYNC_MIMIC_TARGET) { writeBoolean(false) } } override fun receiveCustomData(discriminator: Int, buf: PacketBuffer) { @@ -227,4 +231,4 @@ abstract class ProxyMetaTileEntityBase( } return super.getCapability(capability, facing) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteManager.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteManager.kt index 03c687f59..13d12d66e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteManager.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteManager.kt @@ -11,6 +11,7 @@ class CMteManager { /** * Gets the registry for the given modId. + * * @return The registry, or null if it doesn't exist */ fun getRegistry(modId: String): CMteRegistry { @@ -28,8 +29,9 @@ class CMteManager { /** * Creates a new MetaTileEntity registry for the given modId. - * @throws IllegalArgumentException If a registry for the modId already exists + * * @return The created registry + * @throws IllegalArgumentException If a registry for the modId already exists */ fun createRegistry(modId: String): CMteRegistry { val existing = modId2Registry[modId] diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteRegistry.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteRegistry.kt index 96c6f7bc6..4bd654c36 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/registry/CMteRegistry.kt @@ -16,21 +16,30 @@ class CMteRegistry( ) : CRegistry(Short.MAX_VALUE.toInt()) { val blockMachine by lazy { - if (!Loader.instance().hasReachedState(LoaderState.PREINITIALIZATION)) throw IllegalStateException("Too early to access blockMachine") + if (!Loader.instance().hasReachedState(LoaderState.PREINITIALIZATION)) + throw IllegalStateException("Too early to access blockMachine") BlockMachine().apply { // todo: datafix? - registryName = if (modId == MOD_ID) clayiumId("machine") else ResourceLocation(modId, "clayium_machine") + registryName = + if (modId == MOD_ID) clayiumId("machine") + else ResourceLocation(modId, "clayium_machine") } } - val itemBlockMachine by lazy { ItemBlockMachine(blockMachine).apply { - registryName = if (modId == MOD_ID) clayiumId("machine") else ResourceLocation(modId, "clayium_machine") - } } + val itemBlockMachine by lazy { + ItemBlockMachine(blockMachine).apply { + registryName = + if (modId == MOD_ID) clayiumId("machine") + else ResourceLocation(modId, "clayium_machine") + } + } override fun register(id: Int, key: ResourceLocation, value: MetaTileEntity) { if (key.namespace != modId) { - throw IllegalArgumentException("Cannot register a MetaTileEntity to another mod's registry") + throw IllegalArgumentException( + "Cannot register a MetaTileEntity to another mod's registry" + ) } super.register(id, key, value) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/trait/AutoIoHandler.kt b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/trait/AutoIoHandler.kt index 7313862e4..bb4e9d85e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/metatileentity/trait/AutoIoHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/metatileentity/trait/AutoIoHandler.kt @@ -20,8 +20,12 @@ abstract class AutoIoHandler( tier: Int = metaTileEntity.tier.numeric, ) : MTETrait(metaTileEntity, traitName) { - protected val coolTime = if (isBuffer) ConfigTierBalance.bufferInterval[tier] else ConfigTierBalance.machineInterval[tier] - protected val amountPerAction = if (isBuffer) ConfigTierBalance.bufferAmount[tier] else ConfigTierBalance.machineAmount[tier] + protected val coolTime = + if (isBuffer) ConfigTierBalance.bufferInterval[tier] + else ConfigTierBalance.machineInterval[tier] + protected val amountPerAction = + if (isBuffer) ConfigTierBalance.bufferAmount[tier] + else ConfigTierBalance.machineAmount[tier] protected var ticked = 0 @@ -37,21 +41,34 @@ abstract class AutoIoHandler( } } - protected open fun isImporting(side: EnumFacing): Boolean = metaTileEntity.getInput(side) != MachineIoMode.NONE - protected open fun isExporting(side: EnumFacing): Boolean = metaTileEntity.getOutput(side) != MachineIoMode.NONE + protected open fun isImporting(side: EnumFacing): Boolean = + metaTileEntity.getInput(side) != MachineIoMode.NONE - protected open fun getImportItems(side: EnumFacing): IItemHandler? = metaTileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) - protected open fun getExportItems(side: EnumFacing): IItemHandler? = metaTileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) + protected open fun isExporting(side: EnumFacing): Boolean = + metaTileEntity.getOutput(side) != MachineIoMode.NONE + + protected open fun getImportItems(side: EnumFacing): IItemHandler? = + metaTileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) + + protected open fun getExportItems(side: EnumFacing): IItemHandler? = + metaTileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) protected open fun importFromNeighbors() { var remainingImport = amountPerAction for (side in EnumFacing.entries) { if (remainingImport > 0 && isImporting(side)) { - remainingImport = transferItemStack( - from = metaTileEntity.getNeighbor(side)?.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) ?: continue, - to = getImportItems(side) ?: continue, - amount = remainingImport, - ) + remainingImport = + transferItemStack( + from = + metaTileEntity + .getNeighbor(side) + ?.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) ?: continue, + to = getImportItems(side) ?: continue, + amount = remainingImport, + ) } } } @@ -60,11 +77,18 @@ abstract class AutoIoHandler( var remainingExport = amountPerAction for (side in EnumFacing.entries) { if (remainingExport > 0 && isExporting(side)) { - remainingExport = transferItemStack( - from = getExportItems(side) ?: continue, - to = metaTileEntity.getNeighbor(side)?.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) ?: continue, - amount = remainingExport, - ) + remainingExport = + transferItemStack( + from = getExportItems(side) ?: continue, + to = + metaTileEntity + .getNeighbor(side) + ?.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) ?: continue, + amount = remainingExport, + ) } } } @@ -73,12 +97,12 @@ abstract class AutoIoHandler( from: IItemHandler, to: IItemHandler, amount: Int, - ) : Int { + ): Int { var remainingWork = amount for (i in 0.. 10.0) rawOcFactor / accelerationFactor else 1.0 @@ -27,6 +25,7 @@ class OverclockHandler( var accelerationFactor = 1.0 private set + var compensatedFactor = 1.0 private set @@ -47,7 +46,11 @@ class OverclockHandler( val neighborState = metaTileEntity.getNeighborBlockState(side) ?: continue val neighboringBlock = neighborState.block if (neighboringBlock is IOverclockerBlock) { - value *= (neighboringBlock as IOverclockerBlock).getOverclockFactor(world, pos.offset(side)) + value *= + (neighboringBlock as IOverclockerBlock).getOverclockFactor( + world, + pos.offset(side) + ) } } return value @@ -58,4 +61,4 @@ class OverclockHandler( rawOcFactor = buf.readDouble() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/network/PacketDataList.kt b/src/main/kotlin/com/github/trc/clayium/api/network/PacketDataList.kt index 876d15bcb..325af8556 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/network/PacketDataList.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/network/PacketDataList.kt @@ -32,4 +32,4 @@ class PacketDataList { this.discriminators.fill(0) return listTag } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPan.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPan.kt index e9bf817a4..96adb1ffe 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPan.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPan.kt @@ -5,4 +5,4 @@ import com.github.trc.clayium.api.unification.stack.ItemAndMeta interface IPan { fun getDuplicationEntries(): Map -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanAdapter.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanAdapter.kt index b2d5d5300..803e0b422 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanAdapter.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanAdapter.kt @@ -2,4 +2,4 @@ package com.github.trc.clayium.api.pan interface IPanAdapter { fun getEntries(): Set -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanCable.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanCable.kt index 39afe7e67..275c0231f 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanCable.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanCable.kt @@ -6,11 +6,12 @@ import net.minecraft.world.IBlockAccess fun IBlockAccess.isPanCable(pos: BlockPos): Boolean { // Forge Multipart support? - return getBlockState(pos).block is IPanCable || getTileEntity(pos)?.getCapability(ClayiumTileCapabilities.PAN_CABLE, null) != null + return getBlockState(pos).block is IPanCable || + getTileEntity(pos)?.getCapability(ClayiumTileCapabilities.PAN_CABLE, null) != null } interface IPanCable { companion object { val INSTANCE = object : IPanCable {} } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipe.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipe.kt index 4cd31e3b3..ebe3c73c2 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipe.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipe.kt @@ -8,4 +8,4 @@ interface IPanRecipe { val ingredients: List val results: List val requiredClayEnergy: ClayEnergy -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipeFactory.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipeFactory.kt index 087c3f394..17f4688a3 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipeFactory.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanRecipeFactory.kt @@ -5,16 +5,20 @@ import net.minecraft.item.ItemStack import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockAccess -/** - * Implement this in [net.minecraft.block.Block] to provide a Recipe for PAN. - */ +/** Implement this in [net.minecraft.block.Block] to provide a Recipe for PAN. */ interface IPanRecipeFactory { /** * This method is called from a PAN Adapter that this block is neighboring to. + * * @param world the world that the PAN Adapter is in. * @param pos the position of this block. * @param stacks the inventory of the PAN Adapter. */ - fun getEntry(world: IBlockAccess, pos: BlockPos, stacks: List, - laserEnergy: Double, laserCostPerTick: ClayEnergy): IPanRecipe? -} \ No newline at end of file + fun getEntry( + world: IBlockAccess, + pos: BlockPos, + stacks: List, + laserEnergy: Double, + laserCostPerTick: ClayEnergy + ): IPanRecipe? +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanUser.kt b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanUser.kt index 461eb4eb3..1cafc0593 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/pan/IPanUser.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/pan/IPanUser.kt @@ -2,5 +2,6 @@ package com.github.trc.clayium.api.pan interface IPanUser { fun setNetwork(network: IPan) + fun resetNetwork() -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/recipe/IRecipeProvider.kt b/src/main/kotlin/com/github/trc/clayium/api/recipe/IRecipeProvider.kt index 8445989bf..49746236e 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/recipe/IRecipeProvider.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/recipe/IRecipeProvider.kt @@ -3,15 +3,13 @@ package com.github.trc.clayium.api.recipe import com.github.trc.clayium.common.recipe.Recipe import net.minecraft.item.ItemStack -/** - * Recipe search logic for [com.github.trc.clayium.api.capability.impl.AbstractRecipeLogic]. - */ +/** Recipe search logic for [com.github.trc.clayium.api.capability.impl.AbstractRecipeLogic]. */ interface IRecipeProvider { - val jeiCategories get() = listOfNotNull(jeiCategory) - /** - * null for disable JEI page for this logic. - */ + val jeiCategories + get() = listOfNotNull(jeiCategory) + + /** null for disable JEI page for this logic. */ val jeiCategory: String? fun searchRecipe(machineTier: Int, inputs: List): Recipe? -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/OreDictUnifier.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/OreDictUnifier.kt index 99a3f65a7..bc7744c9a 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/OreDictUnifier.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/OreDictUnifier.kt @@ -26,4 +26,4 @@ object OreDictUnifier : IOreDictUnifier { override fun getAll(oreDict: String, amount: Int): List { return delegate.getAll(oreDict, amount) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterial.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterial.kt index bd44879e7..2cb89f2e3 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterial.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterial.kt @@ -2,10 +2,7 @@ package com.github.trc.clayium.api.unification.material import com.github.trc.clayium.api.ClayiumApi -/** - * has a name only. - * used for registering other-mod material recipes. - */ +/** has a name only. used for registering other-mod material recipes. */ data class CMarkerMaterial( override val upperCamelName: String, ) : IMaterial { @@ -14,4 +11,4 @@ data class CMarkerMaterial( ClayiumApi.markerMaterials.register(this) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterials.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterials.kt index 97a6845d2..fe2dc3718 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterials.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMarkerMaterials.kt @@ -15,4 +15,4 @@ object CMarkerMaterials { val glass = CMarkerMaterial("Glass") fun init() {} -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterial.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterial.kt index c8044cd0b..fe3fe3eb9 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterial.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterial.kt @@ -11,9 +11,7 @@ import net.minecraft.util.ResourceLocation class CMaterial( val metaItemSubId: Int, - /** - * modid:material_name - */ + /** modid:material_name */ val materialId: ResourceLocation, val properties: CMaterialProperties, override val tier: ITier? = null, @@ -21,7 +19,8 @@ class CMaterial( private val flags: Set = emptySet(), ) : Comparable, IMaterial { - override val upperCamelName: String = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, materialId.path) + override val upperCamelName: String = + CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, materialId.path) val translationKey = "${materialId.namespace}.material.${materialId.path}" override fun compareTo(other: CMaterial): Int { @@ -29,8 +28,11 @@ class CMaterial( } fun hasFlag(flag: CMaterialFlag) = flags.contains(flag) + fun hasProperty(key: CPropertyKey<*>) = properties.hasProperty(key) + fun getProperty(key: CPropertyKey) = properties.getProperty(key) + fun getPropOrNull(key: CPropertyKey) = properties.getPropOrNull(key) override fun toString(): String { @@ -48,10 +50,14 @@ class CMaterial( private var blockAmount = -1 fun tier(tier: Int) = apply { this.tier = ClayTiers.entries[tier] } + fun tier(tier: ITier) = apply { this.tier = tier } + fun colors(vararg colors: Int): Builder { if (colors.isEmpty()) { - CLog.warn("Material.Builder#colors is called, but provided array is empty. Ignoring.") + CLog.warn( + "Material.Builder#colors is called, but provided array is empty. Ignoring." + ) return this } this.colors = colors @@ -61,6 +67,7 @@ class CMaterial( fun blockAmount(amount: Int) = apply { blockAmount = amount } fun ingot() = apply { properties.setProperty(CPropertyKey.INGOT, MaterialProperty.Ingot) } + fun dust() = apply { properties.setProperty(CPropertyKey.DUST, MaterialProperty.Dust) } fun matter(texture: String = "matter"): Builder { @@ -69,60 +76,70 @@ class CMaterial( } fun impureDust(color1: Int, color2: Int, color3: Int): Builder { - properties.setProperty(CPropertyKey.IMPURE_DUST, MaterialProperty.ImpureDust(color1, color2, color3)) + properties.setProperty( + CPropertyKey.IMPURE_DUST, + MaterialProperty.ImpureDust(color1, color2, color3) + ) return this } /** - * Adds a plate item to this material. - * If the material has an ingot, dust, or block property, the plate recipe will be generated with the given parameters. + * Adds a plate item to this material. If the material has an ingot, dust, or block + * property, the plate recipe will be generated with the given parameters. */ fun plate(cePerTick: ClayEnergy, requiredTick: Int, tier: Int): Builder { - properties.setProperty(CPropertyKey.PLATE, MaterialProperty.Plate(cePerTick, requiredTick, tier)) + properties.setProperty( + CPropertyKey.PLATE, + MaterialProperty.Plate(cePerTick, requiredTick, tier) + ) return this } /** - * Adds a clay block to this material. - * automatically set blockAmount to 1. - * @param compressedInto If specified, the compress/condense and inverse recipe will be generated. - * @param energy The energy of this clay. If null, the clay will not be energized (i.e. it can't be used as machine fuel). + * Adds a clay block to this material. automatically set blockAmount to 1. + * + * @param compressedInto If specified, the compress/condense and inverse recipe will be + * generated. + * @param energy The energy of this clay. If null, the clay will not be energized (i.e. it + * can't be used as machine fuel). */ - fun clay(compressionLevel: Int, compressedInto: CMaterial? = null, energy: ClayEnergy? = null): Builder { - properties.setProperty(CPropertyKey.CLAY, Clay(compressionLevel, compressedInto, energy)) + fun clay( + compressionLevel: Int, + compressedInto: CMaterial? = null, + energy: ClayEnergy? = null + ): Builder { + properties.setProperty( + CPropertyKey.CLAY, + Clay(compressionLevel, compressedInto, energy) + ) blockAmount(1) return this } - /** - * Adds a clay smelting recipe and removes a vanilla smelting recipe. - */ + /** Adds a clay smelting recipe and removes a vanilla smelting recipe. */ fun claySmelting(tier: Int, duration: Int): Builder { properties.setProperty(CPropertyKey.CLAY_SMELTING, ClaySmelting(tier, duration)) return this } - /** - * Adds a clay smelting recipe and removes a vanilla smelting recipe. - */ + /** Adds a clay smelting recipe and removes a vanilla smelting recipe. */ fun claySmelting(factor: Double, tier: Int, duration: Int): Builder { properties.setProperty(CPropertyKey.CLAY_SMELTING, ClaySmelting(factor, tier, duration)) return this } - /** - * Adds a blast smelting recipe and removes a vanilla smelting recipe. - */ + /** Adds a blast smelting recipe and removes a vanilla smelting recipe. */ fun blastSmelting(tier: Int, duration: Int): Builder { properties.setProperty(CPropertyKey.BLAST_SMELTING, BlastSmelting(tier, duration)) return this } - /** - * Adds a blast smelting recipe and removes a vanilla smelting recipe. - */ + /** Adds a blast smelting recipe and removes a vanilla smelting recipe. */ fun blastSmelting(factor: Double, tier: Int, duration: Int): Builder { - properties.setProperty(CPropertyKey.BLAST_SMELTING, BlastSmelting(factor, tier, duration)) + properties.setProperty( + CPropertyKey.BLAST_SMELTING, + BlastSmelting(factor, tier, duration) + ) return this } @@ -131,7 +148,7 @@ class CMaterial( return this } - fun build(): CMaterial{ + fun build(): CMaterial { val flags = if (this.flags.isEmpty()) emptySet() else this.flags val material = CMaterial(metaItemSubId, metaItemId, properties, tier, colors, flags) ClayiumApi.materialRegistry.register(metaItemSubId, metaItemId, material) @@ -143,8 +160,12 @@ class CMaterial( } companion object { - inline fun create(metaItemSubId: Int, metaItemId: ResourceLocation, init: Builder.() -> Unit): CMaterial { + inline fun create( + metaItemSubId: Int, + metaItemId: ResourceLocation, + init: Builder.() -> Unit + ): CMaterial { return Builder(metaItemSubId, metaItemId).apply(init).build() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlag.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlag.kt index 95d0f8476..8688fad60 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlag.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlag.kt @@ -1,4 +1,3 @@ package com.github.trc.clayium.api.unification.material -data class CMaterialFlag(val name: String) { -} \ No newline at end of file +data class CMaterialFlag(val name: String) {} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlags.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlags.kt index 78e4aed34..043d63a54 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlags.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialFlags.kt @@ -2,4 +2,4 @@ package com.github.trc.clayium.api.unification.material object CMaterialFlags { val GENERATE_CLAY_PARTS = CMaterialFlag("generate_clay_parts") -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialProperties.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialProperties.kt index 7910d8b63..323dcc48a 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialProperties.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterialProperties.kt @@ -17,7 +17,7 @@ class CMaterialProperties { return key.cast(property) } - fun getPropOrNull(key: CPropertyKey): T? { + fun getPropOrNull(key: CPropertyKey): T? { val property = properties[key] ?: return null return key.cast(property) } @@ -26,4 +26,4 @@ class CMaterialProperties { val property = properties[key] return if (property == null) null else key.cast(property) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterials.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterials.kt index 1ceb5a72c..b085b5e5c 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterials.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CMaterials.kt @@ -7,338 +7,395 @@ import com.github.trc.clayium.api.util.clayiumId object CMaterials { /** 1 - 150 */ - //region Element Materials - val actinium = CMaterial.create(1, clayiumId("actinium")) { - tier(7).colors(0xF5F5F5, 0x0000EB, 0xFFFFFF) - ingot().dust() - } - val aluminum = CMaterial.create(2, clayiumId("aluminum")) { - tier(6) - colors(0xBEC8CA, 0x191919, 0xFFFFFF) - ingot().dust().impureDust(0xBEC8CA, 0x78783C, 0xDCDCDC) - plate(ClayEnergy.milli(1), 20, tier = 4) - claySmelting(0.5, 5, 200) - } - val americium = CMaterial.create(3, clayiumId("americium")) { - tier(11).colors(0xEBEBEB, 0x9B9B9B, 0xEBEBEB) - ingot() - } - val antimony = CMaterial.create(4, clayiumId("antimony")) { - tier(6).colors(0x464646, 0x191919, 0xFFFFFF) - ingot() - } + // region Element Materials + val actinium = + CMaterial.create(1, clayiumId("actinium")) { + tier(7).colors(0xF5F5F5, 0x0000EB, 0xFFFFFF) + ingot().dust() + } + val aluminum = + CMaterial.create(2, clayiumId("aluminum")) { + tier(6) + colors(0xBEC8CA, 0x191919, 0xFFFFFF) + ingot().dust().impureDust(0xBEC8CA, 0x78783C, 0xDCDCDC) + plate(ClayEnergy.milli(1), 20, tier = 4) + claySmelting(0.5, 5, 200) + } + val americium = + CMaterial.create(3, clayiumId("americium")) { + tier(11).colors(0xEBEBEB, 0x9B9B9B, 0xEBEBEB) + ingot() + } + val antimony = + CMaterial.create(4, clayiumId("antimony")) { + tier(6).colors(0x464646, 0x191919, 0xFFFFFF) + ingot() + } val argon = CMaterial.create(5, clayiumId("argon")) {} val arsenic = CMaterial.create(6, clayiumId("arsenic")) {} val astatine = CMaterial.create(7, clayiumId("astatine")) {} - val barium = CMaterial.create(8, clayiumId("barium")) { - tier(7).colors(0x965078, 0x781450, 0xFFFFFF) - ingot().dust() - impureDust(0x965078, 0x78783C, 0xDCDCDC) - blastSmelting(2.0, 7, 1000) - } + val barium = + CMaterial.create(8, clayiumId("barium")) { + tier(7).colors(0x965078, 0x781450, 0xFFFFFF) + ingot().dust() + impureDust(0x965078, 0x78783C, 0xDCDCDC) + blastSmelting(2.0, 7, 1000) + } val berkelium = CMaterial.create(9, clayiumId("berkelium")) {} - val beryllium = CMaterial.create(10, clayiumId("beryllium")) { - tier(9).colors(0xD2F0D2, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xD2F0D2, 0x78783C, 0xDCDCDC) - blastSmelting(6, 500) - } - val bismuth = CMaterial.create(11, clayiumId("bismuth")) { - tier(9).colors(0x467846, 0x191919, 0xFFFFFF) - ingot() - } + val beryllium = + CMaterial.create(10, clayiumId("beryllium")) { + tier(9).colors(0xD2F0D2, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xD2F0D2, 0x78783C, 0xDCDCDC) + blastSmelting(6, 500) + } + val bismuth = + CMaterial.create(11, clayiumId("bismuth")) { + tier(9).colors(0x467846, 0x191919, 0xFFFFFF) + ingot() + } val bohrium = CMaterial.create(12, clayiumId("bohrium")) {} val boron = CMaterial.Builder(13, clayiumId("boron")).build() val bromine = CMaterial.Builder(14, clayiumId("bromine")).build() - val caesium = CMaterial.create(15, clayiumId("caesium")) { - tier(8).colors(0xF5F5F5, 0x969600, 0xFFFFFF) - ingot() - } - val calcium = CMaterial.create(16, clayiumId("calcium")) { - tier(7).colors(0xF0F0F0, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xF0F0F0, 0x78783C, 0xDCDCDC) - blastSmelting(5, 500) - } + val caesium = + CMaterial.create(15, clayiumId("caesium")) { + tier(8).colors(0xF5F5F5, 0x969600, 0xFFFFFF) + ingot() + } + val calcium = + CMaterial.create(16, clayiumId("calcium")) { + tier(7).colors(0xF0F0F0, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xF0F0F0, 0x78783C, 0xDCDCDC) + blastSmelting(5, 500) + } val californium = CMaterial.create(17, clayiumId("californium")) {} - val carbon = CMaterial.create(18, clayiumId("carbon")) { - tier(6).colors(0x0A0A0A, 0x191919, 0x1E1E1E) - ingot().dust() - } + val carbon = + CMaterial.create(18, clayiumId("carbon")) { + tier(6).colors(0x0A0A0A, 0x191919, 0x1E1E1E) + ingot().dust() + } val cadmium = CMaterial.create(19, clayiumId("cadmium")) {} - val cerium = CMaterial.create(20, clayiumId("cerium")) { - tier(8).colors(0x919191, 0x969600, 0xFFFFFF) - ingot() - } + val cerium = + CMaterial.create(20, clayiumId("cerium")) { + tier(8).colors(0x919191, 0x969600, 0xFFFFFF) + ingot() + } val chlorine = CMaterial.create(21, clayiumId("chlorine")) {} - val chromium = CMaterial.create(22, clayiumId("chrome")) { - tier(9).colors(0xF0D2D2, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xF0D2D2, 0x78783C, 0xDCDCDC) - blastSmelting(4.0, 9, 2000) - } - val cobalt = CMaterial.create(23, clayiumId("cobalt")) { - tier(8).colors(0x1E1EE6, 0x191919, 0xFFFFFF) - ingot() - } + val chromium = + CMaterial.create(22, clayiumId("chrome")) { + tier(9).colors(0xF0D2D2, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xF0D2D2, 0x78783C, 0xDCDCDC) + blastSmelting(4.0, 9, 2000) + } + val cobalt = + CMaterial.create(23, clayiumId("cobalt")) { + tier(8).colors(0x1E1EE6, 0x191919, 0xFFFFFF) + ingot() + } val copernicium = CMaterial.create(24, clayiumId("copernicium")) {} - val copper = CMaterial.create(25, clayiumId("copper")) { - tier(8).colors(0xA05A0A, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xA05A0A, 0x78783C, 0xDCDCDC) - } - val curium = CMaterial.create(26, clayiumId("curium")) { - tier(12).colors(0xFFFFFF, 0x9B9B9B, 0xF4F4F4) - ingot() - } + val copper = + CMaterial.create(25, clayiumId("copper")) { + tier(8).colors(0xA05A0A, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xA05A0A, 0x78783C, 0xDCDCDC) + } + val curium = + CMaterial.create(26, clayiumId("curium")) { + tier(12).colors(0xFFFFFF, 0x9B9B9B, 0xF4F4F4) + ingot() + } val darmstadtium = CMaterial.create(27, clayiumId("darmstadtium")) {} val dubnium = CMaterial.create(28, clayiumId("dubnium")) {} val dysprosium = CMaterial.create(29, clayiumId("dysprosium")) {} val einsteinium = CMaterial.create(30, clayiumId("einsteinium")) {} val erbium = CMaterial.create(31, clayiumId("erbium")) {} - val europium = CMaterial.create(32, clayiumId("europium")) { - tier(12).colors(0x919191, 0x373737, 0x919191) - ingot() - } + val europium = + CMaterial.create(32, clayiumId("europium")) { + tier(12).colors(0x919191, 0x373737, 0x919191) + ingot() + } val fermium = CMaterial.create(33, clayiumId("fermium")) {} val flerovium = CMaterial.create(34, clayiumId("flerovium")) {} val fluorine = CMaterial.create(35, clayiumId("fluorine")) {} - val francium = CMaterial.create(36, clayiumId("francium")) { - tier(8).colors(0xF5F5F5, 0x00EB00, 0xFFFFFF) - ingot() - } + val francium = + CMaterial.create(36, clayiumId("francium")) { + tier(8).colors(0xF5F5F5, 0x00EB00, 0xFFFFFF) + ingot() + } val gadolinium = CMaterial.create(37, clayiumId("gadolinium")) {} val gallium = CMaterial.create(38, clayiumId("gallium")) {} val germanium = CMaterial.create(39, clayiumId("germanium")) {} - val gold = CMaterial.create(40, clayiumId("gold")) { - colors(0xFFFF0A, 0x3C3C00, 0xFFFFFF) - dust() - } - val hafnium = CMaterial.create(41, clayiumId("hafnium")) { - tier(7).colors(0xF0D2AA, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xF0D2AA, 0x78783C, 0xDCDCDC) - blastSmelting(6, 500) - } + val gold = + CMaterial.create(40, clayiumId("gold")) { + colors(0xFFFF0A, 0x3C3C00, 0xFFFFFF) + dust() + } + val hafnium = + CMaterial.create(41, clayiumId("hafnium")) { + tier(7).colors(0xF0D2AA, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xF0D2AA, 0x78783C, 0xDCDCDC) + blastSmelting(6, 500) + } val hassium = CMaterial.create(42, clayiumId("hassium")) {} val helium = CMaterial.create(43, clayiumId("helium")) {} val holmium = CMaterial.create(44, clayiumId("holmium")) {} val hydrogen = CMaterial.create(45, clayiumId("hydrogen")) {} val indium = CMaterial.create(46, clayiumId("indium")) {} val iodine = CMaterial.create(47, clayiumId("iodine")) {} - val iridium = CMaterial.create(48, clayiumId("iridium")) { - tier(11).colors(0xF0F0F0, 0xD2D2D2, 0xEBEBEB) - ingot() - } - val iron = CMaterial.create(49, clayiumId("iron")) { - tier(8).colors(0xD8D8D8, 0x353535, 0xFFFFFF) - dust() - impureDust(0xD8D8D8, 0x78783C, 0xDCDCDC) - } + val iridium = + CMaterial.create(48, clayiumId("iridium")) { + tier(11).colors(0xF0F0F0, 0xD2D2D2, 0xEBEBEB) + ingot() + } + val iron = + CMaterial.create(49, clayiumId("iron")) { + tier(8).colors(0xD8D8D8, 0x353535, 0xFFFFFF) + dust() + impureDust(0xD8D8D8, 0x78783C, 0xDCDCDC) + } val krypton = CMaterial.create(50, clayiumId("krypton")) {} - val lanthanum = CMaterial.create(51, clayiumId("lanthanum")) { - tier(8).colors(0x919191, 0xEB0000, 0xFFFFFF) - ingot() - } + val lanthanum = + CMaterial.create(51, clayiumId("lanthanum")) { + tier(8).colors(0x919191, 0xEB0000, 0xFFFFFF) + ingot() + } val lawrencium = CMaterial.create(52, clayiumId("lawrencium")) {} - val lead = CMaterial.create(53, clayiumId("lead")) { - tier(8).colors(0xBEF0D2, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xBEF0D2, 0x78783C, 0xDCDCDC) - } - val lithium = CMaterial.create(54, clayiumId("lithium")) { - tier(6).colors(0xD2D296, 0x787878, 0xFFFFFF) - ingot().dust() - impureDust(0xDCDC96, 0x78783C, 0xDCDCDC) - } + val lead = + CMaterial.create(53, clayiumId("lead")) { + tier(8).colors(0xBEF0D2, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xBEF0D2, 0x78783C, 0xDCDCDC) + } + val lithium = + CMaterial.create(54, clayiumId("lithium")) { + tier(6).colors(0xD2D296, 0x787878, 0xFFFFFF) + ingot().dust() + impureDust(0xDCDC96, 0x78783C, 0xDCDCDC) + } val livermorium = CMaterial.create(55, clayiumId("livermorium")) {} val lutetium = CMaterial.create(56, clayiumId("lutetium")) {} - val magnesium = CMaterial.create(57, clayiumId("magnesium")) { - tier(6).colors(0x96D296, 0x787878, 0xFFFFFF) - ingot().dust() - impureDust(0x96DC96, 0x78783C, 0xDCDCDC) - claySmelting(0.2, 6, 400) - } - val manganese = CMaterial.create(58, clayiumId("manganese")) { - tier(7).colors(0xBEF0F0, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xBEF0F0, 0x78783C, 0xDCDCDC) - blastSmelting(2.0, 7, 1000) - } + val magnesium = + CMaterial.create(57, clayiumId("magnesium")) { + tier(6).colors(0x96D296, 0x787878, 0xFFFFFF) + ingot().dust() + impureDust(0x96DC96, 0x78783C, 0xDCDCDC) + claySmelting(0.2, 6, 400) + } + val manganese = + CMaterial.create(58, clayiumId("manganese")) { + tier(7).colors(0xBEF0F0, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xBEF0F0, 0x78783C, 0xDCDCDC) + blastSmelting(2.0, 7, 1000) + } val meitnerium = CMaterial.create(59, clayiumId("meitnerium")) {} val mendelevium = CMaterial.create(60, clayiumId("mendelevium")) {} val mercury = CMaterial.create(61, clayiumId("mercury")) {} - val molybdenum = CMaterial.create(62, clayiumId("molybdenum")) { - tier(10).colors(0x82A082, 0x191919, 0xFFFFFF) - ingot() - } + val molybdenum = + CMaterial.create(62, clayiumId("molybdenum")) { + tier(10).colors(0x82A082, 0x191919, 0xFFFFFF) + ingot() + } val moscovium = CMaterial.create(63, clayiumId("moscovium")) {} - val neodymium = CMaterial.create(64, clayiumId("neodymium")) { - tier(9).colors(0x919191, 0x009696, 0xFFFFFF) - ingot() - } + val neodymium = + CMaterial.create(64, clayiumId("neodymium")) { + tier(9).colors(0x919191, 0x009696, 0xFFFFFF) + ingot() + } val neon = CMaterial.create(65, clayiumId("neon")) {} - val neptunium = CMaterial.create(66, clayiumId("neptunium")) { - tier(9).colors(0x3232FF, 0x32329B, 0x3232FF) - ingot() - } - val nickel = CMaterial.create(67, clayiumId("nickel")) { - tier(8).colors(0xD2D2F0, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xD2D2F0, 0x78783C, 0xDCDCDC) - claySmelting(0.5, 5, 200) - } + val neptunium = + CMaterial.create(66, clayiumId("neptunium")) { + tier(9).colors(0x3232FF, 0x32329B, 0x3232FF) + ingot() + } + val nickel = + CMaterial.create(67, clayiumId("nickel")) { + tier(8).colors(0xD2D2F0, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xD2D2F0, 0x78783C, 0xDCDCDC) + claySmelting(0.5, 5, 200) + } val nihonium = CMaterial.create(68, clayiumId("nihonium")) {} val niobium = CMaterial.create(69, clayiumId("niobium")) {} val nitrogen = CMaterial.create(70, clayiumId("nitrogen")) {} val nobelium = CMaterial.create(71, clayiumId("nobelium")) {} val oganesson = CMaterial.create(72, clayiumId("oganesson")) {} - val osmium = CMaterial.create(73, clayiumId("osmium")) { - tier(11).colors(0x464696, 0x191919, 0xFFFFFF) - ingot() - } + val osmium = + CMaterial.create(73, clayiumId("osmium")) { + tier(11).colors(0x464696, 0x191919, 0xFFFFFF) + ingot() + } val oxygen = CMaterial.create(74, clayiumId("oxygen")) {} - val palladium = CMaterial.create(75, clayiumId("palladium")) { - tier(9).colors(0x974646, 0x191919, 0xFFFFFF) - ingot() - } - val phosphorus = CMaterial.create(76, clayiumId("phosphorus")) { - tier(6).colors(0xB4B419, 0x9B9B00, 0xCDCD32) - dust() - } - val platinum = CMaterial.create(77, clayiumId("platinum")) { - tier(10).colors(0xF5F5E6, 0x8C8C78, 0xFFFFFF) - ingot() - } - val plutonium = CMaterial.create(78, clayiumId("plutonium")) { - tier(10).colors(0xFF3232, 0x9B3232, 0xFF3232) - ingot() - } + val palladium = + CMaterial.create(75, clayiumId("palladium")) { + tier(9).colors(0x974646, 0x191919, 0xFFFFFF) + ingot() + } + val phosphorus = + CMaterial.create(76, clayiumId("phosphorus")) { + tier(6).colors(0xB4B419, 0x9B9B00, 0xCDCD32) + dust() + } + val platinum = + CMaterial.create(77, clayiumId("platinum")) { + tier(10).colors(0xF5F5E6, 0x8C8C78, 0xFFFFFF) + ingot() + } + val plutonium = + CMaterial.create(78, clayiumId("plutonium")) { + tier(10).colors(0xFF3232, 0x9B3232, 0xFF3232) + ingot() + } val polonium = CMaterial.create(79, clayiumId("polonium")) {} - val potassium = CMaterial.create(80, clayiumId("potassium")) { - tier(7).colors(0xF0F0BE, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xAAAAE6, 0x78783C, 0xDCDCDC) - blastSmelting(5, 500) - } - val praseodymium = CMaterial.create(81, clayiumId("praseodymium")) { - tier(8).colors(0x919191, 0x00EB00, 0xFFFFFF) - ingot() - } - val promethium = CMaterial.create(82, clayiumId("promethium")) { - tier(10).colors(0x919191, 0x0000EB, 0xFFFFFF) - ingot() - } - val protactinium = CMaterial.create(83, clayiumId("protactinium")) { - tier(9).colors(0x323232, 0x191919, 0x323264) - ingot() - } - val radium = CMaterial.create(84, clayiumId("radium")) { - tier(8).colors(0xF5F5F5, 0x009696, 0xFFFFFF) - ingot() - } + val potassium = + CMaterial.create(80, clayiumId("potassium")) { + tier(7).colors(0xF0F0BE, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xAAAAE6, 0x78783C, 0xDCDCDC) + blastSmelting(5, 500) + } + val praseodymium = + CMaterial.create(81, clayiumId("praseodymium")) { + tier(8).colors(0x919191, 0x00EB00, 0xFFFFFF) + ingot() + } + val promethium = + CMaterial.create(82, clayiumId("promethium")) { + tier(10).colors(0x919191, 0x0000EB, 0xFFFFFF) + ingot() + } + val protactinium = + CMaterial.create(83, clayiumId("protactinium")) { + tier(9).colors(0x323232, 0x191919, 0x323264) + ingot() + } + val radium = + CMaterial.create(84, clayiumId("radium")) { + tier(8).colors(0xF5F5F5, 0x009696, 0xFFFFFF) + ingot() + } val radon = CMaterial.create(85, clayiumId("radon")) {} - val rhenium = CMaterial.create(86, clayiumId("rhenium")) { - tier(12).colors(0x464696, 0x191919, 0x32325A) - ingot() - } + val rhenium = + CMaterial.create(86, clayiumId("rhenium")) { + tier(12).colors(0x464696, 0x191919, 0x32325A) + ingot() + } val rhodium = CMaterial.create(87, clayiumId("rhodium")) {} val roentgenium = CMaterial.create(88, clayiumId("roentgenium")) {} - val rubidium = CMaterial.create(89, clayiumId("rubidium")) { - tier(8).colors(0xF5F5F5, 0xEB0000, 0xFFFFFF) - ingot() - } + val rubidium = + CMaterial.create(89, clayiumId("rubidium")) { + tier(8).colors(0xF5F5F5, 0xEB0000, 0xFFFFFF) + ingot() + } val ruthenium = CMaterial.create(90, clayiumId("ruthenium")) {} val rutherfordium = CMaterial.create(91, clayiumId("rutherfordium")) {} - val samarium = CMaterial.create(92, clayiumId("samarium")) { - tier(11).colors(0x919191, 0x960096, 0xFFFFFF) - ingot() - } + val samarium = + CMaterial.create(92, clayiumId("samarium")) { + tier(11).colors(0x919191, 0x960096, 0xFFFFFF) + ingot() + } val scandium = CMaterial.create(93, clayiumId("scandium")) {} val seaborgium = CMaterial.create(94, clayiumId("seaborgium")) {} val selenium = CMaterial.create(95, clayiumId("selenium")) {} - val silicon = CMaterial.create(96, clayiumId("silicon")) { - tier(5) - colors(0x281C28, 0x191919, 0xFFFFFF) - ingot().dust() - plate(ClayEnergy.milli(1), 20, tier = 4) - } - val silver = CMaterial.create(97, clayiumId("silver")) { - tier(9).colors(0xE6E6F5, 0x78788C, 0xFFFFFF) - ingot() - } - val sodium = CMaterial.create(98, clayiumId("sodium")) { - tier(6).colors(0xAAAADE, 0x787878, 0xFFFFFF) - ingot().dust() - impureDust(0xAAAAE6, 0x78783C, 0xDCDCDC) - claySmelting(0.5, 5, 200) - } - val strontium = CMaterial.create(99, clayiumId("strontium")) { - tier(7).colors(0xD2AAF2, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xD2AAF2, 0x78783C, 0xDCDCDC) - blastSmelting(2.0, 7, 1000) - } - val sulfur = CMaterial.create(100, clayiumId("sulfur")) { - tier(6).colors(0xE6E600, 0xCDCD00, 0xFFFF00) - dust() - } - val tantalum = CMaterial.create(101, clayiumId("tantalum")) { - tier(8).colors(0xF0D2AA, 0x191919, 0xF0D296) - ingot() - } + val silicon = + CMaterial.create(96, clayiumId("silicon")) { + tier(5) + colors(0x281C28, 0x191919, 0xFFFFFF) + ingot().dust() + plate(ClayEnergy.milli(1), 20, tier = 4) + } + val silver = + CMaterial.create(97, clayiumId("silver")) { + tier(9).colors(0xE6E6F5, 0x78788C, 0xFFFFFF) + ingot() + } + val sodium = + CMaterial.create(98, clayiumId("sodium")) { + tier(6).colors(0xAAAADE, 0x787878, 0xFFFFFF) + ingot().dust() + impureDust(0xAAAAE6, 0x78783C, 0xDCDCDC) + claySmelting(0.5, 5, 200) + } + val strontium = + CMaterial.create(99, clayiumId("strontium")) { + tier(7).colors(0xD2AAF2, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xD2AAF2, 0x78783C, 0xDCDCDC) + blastSmelting(2.0, 7, 1000) + } + val sulfur = + CMaterial.create(100, clayiumId("sulfur")) { + tier(6).colors(0xE6E600, 0xCDCD00, 0xFFFF00) + dust() + } + val tantalum = + CMaterial.create(101, clayiumId("tantalum")) { + tier(8).colors(0xF0D2AA, 0x191919, 0xF0D296) + ingot() + } val technetium = CMaterial.create(102, clayiumId("technetium")) {} val tellurium = CMaterial.create(103, clayiumId("tellurium")) {} val tennessine = CMaterial.create(104, clayiumId("tennessine")) {} val terbium = CMaterial.create(105, clayiumId("terbium")) {} val thallium = CMaterial.create(106, clayiumId("thallium")) {} - val thorium = CMaterial.create(107, clayiumId("thorium")) { - tier(9).colors(0x323232, 0x191919, 0xC83232) - ingot() - } + val thorium = + CMaterial.create(107, clayiumId("thorium")) { + tier(9).colors(0x323232, 0x191919, 0xC83232) + ingot() + } val thulium = CMaterial.create(108, clayiumId("thulium")) {} - val tin = CMaterial.create(109, clayiumId("tin")) { - tier(7).colors(0xE6E6F0, 0x000000, 0xFFFFFF) - ingot() - } - val titanium = CMaterial.create(110, clayiumId("titanium")) { - tier(8).colors(0xD2F0F0, 0x191919, 0xFFFFFF) - ingot().dust() - impureDust(0xD2F0F0, 0x78783C, 0xDCDCDC) - blastSmelting(4.0, 8, 2000) - } - val tungsten = CMaterial.create(111, clayiumId("tungsten")) { - tier(9).colors(0x1E1E1E, 0x191919, 0xFFFFFF) - ingot() - } - val uranium = CMaterial.create(112, clayiumId("uranium")) { - tier(9).colors(0x32FF32, 0x329B32, 0x32FF32) - ingot() - } - val vanadium = CMaterial.create(113, clayiumId("vanadium")) { - tier(9).colors(0x3C7878, 0x191919, 0xFFFFFF) - ingot() - } + val tin = + CMaterial.create(109, clayiumId("tin")) { + tier(7).colors(0xE6E6F0, 0x000000, 0xFFFFFF) + ingot() + } + val titanium = + CMaterial.create(110, clayiumId("titanium")) { + tier(8).colors(0xD2F0F0, 0x191919, 0xFFFFFF) + ingot().dust() + impureDust(0xD2F0F0, 0x78783C, 0xDCDCDC) + blastSmelting(4.0, 8, 2000) + } + val tungsten = + CMaterial.create(111, clayiumId("tungsten")) { + tier(9).colors(0x1E1E1E, 0x191919, 0xFFFFFF) + ingot() + } + val uranium = + CMaterial.create(112, clayiumId("uranium")) { + tier(9).colors(0x32FF32, 0x329B32, 0x32FF32) + ingot() + } + val vanadium = + CMaterial.create(113, clayiumId("vanadium")) { + tier(9).colors(0x3C7878, 0x191919, 0xFFFFFF) + ingot() + } val xenon = CMaterial.create(114, clayiumId("xenon")) {} val ytterbium = CMaterial.create(115, clayiumId("ytterbium")) {} val yttrium = CMaterial.create(116, clayiumId("yttrium")) {} - val zinc = CMaterial.create(117, clayiumId("zinc")) { - tier(6).colors(0xE6AAAA, 0x787878, 0xFFFFFF) - ingot().dust() - impureDust(0xE6AAAA, 0x78783C, 0xDCDCDC) - claySmelting(0.5, 5, 200) - } - val zirconium = CMaterial.create(118, clayiumId("zirconium")) { - tier(6).colors(0xBEAA7A, 0x787878, 0xFFFFFF) - ingot().dust() - impureDust(0xBEAA7A, 0x78783C, 0xDCDCDC) - claySmelting(0.2, 6, 400) - } - //endregion + val zinc = + CMaterial.create(117, clayiumId("zinc")) { + tier(6).colors(0xE6AAAA, 0x787878, 0xFFFFFF) + ingot().dust() + impureDust(0xE6AAAA, 0x78783C, 0xDCDCDC) + claySmelting(0.5, 5, 200) + } + val zirconium = + CMaterial.create(118, clayiumId("zirconium")) { + tier(6).colors(0xBEAA7A, 0x787878, 0xFFFFFF) + ingot().dust() + impureDust(0xBEAA7A, 0x78783C, 0xDCDCDC) + claySmelting(0.2, 6, 400) + } + // endregion /** 151 - 200 */ - //region Clay Materials + // region Clay Materials val clay: CMaterial val denseClay: CMaterial val compressedClay: CMaterial @@ -352,291 +409,343 @@ object CMaterials { val compressedEnergeticClay5: CMaterial val compressedEnergeticClay6: CMaterial val compressedEnergeticClay7: CMaterial - val octupleEnergyClay: CMaterial = CMaterial.create(164, clayiumId("octuple_energy_clay")) { - tier(12) - colors(0xFFFF00, 0x8C8C8C, 0xFFFFFF) - dust() - clay(13, energy = ClayEnergy.of(100_000_000)) - plate(ClayEnergy.of(10000), 20, tier = 9) - } - //endregion + val octupleEnergyClay: CMaterial = + CMaterial.create(164, clayiumId("octuple_energy_clay")) { + tier(12) + colors(0xFFFF00, 0x8C8C8C, 0xFFFFFF) + dust() + clay(13, energy = ClayEnergy.of(100_000_000)) + plate(ClayEnergy.of(10000), 20, tier = 9) + } + // endregion /** 201 - 300 */ - //region Matters - val antimatter = CMaterial.create(201, clayiumId("antimatter")) { - tier(10) - colors(0x0000EB, 0x000000, 0xFFFFFF) - matter().dust() - plate(ClayEnergy.of(100), 20, tier = 9) - } - val pureAntimatter = CMaterial.create(202, clayiumId("pure_antimatter")) { - tier(11) - colors(0xFF32FF, 0x000000, 0xFFFFFF) - matter().dust() - plate(ClayEnergy.of(100), 20, tier = 9) - } - val pureAntimatter1 = CMaterial.create(203, clayiumId("pure_antimatter1")) { - tier(11).colors(0xC42385, 0x191919, 0xFFFFFF) - matter("matter2") - } - val pureAntimatter2 = CMaterial.create(204, clayiumId("pure_antimatter2")) { - tier(11).colors(0x8E1777, 0x323200, 0xFFFFFF) - matter("matter2") - } - val pureAntimatter3 = CMaterial.create(205, clayiumId("pure_antimatter3")) { - tier(11).colors(0x5E0D45, 0x4B4B00, 0xFFFFFF) - matter("matter3") - } - val pureAntimatter4 = CMaterial.create(206, clayiumId("pure_antimatter4")) { - tier(12).colors(0x32061F, 0x646400, 0xFFFFFF) - matter("matter3") - } - val pureAntimatter5 = CMaterial.create(207, clayiumId("pure_antimatter5")) { - tier(12).colors(0x520829, 0x7D7D00, 0xFFFFFF) - matter("matter4") - } - val pureAntimatter6 = CMaterial.create(208, clayiumId("pure_antimatter6")) { - tier(12).colors(0x6E0727, 0x969600, 0xFFFFFF) - matter("matter4") - } - val pureAntimatter7 = CMaterial.create(209, clayiumId("pure_antimatter7")) { - tier(13).colors(0x840519, 0xAFAF00, 0xFFFFFF) - matter("matter4") - } - val octuplePureAntimatter = CMaterial.create(210, clayiumId("octuple_pure_antimatter")) { - tier(13).colors(0x960000, 0xC8C800, 0xFFFFFF) - matter("matter5").dust() - plate(ClayEnergy.of(100), 20, tier = 9) - } - //endregion - - /** 301 - 500 */ - //region Chemical Materials - val organicClay = CMaterial.create(301, clayiumId("organic_clay")) { - tier(5) - colors(0x8890AD, 0x6A2C2B, 0x92A4B7) - dust() - } - val calciumChloride = CMaterial.create(302, clayiumId("calcium_chloride")) { - dust() - } - val sodiumCarbonate = CMaterial.create(303, clayiumId("sodium_carbonate")) { - dust() - } - val calcareousClay = CMaterial.create(304, clayiumId("calcareous_clay")) { - tier(4) - dust() - } - //endregion - - /** - * Materials composed of anything other than First or higher Degree Materials. - * 501 - 1000 - */ - //region First Degree Materials - val brass = CMaterial.create(501, clayiumId("brass")) { - tier(6).colors(0xBEAA14, 0x000000, 0xFFFFFF) - ingot().dust() - } - val bronze = CMaterial.create(502, clayiumId("bronze")) { - tier(5).colors(0xFA9628, 0x000000, 0xFFFFFF) - ingot().dust() - } - val charcoal = CMaterial.create(503, clayiumId("charcoal")) { - colors(0x141414, 0x191919, 0x503232) - dust() - } - val claySteel = CMaterial.create(504, clayiumId("clay_steel")) { - tier(7) - colors(0x8890AD, 0x191919, 0xFFFFFF) - ingot().dust() - plate(ClayEnergy.milli(1), 60, tier = 4) - blastSmelting(6, 500) - } - val clayium = CMaterial.create(505, clayiumId("clayium")) { - tier(8) - colors(0x5AF0D2, 0x3F4855, 0xFFCDC8) - ingot().dust() - plate(ClayEnergy.milli(1), 120, tier = 4) - blastSmelting(2.0, 7, 1000) - } - val coal = CMaterial.create(506, clayiumId("coal")) { - colors(0x141414, 0x191919, 0x323250) - dust() - } - val graphite = CMaterial.create(507, clayiumId("graphite")) {} - val electrum = CMaterial.create(508, clayiumId("electrum")) { - tier(6).colors(0xE6E69B, 0x787846, 0xFFFFFF) - ingot().dust() - } - val impureGlowStone = CMaterial.create(509, clayiumId("impure_glowstone")) { - colors(0x979746, 0x191919, 0xFFFFFF) - dust() - } - val impureRedstone = CMaterial.create(510, clayiumId("impure_redstone")) { - colors(0x974646, 0x191919, 0xFFFFFF) - dust() - } - val impureSilicon = CMaterial.create(511, clayiumId("impure_silicon")) { - tier(5) - colors(0x978F98, 0x533764, 0xA9A5A5) - ingot().dust() - plate(ClayEnergy.milli(1), 20, tier = 4) - } - val invar = CMaterial.create(512, clayiumId("invar")) { - tier(6).colors(0xAAAA50, 0x8C8C46, 0xB4B450) - ingot().dust() - } - val lapis = CMaterial.create(513, clayiumId("lapis")) { - colors(0x3C64BE, 0x0A2B7A, 0x5A82E2) - dust() - } - val quartz = CMaterial.create(514, clayiumId("quartz")) { - dust() - blockAmount(4) - } - val salt = CMaterial.create(515, clayiumId("salt")) { - tier(4) - colors(0xFFFFFF, 0x8C8C8C, 0xFFFFFF) - dust() - } - val saltpeter = CMaterial.create(516, clayiumId("saltpeter")) { - colors(0xDEDCDC, 0xBEC8D2, 0xFFF0E6) - dust() - } - val silicone = CMaterial.create(517, clayiumId("silicone")) { - tier(5) - colors(0xD2D2D2, 0xB4B4B4, 0xF0F0F0) - ingot().dust() - plate(ClayEnergy.milli(1), 4, tier = 4) - } - val steel = CMaterial.create(518, clayiumId("steel")) { - tier(3).colors(0x5A5A6E, 0x000000, 0xFFFFFF) - ingot().dust() - blastSmelting(6, 500) - } - val ultimateAlloy = CMaterial.create(519, clayiumId("ultimate_alloy")) { - tier(9) - colors(0x55CD55, 0x191919, 0xF5A0FF) - ingot().dust() - plate(ClayEnergy.milli(1), 180, tier = 4) - blastSmelting(4.0, 8, 2000) - } - val zinc_aluminum = CMaterial.create(520, clayiumId("zinc_aluminum")) { - tier(6).colors(0xF0BEDC, 0xA00000, 0xFFFFFF) - ingot().dust() - claySmelting(0.2, 6, 400) - } - val zinc_zirconium = CMaterial.create(521, clayiumId("zinc_zirconium")) { - tier(6).colors(0xE6AA8C, 0x780000, 0xFFFFFF) - ingot().dust() - claySmelting(0.2, 6, 400) - } - //endregion - - /** 1001 - 1500 */ - //region Higher Degree Materials - val az91d = CMaterial.create(1001, clayiumId("az91d")) { - tier(6).colors(0x828C87, 0x0A280A, 0xFFFFFF) - ingot().dust() - plate(ClayEnergy.milli(1), 20, tier = 4) - claySmelting(0.2, 6, 400) - } - val zk60a = CMaterial.create(1002, clayiumId("zk60a")) { - tier(6).colors(0x4B5550, 0x0A280A, 0xFFFFFF) - ingot().dust() - plate(ClayEnergy.milli(1), 20, tier = 4) - claySmelting(0.2, 6, 400) - } - val ultimateCompound = CMaterial.create(1003, clayiumId("ultimate_compound")) { - tier(8).colors(0x55CD55, 0xF5FFFF, 0xF5A0FF) - ingot() - } - //endregion - - val PURE_ANTIMATTERS = listOf(pureAntimatter, pureAntimatter1, pureAntimatter2, pureAntimatter3, - pureAntimatter4, pureAntimatter5, pureAntimatter6, pureAntimatter7, octuplePureAntimatter) - - init { - //region Clay Materials - compressedEnergeticClay7 = CMaterial.create(163, clayiumId("compressed_energetic_clay7")) { + // region Matters + val antimatter = + CMaterial.create(201, clayiumId("antimatter")) { + tier(10) + colors(0x0000EB, 0x000000, 0xFFFFFF) + matter().dust() + plate(ClayEnergy.of(100), 20, tier = 9) + } + val pureAntimatter = + CMaterial.create(202, clayiumId("pure_antimatter")) { tier(11) - clay(12, octupleEnergyClay, ClayEnergy.of(10_000_000)) + colors(0xFF32FF, 0x000000, 0xFFFFFF) + matter().dust() + plate(ClayEnergy.of(100), 20, tier = 9) } - - compressedEnergeticClay6 = CMaterial.create(162, clayiumId("compressed_energetic_clay6")) { - tier(10) - clay(11, compressedEnergeticClay7, ClayEnergy.of(1_000_000)) + val pureAntimatter1 = + CMaterial.create(203, clayiumId("pure_antimatter1")) { + tier(11).colors(0xC42385, 0x191919, 0xFFFFFF) + matter("matter2") } - - compressedEnergeticClay5 = CMaterial.create(161, clayiumId("compressed_energetic_clay5")) { - tier(9) - clay(10, compressedEnergeticClay6, ClayEnergy.of(100_000)) + val pureAntimatter2 = + CMaterial.create(204, clayiumId("pure_antimatter2")) { + tier(11).colors(0x8E1777, 0x323200, 0xFFFFFF) + matter("matter2") } - - compressedEnergeticClay4 = CMaterial.create(160, clayiumId("compressed_energetic_clay4")) { - tier(8) - clay(9, compressedEnergeticClay5, ClayEnergy.of(10_000)) + val pureAntimatter3 = + CMaterial.create(205, clayiumId("pure_antimatter3")) { + tier(11).colors(0x5E0D45, 0x4B4B00, 0xFFFFFF) + matter("matter3") } - - compressedEnergeticClay3 = CMaterial.create(159, clayiumId("compressed_energetic_clay3")) { - tier(7) - clay(8, compressedEnergeticClay4, ClayEnergy.of(1_000)) + val pureAntimatter4 = + CMaterial.create(206, clayiumId("pure_antimatter4")) { + tier(12).colors(0x32061F, 0x646400, 0xFFFFFF) + matter("matter3") } - - compressedEnergeticClay2 = CMaterial.create(158, clayiumId("compressed_energetic_clay2")) { - tier(6) - clay(7, compressedEnergeticClay3, ClayEnergy.of(100)) + val pureAntimatter5 = + CMaterial.create(207, clayiumId("pure_antimatter5")) { + tier(12).colors(0x520829, 0x7D7D00, 0xFFFFFF) + matter("matter4") + } + val pureAntimatter6 = + CMaterial.create(208, clayiumId("pure_antimatter6")) { + tier(12).colors(0x6E0727, 0x969600, 0xFFFFFF) + matter("matter4") + } + val pureAntimatter7 = + CMaterial.create(209, clayiumId("pure_antimatter7")) { + tier(13).colors(0x840519, 0xAFAF00, 0xFFFFFF) + matter("matter4") } + val octuplePureAntimatter = + CMaterial.create(210, clayiumId("octuple_pure_antimatter")) { + tier(13).colors(0x960000, 0xC8C800, 0xFFFFFF) + matter("matter5").dust() + plate(ClayEnergy.of(100), 20, tier = 9) + } + // endregion - compressedEnergeticClay = CMaterial.create(157, clayiumId("compressed_energetic_clay")) { + /** 301 - 500 */ + // region Chemical Materials + val organicClay = + CMaterial.create(301, clayiumId("organic_clay")) { tier(5) - clay(6, compressedEnergeticClay2, ClayEnergy.of(10)) + colors(0x8890AD, 0x6A2C2B, 0x92A4B7) + dust() } - - energeticClay = CMaterial.create(156, clayiumId("energetic_clay")) { + val calciumChloride = CMaterial.create(302, clayiumId("calcium_chloride")) { dust() } + val sodiumCarbonate = CMaterial.create(303, clayiumId("sodium_carbonate")) { dust() } + val calcareousClay = + CMaterial.create(304, clayiumId("calcareous_clay")) { tier(4) - clay(5, compressedEnergeticClay, ClayEnergy.of(1)) + dust() } + // endregion - advancedIndustrialClay = CMaterial.create(155, clayiumId("advanced_industrial_clay")) { - tier(3) - clay(4, energeticClay) + /** Materials composed of anything other than First or higher Degree Materials. 501 - 1000 */ + // region First Degree Materials + val brass = + CMaterial.create(501, clayiumId("brass")) { + tier(6).colors(0xBEAA14, 0x000000, 0xFFFFFF) + ingot().dust() + } + val bronze = + CMaterial.create(502, clayiumId("bronze")) { + tier(5).colors(0xFA9628, 0x000000, 0xFFFFFF) + ingot().dust() + } + val charcoal = + CMaterial.create(503, clayiumId("charcoal")) { + colors(0x141414, 0x191919, 0x503232) dust() - plate(ClayEnergy.micro(40), 4, tier = 3) } - - industrialClay = CMaterial.create(154, clayiumId("industrial_clay")) { - tier(2) - clay(3, advancedIndustrialClay) + val claySteel = + CMaterial.create(504, clayiumId("clay_steel")) { + tier(7) + colors(0x8890AD, 0x191919, 0xFFFFFF) + ingot().dust() + plate(ClayEnergy.milli(1), 60, tier = 4) + blastSmelting(6, 500) + } + val clayium = + CMaterial.create(505, clayiumId("clayium")) { + tier(8) + colors(0x5AF0D2, 0x3F4855, 0xFFCDC8) + ingot().dust() + plate(ClayEnergy.milli(1), 120, tier = 4) + blastSmelting(2.0, 7, 1000) + } + val coal = + CMaterial.create(506, clayiumId("coal")) { + colors(0x141414, 0x191919, 0x323250) dust() - plate(ClayEnergy.micro(20), 4, tier = 2) } - - compressedClay = CMaterial.create(153, clayiumId("compressed_clay")) { - tier(1) - clay(2, industrialClay) + val graphite = CMaterial.create(507, clayiumId("graphite")) {} + val electrum = + CMaterial.create(508, clayiumId("electrum")) { + tier(6).colors(0xE6E69B, 0x787846, 0xFFFFFF) + ingot().dust() } - - denseClay = CMaterial.create(152, clayiumId("dense_clay")) { - tier(0) - clay(1, compressedClay) + val impureGlowStone = + CMaterial.create(509, clayiumId("impure_glowstone")) { + colors(0x979746, 0x191919, 0xFFFFFF) dust() - plate(ClayEnergy.micro(10), 4, tier = 0) - flags(CMaterialFlags.GENERATE_CLAY_PARTS) } - - clay = CMaterial.create(151, clayiumId("clay")) { - tier(0) - clay(0, denseClay) + val impureRedstone = + CMaterial.create(510, clayiumId("impure_redstone")) { + colors(0x974646, 0x191919, 0xFFFFFF) + dust() + } + val impureSilicon = + CMaterial.create(511, clayiumId("impure_silicon")) { + tier(5) + colors(0x978F98, 0x533764, 0xA9A5A5) + ingot().dust() + plate(ClayEnergy.milli(1), 20, tier = 4) + } + val invar = + CMaterial.create(512, clayiumId("invar")) { + tier(6).colors(0xAAAA50, 0x8C8C46, 0xB4B450) + ingot().dust() + } + val lapis = + CMaterial.create(513, clayiumId("lapis")) { + colors(0x3C64BE, 0x0A2B7A, 0x5A82E2) + dust() + } + val quartz = + CMaterial.create(514, clayiumId("quartz")) { + dust() + blockAmount(4) + } + val salt = + CMaterial.create(515, clayiumId("salt")) { + tier(4) + colors(0xFFFFFF, 0x8C8C8C, 0xFFFFFF) dust() - plate(ClayEnergy.micro(10), 1, tier = 0) - flags(CMaterialFlags.GENERATE_CLAY_PARTS) } - //endregion + val saltpeter = + CMaterial.create(516, clayiumId("saltpeter")) { + colors(0xDEDCDC, 0xBEC8D2, 0xFFF0E6) + dust() + } + val silicone = + CMaterial.create(517, clayiumId("silicone")) { + tier(5) + colors(0xD2D2D2, 0xB4B4B4, 0xF0F0F0) + ingot().dust() + plate(ClayEnergy.milli(1), 4, tier = 4) + } + val steel = + CMaterial.create(518, clayiumId("steel")) { + tier(3).colors(0x5A5A6E, 0x000000, 0xFFFFFF) + ingot().dust() + blastSmelting(6, 500) + } + val ultimateAlloy = + CMaterial.create(519, clayiumId("ultimate_alloy")) { + tier(9) + colors(0x55CD55, 0x191919, 0xF5A0FF) + ingot().dust() + plate(ClayEnergy.milli(1), 180, tier = 4) + blastSmelting(4.0, 8, 2000) + } + val zinc_aluminum = + CMaterial.create(520, clayiumId("zinc_aluminum")) { + tier(6).colors(0xF0BEDC, 0xA00000, 0xFFFFFF) + ingot().dust() + claySmelting(0.2, 6, 400) + } + val zinc_zirconium = + CMaterial.create(521, clayiumId("zinc_zirconium")) { + tier(6).colors(0xE6AA8C, 0x780000, 0xFFFFFF) + ingot().dust() + claySmelting(0.2, 6, 400) + } + // endregion + + /** 1001 - 1500 */ + // region Higher Degree Materials + val az91d = + CMaterial.create(1001, clayiumId("az91d")) { + tier(6).colors(0x828C87, 0x0A280A, 0xFFFFFF) + ingot().dust() + plate(ClayEnergy.milli(1), 20, tier = 4) + claySmelting(0.2, 6, 400) + } + val zk60a = + CMaterial.create(1002, clayiumId("zk60a")) { + tier(6).colors(0x4B5550, 0x0A280A, 0xFFFFFF) + ingot().dust() + plate(ClayEnergy.milli(1), 20, tier = 4) + claySmelting(0.2, 6, 400) + } + val ultimateCompound = + CMaterial.create(1003, clayiumId("ultimate_compound")) { + tier(8).colors(0x55CD55, 0xF5FFFF, 0xF5A0FF) + ingot() + } + // endregion + + val PURE_ANTIMATTERS = + listOf( + pureAntimatter, + pureAntimatter1, + pureAntimatter2, + pureAntimatter3, + pureAntimatter4, + pureAntimatter5, + pureAntimatter6, + pureAntimatter7, + octuplePureAntimatter + ) + + init { + // region Clay Materials + compressedEnergeticClay7 = + CMaterial.create(163, clayiumId("compressed_energetic_clay7")) { + tier(11) + clay(12, octupleEnergyClay, ClayEnergy.of(10_000_000)) + } + + compressedEnergeticClay6 = + CMaterial.create(162, clayiumId("compressed_energetic_clay6")) { + tier(10) + clay(11, compressedEnergeticClay7, ClayEnergy.of(1_000_000)) + } + + compressedEnergeticClay5 = + CMaterial.create(161, clayiumId("compressed_energetic_clay5")) { + tier(9) + clay(10, compressedEnergeticClay6, ClayEnergy.of(100_000)) + } + + compressedEnergeticClay4 = + CMaterial.create(160, clayiumId("compressed_energetic_clay4")) { + tier(8) + clay(9, compressedEnergeticClay5, ClayEnergy.of(10_000)) + } + + compressedEnergeticClay3 = + CMaterial.create(159, clayiumId("compressed_energetic_clay3")) { + tier(7) + clay(8, compressedEnergeticClay4, ClayEnergy.of(1_000)) + } + + compressedEnergeticClay2 = + CMaterial.create(158, clayiumId("compressed_energetic_clay2")) { + tier(6) + clay(7, compressedEnergeticClay3, ClayEnergy.of(100)) + } + + compressedEnergeticClay = + CMaterial.create(157, clayiumId("compressed_energetic_clay")) { + tier(5) + clay(6, compressedEnergeticClay2, ClayEnergy.of(10)) + } + + energeticClay = + CMaterial.create(156, clayiumId("energetic_clay")) { + tier(4) + clay(5, compressedEnergeticClay, ClayEnergy.of(1)) + } + + advancedIndustrialClay = + CMaterial.create(155, clayiumId("advanced_industrial_clay")) { + tier(3) + clay(4, energeticClay) + dust() + plate(ClayEnergy.micro(40), 4, tier = 3) + } + + industrialClay = + CMaterial.create(154, clayiumId("industrial_clay")) { + tier(2) + clay(3, advancedIndustrialClay) + dust() + plate(ClayEnergy.micro(20), 4, tier = 2) + } + + compressedClay = + CMaterial.create(153, clayiumId("compressed_clay")) { + tier(1) + clay(2, industrialClay) + } + + denseClay = + CMaterial.create(152, clayiumId("dense_clay")) { + tier(0) + clay(1, compressedClay) + dust() + plate(ClayEnergy.micro(10), 4, tier = 0) + flags(CMaterialFlags.GENERATE_CLAY_PARTS) + } + + clay = + CMaterial.create(151, clayiumId("clay")) { + tier(0) + clay(0, denseClay) + dust() + plate(ClayEnergy.micro(10), 1, tier = 0) + flags(CMaterialFlags.GENERATE_CLAY_PARTS) + } + // endregion } fun init() { CMarkerMaterials.init() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CPropertyKey.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CPropertyKey.kt index f2b7f8916..c5173a6ae 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/CPropertyKey.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/CPropertyKey.kt @@ -2,7 +2,7 @@ package com.github.trc.clayium.api.unification.material data class CPropertyKey( val name: String, -) { +) { @Suppress("UNCHECKED_CAST") fun cast(value: MaterialProperty): T { return value as T @@ -18,4 +18,4 @@ data class CPropertyKey( val CLAY_SMELTING = CPropertyKey("claySmelting") val BLAST_SMELTING = CPropertyKey("blastSmelting") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/IMaterial.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/IMaterial.kt index a332f7af9..19a2c8440 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/IMaterial.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/IMaterial.kt @@ -7,4 +7,4 @@ interface IMaterial { val tier: ITier? get() = null -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialAmount.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialAmount.kt index 4be9614a9..fa4d57603 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialAmount.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialAmount.kt @@ -5,16 +5,17 @@ import com.github.trc.clayium.api.M @JvmInline value class MaterialAmount private constructor(val raw: Long) { - val dustAmount get() = (raw / M).toInt() + val dustAmount + get() = (raw / M).toInt() companion object { val NONE = MaterialAmount(-1) + fun of(dustAmount: Long) = MaterialAmount(M * dustAmount) + fun nugget(nuggetAmount: Long) = MaterialAmount((M / 9) * nuggetAmount) - /** - * use this only when you are sure that the amount is correct. - */ + /** use this only when you are sure that the amount is correct. */ fun createRaw(raw: Long) = MaterialAmount(raw) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialProperty.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialProperty.kt index d626dc3c7..0fac899f4 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialProperty.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/MaterialProperty.kt @@ -8,7 +8,9 @@ sealed interface MaterialProperty { fun verify(material: CMaterial): Boolean = true data object Ingot : MaterialProperty + data object Dust : MaterialProperty + class Matter( texture: String = "matter", ) : MaterialProperty { @@ -20,9 +22,9 @@ sealed interface MaterialProperty { val requiredTick: Int, val tier: Int, ) : MaterialProperty { - override fun verify(material: CMaterial) = material.hasProperty(CPropertyKey.Companion.INGOT) || material.hasProperty( - CPropertyKey.Companion.MATTER - ) + override fun verify(material: CMaterial) = + material.hasProperty(CPropertyKey.Companion.INGOT) || + material.hasProperty(CPropertyKey.Companion.MATTER) } class ImpureDust( @@ -34,14 +36,18 @@ sealed interface MaterialProperty { } override fun verify(material: CMaterial) = material.hasProperty(CPropertyKey.Companion.DUST) + fun getColor(i: Int) = colors[i] } } -class Clay(val compressionLevel: Int, val compressedInto: CMaterial?, val energy: ClayEnergy?) : MaterialProperty +class Clay(val compressionLevel: Int, val compressedInto: CMaterial?, val energy: ClayEnergy?) : + MaterialProperty + class ClaySmelting(val factor: Double, val tier: Int, val duration: Int) : MaterialProperty { constructor(tier: Int, duration: Int) : this(1.0, tier, duration) } + class BlastSmelting(val factor: Double, val tier: Int, val duration: Int) : MaterialProperty { constructor(tier: Int, duration: Int) : this(1.0, tier, duration) } diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/material/registry/CMarkerMaterialRegistry.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/material/registry/CMarkerMaterialRegistry.kt index 7e51b78e7..add6e5263 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/material/registry/CMarkerMaterialRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/material/registry/CMarkerMaterialRegistry.kt @@ -16,4 +16,4 @@ class CMarkerMaterialRegistry : Iterable { override fun iterator(): Iterator { return _map.values.toList().iterator() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/ore/OrePrefix.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/ore/OrePrefix.kt index 7dbde1226..6627228d6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/ore/OrePrefix.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/ore/OrePrefix.kt @@ -14,7 +14,8 @@ import com.google.common.base.CaseFormat import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap import java.util.function.Predicate -private val Long.M get() = MaterialAmount.of(this) +private val Long.M + get() = MaterialAmount.of(this) class OrePrefix( val camel: String, @@ -28,7 +29,8 @@ class OrePrefix( val snake = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, camel) private val ignoredMaterials = mutableSetOf() - private val modifiedAmounts = Object2LongOpenHashMap().apply { defaultReturnValue(FALLBACK.toLong()) } + private val modifiedAmounts = + Object2LongOpenHashMap().apply { defaultReturnValue(FALLBACK.toLong()) } fun getMaterialAmount(material: IMaterial): MaterialAmount { val modified = modifiedAmounts.getLong(material) @@ -43,10 +45,10 @@ class OrePrefix( modifiedAmounts.put(material, amount.raw) } - //todo: move to somewhere else? + // todo: move to somewhere else? fun canGenerateItem(material: CMaterial): Boolean { - return !this.isIgnored(material) && (itemGenerationLogic != null - && itemGenerationLogic.test(material)) + return !this.isIgnored(material) && + (itemGenerationLogic != null && itemGenerationLogic.test(material)) } fun ignore(material: CMaterial) { @@ -62,7 +64,10 @@ class OrePrefix( if (BothSideI18n.hasKey(specialKey)) { return BothSideI18n.format(specialKey) } - return BothSideI18n.format("${MOD_ID}.ore_prefix.${snake}", BothSideI18n.format(material.translationKey)) + return BothSideI18n.format( + "${MOD_ID}.ore_prefix.${snake}", + BothSideI18n.format(material.translationKey) + ) } override fun toString(): String { @@ -73,12 +78,18 @@ class OrePrefix( private val _prefixes = mutableListOf() val allPrefixes: List = _prefixes - private val hasIngotProperty = Predicate { it.hasProperty(CPropertyKey.Companion.INGOT) } - private val hasDustProperty = Predicate { it.hasProperty(CPropertyKey.Companion.DUST) } - private val hasPlateProperty = Predicate { it.hasProperty(CPropertyKey.Companion.PLATE) } - private val hasMatterProperty = Predicate { it.hasProperty(CPropertyKey.Companion.MATTER) } - private val hasImpureDustProperty = Predicate { it.hasProperty(CPropertyKey.Companion.IMPURE_DUST) } - private val hasClayPartsFlag = Predicate { it.hasFlag(CMaterialFlags.GENERATE_CLAY_PARTS) } + private val hasIngotProperty = + Predicate { it.hasProperty(CPropertyKey.Companion.INGOT) } + private val hasDustProperty = + Predicate { it.hasProperty(CPropertyKey.Companion.DUST) } + private val hasPlateProperty = + Predicate { it.hasProperty(CPropertyKey.Companion.PLATE) } + private val hasMatterProperty = + Predicate { it.hasProperty(CPropertyKey.Companion.MATTER) } + private val hasImpureDustProperty = + Predicate { it.hasProperty(CPropertyKey.Companion.IMPURE_DUST) } + private val hasClayPartsFlag = + Predicate { it.hasFlag(CMaterialFlags.GENERATE_CLAY_PARTS) } val ingot = OrePrefix("ingot", 1.M, hasIngotProperty) val dust = OrePrefix("dust", 1.M, hasDustProperty) @@ -93,7 +104,7 @@ class OrePrefix( val block = OrePrefix("block", 9.M) - //todo proper amount + // todo proper amount val bearing = OrePrefix("bearing", 1.M, hasClayPartsFlag) val blade = OrePrefix("blade", 1.M, hasClayPartsFlag) val cuttingHead = OrePrefix("cuttingHead", 9.M, hasClayPartsFlag) @@ -111,19 +122,45 @@ class OrePrefix( val stick = OrePrefix("stick", MaterialAmount.NONE, hasClayPartsFlag) val wheel = OrePrefix("wheel", MaterialAmount.NONE, hasClayPartsFlag) - val metaItemPrefixes = listOf(ingot, dust, impureDust, gem, plate, largePlate, - bearing, blade, cuttingHead, cylinder, disc, gear, grindingHead, needle, - pipe, ring, shortStick, smallDisc, smallRing, spindle, stick, wheel) + val metaItemPrefixes = + listOf( + ingot, + dust, + impureDust, + gem, + plate, + largePlate, + bearing, + blade, + cuttingHead, + cylinder, + disc, + gear, + grindingHead, + needle, + pipe, + ring, + shortStick, + smallDisc, + smallRing, + spindle, + stick, + wheel + ) fun init() { block.ignore(CMaterials.clay) - listOf(CMaterials.pureAntimatter1, CMaterials.pureAntimatter2, CMaterials.pureAntimatter3, - CMaterials.pureAntimatter4, CMaterials.pureAntimatter5, CMaterials.pureAntimatter6, - CMaterials.pureAntimatter7 - ).forEach { - block.ignore(it) - } + listOf( + CMaterials.pureAntimatter1, + CMaterials.pureAntimatter2, + CMaterials.pureAntimatter3, + CMaterials.pureAntimatter4, + CMaterials.pureAntimatter5, + CMaterials.pureAntimatter6, + CMaterials.pureAntimatter7 + ) + .forEach { block.ignore(it) } // silicone has 16 colored deco blocks, so disable auto-gen block.ignore(CMaterials.silicone) @@ -132,4 +169,4 @@ class OrePrefix( block.modifyAmount(CMarkerMaterials.fluix, 4.M) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemAndMeta.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemAndMeta.kt index d6a976930..d4e5bc6d5 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemAndMeta.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemAndMeta.kt @@ -16,7 +16,9 @@ fun PacketBuffer.writeItemAndMeta(itemAndMeta: ItemAndMeta) { } fun PacketBuffer.readItemAndMeta(): ItemAndMeta { - val item = Item.getByNameOrId(readString(Short.MAX_VALUE.toInt())) ?: throw IllegalArgumentException("Invalid item") + val item = + Item.getByNameOrId(readString(Short.MAX_VALUE.toInt())) + ?: throw IllegalArgumentException("Invalid item") val meta = readVarInt() return ItemAndMeta(item, meta) } @@ -26,8 +28,13 @@ data class ItemAndMeta( val meta: Int = 0, ) { constructor(block: Block, meta: Int = 0) : this(block.getAsItem(), meta) + constructor(itemStack: ItemStack) : this(itemStack.item, itemStack.metadata) - constructor(orePrefix: OrePrefix, material: CMaterial) : this(OreDictUnifier.get(orePrefix, material)) + + constructor( + orePrefix: OrePrefix, + material: CMaterial + ) : this(OreDictUnifier.get(orePrefix, material)) init { require(item !== Items.AIR) { "Empty ItemAndMeta is not allowed" } @@ -35,4 +42,4 @@ data class ItemAndMeta( } fun asStack(amount: Int = 1) = ItemStack(item, amount, meta) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemVariantMap.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemVariantMap.kt index 9dad18111..3b7dde5af 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemVariantMap.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/ItemVariantMap.kt @@ -7,44 +7,47 @@ import net.minecraft.item.ItemStack * copied from `gregtech.api.unification.stack.ItemVariantMap` */ -/** - * A map-like structure that stores values associated with item metadata. - */ +/** A map-like structure that stores values associated with item metadata. */ interface ItemVariantMap { - val isEmpty: Boolean get() = !hasWildcardEntry() && !hasNonWildcardEntry() + val isEmpty: Boolean + get() = !hasWildcardEntry() && !hasNonWildcardEntry() /** * @param meta Item metadata - * @return `true` if there's a nonnull value associated with given item metadata, `false` otherwise. + * @return `true` if there's a nonnull value associated with given item metadata, `false` + * otherwise. */ fun has(meta: Short): Boolean operator fun get(meta: Short): E? /** - * @return `true` if there's any nonnull value associated with some item metadata, excluding metadata of [net.minecraftforge.oredict.OreDictionary.WILDCARD_VALUE] `(32767)`. + * @return `true` if there's any nonnull value associated with some item metadata, excluding + * metadata of [net.minecraftforge.oredict.OreDictionary.WILDCARD_VALUE] `(32767)`. */ fun hasNonWildcardEntry(): Boolean /** - * @return `true` if there's a nonnull value associated with metadata of [net.minecraftforge.oredict.OreDictionary.WILDCARD_VALUE] `(32767)`. + * @return `true` if there's a nonnull value associated with metadata of + * [net.minecraftforge.oredict.OreDictionary.WILDCARD_VALUE] `(32767)`. */ fun hasWildcardEntry(): Boolean = has(W.toShort()) fun has(stack: ItemStack): Boolean = has(stack.itemDamage.toShort()) + fun get(stack: ItemStack): E? = get(stack.itemDamage.toShort()) } interface MutableItemVariantMap : ItemVariantMap { - /** - * Discard all associated value contained in this variant map. - */ + /** Discard all associated value contained in this variant map. */ fun clear() operator fun set(meta: Short, value: E?): E? + operator fun set(stack: ItemStack, value: E?): E? = set(stack.itemDamage.toShort(), value) fun put(meta: Short, value: E?): E? = set(meta, value) + fun put(stack: ItemStack, value: E?): E? = put(stack.itemDamage.toShort(), value) fun computeIfAbsent(meta: Short, supplier: () -> E): E { @@ -58,8 +61,10 @@ interface MutableItemVariantMap : ItemVariantMap { object EmptyItemVariantMap : ItemVariantMap { override fun has(meta: Short): Boolean = false + override fun get(meta: Short): Nothing? = null + override fun hasNonWildcardEntry(): Boolean = false override fun toString(): String = "EmptyItemVariantMap" -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/MultiItemVariantMap.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/MultiItemVariantMap.kt index f5f949ea5..fb0536fd1 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/MultiItemVariantMap.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/MultiItemVariantMap.kt @@ -4,9 +4,8 @@ import com.github.trc.clayium.api.W import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap /** - * For subtyped items. - * Uses a map internally to store separate values for each metadata. - * Also holds a wildcard value. + * For subtyped items. Uses a map internally to store separate values for each metadata. Also holds + * a wildcard value. */ class MultiItemVariantMap : MutableItemVariantMap { @@ -38,7 +37,6 @@ class MultiItemVariantMap : MutableItemVariantMap { override fun get(meta: Short): E? { return if (meta == W.toShort()) wildcardValue else map[meta] - } override fun hasNonWildcardEntry(): Boolean { @@ -48,4 +46,4 @@ class MultiItemVariantMap : MutableItemVariantMap { override fun hasWildcardEntry(): Boolean { return wildcardValue != null } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/SingleItemVariantMap.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/SingleItemVariantMap.kt index 5e6831c28..9bb2fe80c 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/SingleItemVariantMap.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/SingleItemVariantMap.kt @@ -1,9 +1,6 @@ package com.github.trc.clayium.api.unification.stack -/** - * For non subtyped items. - * Holds one shard value for all metadata. - */ +/** For non subtyped items. Holds one shard value for all metadata. */ class SingleItemVariantMap : MutableItemVariantMap { private var value: E? = null @@ -29,4 +26,4 @@ class SingleItemVariantMap : MutableItemVariantMap { override fun hasNonWildcardEntry(): Boolean { return value != null } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/UnificationEntry.kt b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/UnificationEntry.kt index 54fe9c10e..2aff4af99 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/unification/stack/UnificationEntry.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/unification/stack/UnificationEntry.kt @@ -10,4 +10,4 @@ data class UnificationEntry( override fun toString(): String { return "${orePrefix.camel}${material.upperCamelName}" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/CLog.kt b/src/main/kotlin/com/github/trc/clayium/api/util/CLog.kt index 3faed0f51..8e6b97c0f 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/CLog.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/CLog.kt @@ -4,4 +4,4 @@ import com.github.trc.clayium.api.MOD_ID import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger -object CLog : Logger by LogManager.getLogger(MOD_ID) \ No newline at end of file +object CLog : Logger by LogManager.getLogger(MOD_ID) diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/CUtils.kt b/src/main/kotlin/com/github/trc/clayium/api/util/CUtils.kt index dff11b03f..c911ac847 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/CUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/CUtils.kt @@ -43,9 +43,10 @@ fun ItemStack.copyWithSize(size: Int): ItemStack { } fun ItemStack.canStackWith(other: ItemStack): Boolean { - return (this.isEmpty || other.isEmpty) || (isItemEqual(other) - && (!item.isDamageable || itemDamage == other.itemDamage) - && ItemStack.areItemStackTagsEqual(this, other)) + return (this.isEmpty || other.isEmpty) || + (isItemEqual(other) && + (!item.isDamageable || itemDamage == other.itemDamage) && + ItemStack.areItemStackTagsEqual(this, other)) } fun ItemStack.getCapability(capability: Capability): T? { @@ -90,7 +91,9 @@ inline fun , V, T : EnumEntries> T.enumMap(mapper: (K) -> return map } -inline fun , V, T : EnumEntries> T.enumMapNotNull(mapper: (K) -> V?): EnumMap { +inline fun , V, T : EnumEntries> T.enumMapNotNull( + mapper: (K) -> V? +): EnumMap { val map = EnumMap(K::class.java) for (key in this) { val value = mapper(key) @@ -158,7 +161,7 @@ object CUtils { val tagList = tag.getTagList(tagName, Constants.NBT.TAG_COMPOUND) for (i in 0.. { val rarity: IRarity abstract override fun hashCode(): Int + override fun compareTo(other: ITier): Int = numeric.compareTo(other.numeric) companion object { @SideOnly(Side.CLIENT) fun tierNumericTooltip(tier: ITier) = I18n.format("tooltip.clayium.tier", tier.numeric) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/MachineIoMode.kt b/src/main/kotlin/com/github/trc/clayium/api/util/MachineIoMode.kt index fca60f56b..758091ed6 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/MachineIoMode.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/MachineIoMode.kt @@ -30,4 +30,4 @@ enum class MachineIoMode( return entries[id] } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/Mods.kt b/src/main/kotlin/com/github/trc/clayium/api/util/Mods.kt index d35ca0716..a7ce38be3 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/Mods.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/Mods.kt @@ -12,8 +12,7 @@ enum class Mods( GroovyScript(Names.GROOVY_SCRIPT), JustEnoughItems(Names.JUST_ENOUGH_ITEMS), ModularUI(Names.MODULAR_UI), - TheOneProbe(Names.THE_ONE_PROBE) - ; + TheOneProbe(Names.THE_ONE_PROBE); val isModLoaded by lazy { Loader.isModLoaded(this.modId) } @@ -26,4 +25,4 @@ enum class Mods( const val MODULAR_UI = "modularui" const val THE_ONE_PROBE = "theoneprobe" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/RelativeDirection.kt b/src/main/kotlin/com/github/trc/clayium/api/util/RelativeDirection.kt index 0c11e9300..aebbf1376 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/RelativeDirection.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/RelativeDirection.kt @@ -20,4 +20,4 @@ enum class RelativeDirection( require(frontFacing.axis.isHorizontal) { "Front facing must be horizontal" } return actualFacingGetter(frontFacing) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/TileEntityAccess.kt b/src/main/kotlin/com/github/trc/clayium/api/util/TileEntityAccess.kt index 424f9a745..89b264346 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/TileEntityAccess.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/TileEntityAccess.kt @@ -9,8 +9,8 @@ import java.lang.ref.WeakReference * holds tile entity as a weak reference. * * if you get non-null from the [get] method, it ensures the following: - * - is valid - * - has the same position as [pos] + * - is valid + * - has the same position as [pos] * * if you get non-null from the [getIfLoaded] method, it also ensures the pos is loaded. */ @@ -25,15 +25,16 @@ class TileEntityAccess( fun get(): TileEntity? { val prev = weakRef.get() - val thisTime = if (isTileEntityValid(prev)) { - prev - } else { - val tileEntity = world.getTileEntity(pos) - if (tileEntity != null) { - weakRef = WeakReference(tileEntity) + val thisTime = + if (isTileEntityValid(prev)) { + prev + } else { + val tileEntity = world.getTileEntity(pos) + if (tileEntity != null) { + weakRef = WeakReference(tileEntity) + } + tileEntity } - tileEntity - } return thisTime } @@ -47,4 +48,4 @@ class TileEntityAccess( private fun isTileEntityValid(te: TileEntity?): Boolean { return te != null && !te.isInvalid && te.pos == this.pos } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/VBlocks.kt b/src/main/kotlin/com/github/trc/clayium/api/util/VBlocks.kt index 9df69b888..e145fa876 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/VBlocks.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/VBlocks.kt @@ -3,10 +3,7 @@ package com.github.trc.clayium.api.util import net.minecraft.init.Blocks import net.minecraft.item.ItemStack -/** - * vanilla blocks that has metadata. - * these blocks are not in [Blocks] class. - */ +/** vanilla blocks that has metadata. these blocks are not in [Blocks] class. */ object VBlocks { val PODZOL = ItemStack(Blocks.DIRT, 1, 2) @@ -26,4 +23,4 @@ object VBlocks { val LARGE_FERN = ItemStack(Blocks.DOUBLE_PLANT, 1, 3) val ROSE_BUSH = ItemStack(Blocks.DOUBLE_PLANT, 1, 4) val PEONY = ItemStack(Blocks.DOUBLE_PLANT, 1, 5) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/VItems.kt b/src/main/kotlin/com/github/trc/clayium/api/util/VItems.kt index 5a8673e9f..094557f7f 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/VItems.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/VItems.kt @@ -3,10 +3,7 @@ package com.github.trc.clayium.api.util import net.minecraft.init.Items import net.minecraft.item.ItemStack -/** - * vanilla items that has metadata. - * these items are not in [Items] class. - */ +/** vanilla items that has metadata. these items are not in [Items] class. */ object VItems { val INK_SAC = ItemStack(Items.DYE, 1, 0) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/registry/CRegistry.kt b/src/main/kotlin/com/github/trc/clayium/api/util/registry/CRegistry.kt index 2fb4b417a..be4bb4fec 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/registry/CRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/registry/CRegistry.kt @@ -4,20 +4,22 @@ import com.github.trc.clayium.api.FALLBACK import net.minecraft.util.registry.RegistryNamespaced open class CRegistry( - /** - * exclusive - */ + /** exclusive */ private val maxId: Int, ) : RegistryNamespaced() where K : Any, V : Any { override fun register(id: Int, key: K, value: V) { - if (id < 0 || id >= maxId) - throw IllegalArgumentException("Id is out of range: $id") + if (id < 0 || id >= maxId) throw IllegalArgumentException("Id is out of range: $id") getObjectById(id)?.let { - throw IllegalArgumentException("Tried to reassign id $id to ($key: $value), but it is already assigned to (${getNameForObject(it)}: $it)") } + throw IllegalArgumentException( + "Tried to reassign id $id to ($key: $value), but it is already assigned to (${getNameForObject(it)}: $it)" + ) + } super.register(id, key, value) } fun getIdByKey(key: K): Int { - return getObject(key)?.let { return getIDForObject(it) } ?: FALLBACK + return getObject(key)?.let { + return getIDForObject(it) + } ?: FALLBACK } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/api/util/registry/MaterialRegistry.kt b/src/main/kotlin/com/github/trc/clayium/api/util/registry/MaterialRegistry.kt index 332c8c4ee..7434070a5 100644 --- a/src/main/kotlin/com/github/trc/clayium/api/util/registry/MaterialRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/api/util/registry/MaterialRegistry.kt @@ -4,14 +4,11 @@ import com.github.trc.clayium.api.unification.material.IMaterial import com.github.trc.clayium.api.util.clayiumId import net.minecraft.util.ResourceLocation -class MaterialRegistry( +class MaterialRegistry( maxId: Int, ) : CRegistry(maxId) { - /** - * get material by name without mod id. - * auto completes mod id "clayium". - */ + /** get material by name without mod id. auto completes mod id "clayium". */ fun get(name: String): V? { return getObject(clayiumId(name)) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/ClientProxy.kt b/src/main/kotlin/com/github/trc/clayium/client/ClientProxy.kt index 75a6f1a49..a57af3d70 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/ClientProxy.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/ClientProxy.kt @@ -46,11 +46,22 @@ class ClientProxy : CommonProxy() { ModelLoaderRegistry.registerLoader(LaserReflectorModelLoader) ModelLoaderRegistry.registerLoader(MetalBlockModelLoader) - ClientRegistry.bindTileEntitySpecialRenderer(MetaTileEntityHolder::class.java, MetaTileEntityRenderDispatcher) - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityClayLaserReflector::class.java, ClayLaserReflectorRenderer) - ClientRegistry.bindTileEntitySpecialRenderer(TileClayMarker.NoExtend::class.java, ClayMarkerTESR) + ClientRegistry.bindTileEntitySpecialRenderer( + MetaTileEntityHolder::class.java, + MetaTileEntityRenderDispatcher + ) + ClientRegistry.bindTileEntitySpecialRenderer( + TileEntityClayLaserReflector::class.java, + ClayLaserReflectorRenderer + ) + ClientRegistry.bindTileEntitySpecialRenderer( + TileClayMarker.NoExtend::class.java, + ClayMarkerTESR + ) - ClayiumBlocks.CLAY_TREE_LEAVES.setGraphicsLevel(Minecraft.getMinecraft().gameSettings.fancyGraphics) + ClayiumBlocks.CLAY_TREE_LEAVES.setGraphicsLevel( + Minecraft.getMinecraft().gameSettings.fancyGraphics + ) } override fun init(event: FMLInitializationEvent) { @@ -62,23 +73,31 @@ class ClientProxy : CommonProxy() { if (item is MetaItemClayium) { item.registerModels() } - ModelLoader.setCustomModelResourceLocation(item, 0, ModelResourceLocation(item.registryName!!, "inventory")) + ModelLoader.setCustomModelResourceLocation( + item, + 0, + ModelResourceLocation(item.registryName!!, "inventory") + ) } @SubscribeEvent fun onTextureStitchPre(event: TextureStitchEvent.Pre) { - val compressedBlockTextures = listOf("metalblock_base", "metalblock_dark", "metalblock_light") + val compressedBlockTextures = + listOf("metalblock_base", "metalblock_dark", "metalblock_light") for (block in ClayiumBlocks.COMPRESSED_BLOCKS) { for (material in block.mapping.values) { val colorsRaw = material.colors ?: return val name = material.upperCamelName - val colors = colorsRaw.map { color -> - ColourRGBA(color shl 8).apply { a = 255.toByte() } + val colors = + colorsRaw.map { color -> ColourRGBA(color shl 8).apply { a = 255.toByte() } } - } - - val sprite = TextureExtra(clayiumId("blocks/compressed_$name").toString(), compressedBlockTextures, colors) + val sprite = + TextureExtra( + clayiumId("blocks/compressed_$name").toString(), + compressedBlockTextures, + colors + ) if (event.map.getTextureExtry(sprite.iconName) == null) { event.map.setTextureEntry(sprite) } diff --git a/src/main/kotlin/com/github/trc/clayium/client/ModelUtils.kt b/src/main/kotlin/com/github/trc/clayium/client/ModelUtils.kt index fc959b544..b5c1d5716 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/ModelUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/ModelUtils.kt @@ -13,68 +13,90 @@ object ModelUtils { val faceBakery = FaceBakery() - val sideCubes = listOf( - // From top to bottom, these are DOWN, UP, NORTH, SOUTH, WEST and EAST - Pair(Vector3f(5f, 0f, 5f), Vector3f(11f, 5f, 11f)), - Pair(Vector3f(5f, 11f, 5f), Vector3f(11f, 16f, 11f)), - Pair(Vector3f(5f, 5f, 0f), Vector3f(11f, 11f, 5f)), - Pair(Vector3f(5f, 5f, 11f), Vector3f(11f, 11f, 16f)), - Pair(Vector3f(0f, 5f, 5f), Vector3f(5f, 11f, 11f)), - Pair(Vector3f(11f, 5f, 5f), Vector3f(16f, 11f, 11f)), - ) + val sideCubes = + listOf( + // From top to bottom, these are DOWN, UP, NORTH, SOUTH, WEST and EAST + Pair(Vector3f(5f, 0f, 5f), Vector3f(11f, 5f, 11f)), + Pair(Vector3f(5f, 11f, 5f), Vector3f(11f, 16f, 11f)), + Pair(Vector3f(5f, 5f, 0f), Vector3f(11f, 11f, 5f)), + Pair(Vector3f(5f, 5f, 11f), Vector3f(11f, 11f, 16f)), + Pair(Vector3f(0f, 5f, 5f), Vector3f(5f, 11f, 11f)), + Pair(Vector3f(11f, 5f, 5f), Vector3f(16f, 11f, 11f)), + ) - private val uvCacheInt: Map> = EnumFacing.entries.associateWith { cubePos -> - EnumFacing.entries - .filter { it != cubePos.opposite } - .associateWith { facingOfCube -> - getUv(cubePos, facingOfCube).map { it.toInt() }.toIntArray() - } - } + private val uvCacheInt: Map> = + EnumFacing.entries.associateWith { cubePos -> + EnumFacing.entries + .filter { it != cubePos.opposite } + .associateWith { facingOfCube -> + getUv(cubePos, facingOfCube).map { it.toInt() }.toIntArray() + } + } - private val uvCacheFloat: Map> = EnumFacing.entries.associateWith { cubePos -> - EnumFacing.entries - .filter { it != cubePos.opposite } - .associateWith { facingOfCube -> - getUv(cubePos, facingOfCube) - } - } + private val uvCacheFloat: Map> = + EnumFacing.entries.associateWith { cubePos -> + EnumFacing.entries + .filter { it != cubePos.opposite } + .associateWith { facingOfCube -> getUv(cubePos, facingOfCube) } + } - fun createQuad(texture: TextureAtlasSprite, side: EnumFacing, from: Vector3f, to: Vector3f, uv: FloatArray): BakedQuad { + fun createQuad( + texture: TextureAtlasSprite, + side: EnumFacing, + from: Vector3f, + to: Vector3f, + uv: FloatArray + ): BakedQuad { return faceBakery.makeBakedQuad( - from, to, + from, + to, BlockPartFace(null, 0, "", BlockFaceUV(uv, 0)), - texture, side, ModelRotation.X0_Y0, - null, true, true + texture, + side, + ModelRotation.X0_Y0, + null, + true, + true ) } fun createSideCubeQuads(machineHull: TextureAtlasSprite): List> { return sideCubes.mapIndexed { index: Int, (from, to): Pair -> - val positionOfCube = EnumFacing.byIndex(index) - EnumFacing.entries - .filter { it != positionOfCube.opposite } - .map { createQuad(machineHull, it, from, to, getUvFloat(positionOfCube, it)) } + val positionOfCube = EnumFacing.byIndex(index) + EnumFacing.entries + .filter { it != positionOfCube.opposite } + .map { createQuad(machineHull, it, from, to, getUvFloat(positionOfCube, it)) } } } fun createCenterCubeQuads(machineHull: TextureAtlasSprite): List { - return EnumFacing.entries.map{ - createQuad(machineHull, it, Vector3f(5f, 5f, 5f), Vector3f(11f, 11f, 11f), floatArrayOf(5f, 5f, 11f, 11f)) + return EnumFacing.entries.map { + createQuad( + machineHull, + it, + Vector3f(5f, 5f, 5f), + Vector3f(11f, 11f, 11f), + floatArrayOf(5f, 5f, 11f, 11f) + ) } } /** - * if `sideOfCube == cubePos.opposite`, this throws IllegalArgumentException because that face is always hided. + * if `sideOfCube == cubePos.opposite`, this throws IllegalArgumentException because that face + * is always hided. */ fun getUvInt(cubePos: EnumFacing, sideOfCube: EnumFacing): IntArray { - return uvCacheInt[cubePos]?.get(sideOfCube) ?: throw IllegalArgumentException("Invisible side $sideOfCube of cube $cubePos") + return uvCacheInt[cubePos]?.get(sideOfCube) + ?: throw IllegalArgumentException("Invisible side $sideOfCube of cube $cubePos") } /** - * if `sideOfCube == cubePos.opposite`, this throws IllegalArgumentException because that face is always hided. + * if `sideOfCube == cubePos.opposite`, this throws IllegalArgumentException because that face + * is always hided. */ fun getUvFloat(cubePos: EnumFacing, sideOfCube: EnumFacing): FloatArray { - return uvCacheFloat[cubePos]?.get(sideOfCube) ?: throw IllegalArgumentException("Invisible side $sideOfCube of cube $cubePos") + return uvCacheFloat[cubePos]?.get(sideOfCube) + ?: throw IllegalArgumentException("Invisible side $sideOfCube of cube $cubePos") } private fun getUv(cubePos: EnumFacing, sideOfCube: EnumFacing): FloatArray { @@ -84,35 +106,38 @@ object ModelUtils { return when (cubePos) { EnumFacing.DOWN -> floatArrayOf(5f, 11f, 11f, 16f) EnumFacing.UP -> floatArrayOf(5f, 0f, 11f, 5f) - EnumFacing.NORTH -> when (sideOfCube) { - EnumFacing.UP -> floatArrayOf(5f, 0f, 11f, 5f) - EnumFacing.DOWN -> floatArrayOf(5f, 11f, 11f, 16f) - EnumFacing.WEST -> floatArrayOf(0f, 5f, 5f, 11f) - EnumFacing.EAST -> floatArrayOf(11f, 5f, 16f, 11f) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.SOUTH -> when (sideOfCube) { - EnumFacing.UP -> floatArrayOf(5f, 11f, 11f, 16f) - EnumFacing.DOWN -> floatArrayOf(5f, 0f, 11f, 5f) - EnumFacing.WEST -> floatArrayOf(11f, 5f, 16f, 11f) - EnumFacing.EAST -> floatArrayOf(0f, 5f, 5f, 11f) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.WEST -> when (sideOfCube) { - EnumFacing.UP, EnumFacing.DOWN -> floatArrayOf(0f, 5f, 5f, 11f) - EnumFacing.NORTH -> floatArrayOf(11f, 5f, 16f, 11f) - EnumFacing.SOUTH -> floatArrayOf(0f, 5f, 5f, 11f) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.EAST -> when (sideOfCube) { - EnumFacing.UP, EnumFacing.DOWN -> floatArrayOf(11f, 5f, 16f, 11f) - EnumFacing.NORTH -> floatArrayOf(0f, 5f, 5f, 11f) - EnumFacing.SOUTH -> floatArrayOf(11f, 5f, 16f, 11f) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } + EnumFacing.NORTH -> + when (sideOfCube) { + EnumFacing.UP -> floatArrayOf(5f, 0f, 11f, 5f) + EnumFacing.DOWN -> floatArrayOf(5f, 11f, 11f, 16f) + EnumFacing.WEST -> floatArrayOf(0f, 5f, 5f, 11f) + EnumFacing.EAST -> floatArrayOf(11f, 5f, 16f, 11f) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.SOUTH -> + when (sideOfCube) { + EnumFacing.UP -> floatArrayOf(5f, 11f, 11f, 16f) + EnumFacing.DOWN -> floatArrayOf(5f, 0f, 11f, 5f) + EnumFacing.WEST -> floatArrayOf(11f, 5f, 16f, 11f) + EnumFacing.EAST -> floatArrayOf(0f, 5f, 5f, 11f) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.WEST -> + when (sideOfCube) { + EnumFacing.UP, + EnumFacing.DOWN -> floatArrayOf(0f, 5f, 5f, 11f) + EnumFacing.NORTH -> floatArrayOf(11f, 5f, 16f, 11f) + EnumFacing.SOUTH -> floatArrayOf(0f, 5f, 5f, 11f) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.EAST -> + when (sideOfCube) { + EnumFacing.UP, + EnumFacing.DOWN -> floatArrayOf(11f, 5f, 16f, 11f) + EnumFacing.NORTH -> floatArrayOf(0f, 5f, 5f, 11f) + EnumFacing.SOUTH -> floatArrayOf(11f, 5f, 16f, 11f) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/gui/GuiClayWorkTable.kt b/src/main/kotlin/com/github/trc/clayium/client/gui/GuiClayWorkTable.kt index 580cc0fae..9badd0e82 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/gui/GuiClayWorkTable.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/gui/GuiClayWorkTable.kt @@ -15,10 +15,8 @@ import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @SideOnly(Side.CLIENT) -class GuiClayWorkTable( - playerInv: IInventory, - private val tile: TileClayWorkTable -) : GuiContainer(ContainerClayWorkTable(playerInv, tile)) { +class GuiClayWorkTable(playerInv: IInventory, private val tile: TileClayWorkTable) : + GuiContainer(ContainerClayWorkTable(playerInv, tile)) { override fun drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) { fontRenderer.drawString(I18n.format("tile.$MOD_ID.clay_work_table.name"), 6, 6, 0x404040) fontRenderer.drawString(I18n.format("container.inventory"), 8, ySize - 94, 0x404040) @@ -29,7 +27,14 @@ class GuiClayWorkTable( mc.textureManager.bindTexture(GUI_IMAGE) this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize) // progress bar - this.drawTexturedModalRect(guiLeft + 48, guiTop + 29, 176, 0, tile.getCraftingProgressScaled(80), 16) + this.drawTexturedModalRect( + guiLeft + 48, + guiTop + 29, + 176, + 0, + tile.getCraftingProgressScaled(80), + 16 + ) for (button in buttonList) { button.enabled = tile.canPushButton(button.id) } @@ -37,50 +42,70 @@ class GuiClayWorkTable( override fun initGui() { super.initGui() - buttonList.addAll(listOf( - GuiButtonImageToggleable( - ClayWorkTableMethod.ROLLING_HAND.id, - guiLeft + 40, guiTop + 52, - 16, 16, - 176, 32, - GUI_IMAGE, - ), - GuiButtonImageToggleable( - ClayWorkTableMethod.PUNCH.id, - guiLeft + 56, guiTop + 52, - 16, 16, - 192, 32, - GUI_IMAGE, - ), - GuiButtonImageToggleable( - ClayWorkTableMethod.ROLLING_PIN.id, - guiLeft + 72, guiTop + 52, - 16, 16, - 208, 32, - GUI_IMAGE, - ), - GuiButtonImageToggleable( - ClayWorkTableMethod.CUT_PLATE.id, - guiLeft + 88, guiTop + 52, - 16, 16, - 224, 32, - GUI_IMAGE, - ), - GuiButtonImageToggleable( - ClayWorkTableMethod.CUT_DISC.id, - guiLeft + 104, guiTop + 52, - 16, 16, - 240, 32, - GUI_IMAGE, - ), - GuiButtonImageToggleable( - ClayWorkTableMethod.CUT.id, - guiLeft + 120, guiTop + 52, - 16, 16, - 176, 80, - GUI_IMAGE, + buttonList.addAll( + listOf( + GuiButtonImageToggleable( + ClayWorkTableMethod.ROLLING_HAND.id, + guiLeft + 40, + guiTop + 52, + 16, + 16, + 176, + 32, + GUI_IMAGE, + ), + GuiButtonImageToggleable( + ClayWorkTableMethod.PUNCH.id, + guiLeft + 56, + guiTop + 52, + 16, + 16, + 192, + 32, + GUI_IMAGE, + ), + GuiButtonImageToggleable( + ClayWorkTableMethod.ROLLING_PIN.id, + guiLeft + 72, + guiTop + 52, + 16, + 16, + 208, + 32, + GUI_IMAGE, + ), + GuiButtonImageToggleable( + ClayWorkTableMethod.CUT_PLATE.id, + guiLeft + 88, + guiTop + 52, + 16, + 16, + 224, + 32, + GUI_IMAGE, + ), + GuiButtonImageToggleable( + ClayWorkTableMethod.CUT_DISC.id, + guiLeft + 104, + guiTop + 52, + 16, + 16, + 240, + 32, + GUI_IMAGE, + ), + GuiButtonImageToggleable( + ClayWorkTableMethod.CUT.id, + guiLeft + 120, + guiTop + 52, + 16, + 16, + 176, + 80, + GUI_IMAGE, + ) ) - )) + ) } override fun actionPerformed(button: GuiButton) { diff --git a/src/main/kotlin/com/github/trc/clayium/client/gui/TextureExtra.kt b/src/main/kotlin/com/github/trc/clayium/client/gui/TextureExtra.kt index fb458b715..2a7b299b9 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/gui/TextureExtra.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/gui/TextureExtra.kt @@ -29,7 +29,11 @@ class TextureExtra( return true } - override fun load(manager: IResourceManager, location: ResourceLocation, textureGetter: Function): Boolean { + override fun load( + manager: IResourceManager, + location: ResourceLocation, + textureGetter: Function + ): Boolean { val mipmapLevels = Minecraft.getMinecraft().gameSettings.mipmapLevels var bufImage: BufferedImage? = null val baseSprite = textureGetter.apply(clayiumId("blocks/${extras[0]}")) @@ -41,27 +45,29 @@ class TextureExtra( val height = baseSprite.iconHeight iconWidth = width iconHeight = height - val pixels = Array (mipmapLevels + 1) { null } + val pixels = Array(mipmapLevels + 1) { null } pixels[0] = IntArray(width * height) for ((i, extraTex) in extras.withIndex()) { val rl = createRl(extraTex, 0) val resource: IResource = manager.getResource(rl) - val image = resource.inputStream.use { stream -> - val image: BufferedImage = javax.imageio.ImageIO.read(stream) - if (colors != null) { - recolorImage(image, colors[i]) - } else { - image + val image = + resource.inputStream.use { stream -> + val image: BufferedImage = javax.imageio.ImageIO.read(stream) + if (colors != null) { + recolorImage(image, colors[i]) + } else { + image + } } - } - bufImage = if (bufImage == null) { - image - } else { - blendImages(bufImage, image) - } + bufImage = + if (bufImage == null) { + image + } else { + blendImages(bufImage, image) + } } bufImage!!.getRGB(0, 0, width, height, pixels[0], 0, width) this.clearFramesTextureData() @@ -87,11 +93,20 @@ private fun blendImages(image0: BufferedImage, image1: BufferedImage): BufferedI val a2 = a0 + a1 - a0 * a1 / 255 val r2 = - if ((a2 == 0)) r0 else (a0 * (255 - a1) * r0 / (255 * a0 + 255 * a1 - a0 * a1) + a1 * 255 * r1 / (255 * a0 + 255 * a1 - a0 * a1)) + if ((a2 == 0)) r0 + else + (a0 * (255 - a1) * r0 / (255 * a0 + 255 * a1 - a0 * a1) + + a1 * 255 * r1 / (255 * a0 + 255 * a1 - a0 * a1)) val g2 = - if ((a2 == 0)) g0 else (a0 * (255 - a1) * g0 / (255 * a0 + 255 * a1 - a0 * a1) + a1 * 255 * g1 / (255 * a0 + 255 * a1 - a0 * a1)) + if ((a2 == 0)) g0 + else + (a0 * (255 - a1) * g0 / (255 * a0 + 255 * a1 - a0 * a1) + + a1 * 255 * g1 / (255 * a0 + 255 * a1 - a0 * a1)) val b2 = - if ((a2 == 0)) b0 else (a0 * (255 - a1) * b0 / (255 * a0 + 255 * a1 - a0 * a1) + a1 * 255 * b1 / (255 * a0 + 255 * a1 - a0 * a1)) + if ((a2 == 0)) b0 + else + (a0 * (255 - a1) * b0 / (255 * a0 + 255 * a1 - a0 * a1) + + a1 * 255 * b1 / (255 * a0 + 255 * a1 - a0 * a1)) image0.setRGB(x, y, (r2 shl 16) + (g2 shl 8) + b2 + (a2 shl 24)) } } @@ -113,4 +128,4 @@ private fun recolorImage(image0: BufferedImage, colorRGBA: ColourRGBA): Buffered } } return ret -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/gui/button/GuiButtonImageToggleable.kt b/src/main/kotlin/com/github/trc/clayium/client/gui/button/GuiButtonImageToggleable.kt index f9ce611bf..0eeb34288 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/gui/button/GuiButtonImageToggleable.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/gui/button/GuiButtonImageToggleable.kt @@ -18,7 +18,18 @@ class GuiButtonImageToggleable( private val xTexStartEnabledHovered: Int, private val yTexStartEnabledHovered: Int, private val resourceLocation: ResourceLocation -) : GuiButtonImage(buttonId, xIn, yIn, widthIn, heightIn, textureOffestX, textureOffestY, 0, resourceLocation) { +) : + GuiButtonImage( + buttonId, + xIn, + yIn, + widthIn, + heightIn, + textureOffestX, + textureOffestY, + 0, + resourceLocation + ) { constructor( buttonId: Int, xIn: Int, @@ -29,10 +40,17 @@ class GuiButtonImageToggleable( textureOffestY: Int, resource: ResourceLocation ) : this( - buttonId, xIn, yIn, widthIn, heightIn, - textureOffestX, textureOffestY, - textureOffestX, textureOffestY + heightIn, - textureOffestX, textureOffestY + heightIn * 2, + buttonId, + xIn, + yIn, + widthIn, + heightIn, + textureOffestX, + textureOffestY, + textureOffestX, + textureOffestY + heightIn, + textureOffestX, + textureOffestY + heightIn * 2, resource ) @@ -43,9 +61,23 @@ class GuiButtonImageToggleable( mc.textureManager.bindTexture(this.resourceLocation) GlStateManager.disableDepth() if (hovered) { - this.drawTexturedModalRect(x, y, xTexStartEnabledHovered, yTexStartEnabledHovered, width, height) + this.drawTexturedModalRect( + x, + y, + xTexStartEnabledHovered, + yTexStartEnabledHovered, + width, + height + ) } else { - this.drawTexturedModalRect(x, y, xTexStartEnabled, yTexStartEnabled, width, height) + this.drawTexturedModalRect( + x, + y, + xTexStartEnabled, + yTexStartEnabled, + width, + height + ) } GlStateManager.enableDepth() } @@ -53,4 +85,4 @@ class GuiButtonImageToggleable( super.drawButton(mc, mouseX, mouseY, partialTicks) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/LaserReflectorModelLoader.kt b/src/main/kotlin/com/github/trc/clayium/client/model/LaserReflectorModelLoader.kt index d32b318ff..dcffdaaaa 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/LaserReflectorModelLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/LaserReflectorModelLoader.kt @@ -30,17 +30,30 @@ object LaserReflectorModelLoader : ICustomModelLoader { return listOf(clayiumId("blocks/laserreflector")) } - override fun bake(state: IModelState, format: VertexFormat, bakedTextureGetter: Function): IBakedModel { + override fun bake( + state: IModelState, + format: VertexFormat, + bakedTextureGetter: Function + ): IBakedModel { return object : IBakedModel { - override fun getQuads( state: IBlockState?, side: EnumFacing?, rand: Long ): List = emptyList() - override fun getParticleTexture(): TextureAtlasSprite = bakedTextureGetter.apply(clayiumId("blocks/laserreflector")) + override fun getQuads( + state: IBlockState?, + side: EnumFacing?, + rand: Long + ): List = emptyList() + + override fun getParticleTexture(): TextureAtlasSprite = + bakedTextureGetter.apply(clayiumId("blocks/laserreflector")) override fun isAmbientOcclusion() = true + override fun isGui3d() = true + override fun isBuiltInRenderer() = true + override fun getOverrides(): ItemOverrideList = ItemOverrideList.NONE } } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MaterialStateMapper.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MaterialStateMapper.kt index 19bd220fe..f58332ce0 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MaterialStateMapper.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MaterialStateMapper.kt @@ -14,7 +14,8 @@ object MaterialStateMapper : IStateMapper { private val INDEX_PATTERN = Regex("_[0-9]+$") override fun putStateModelLocations(blockIn: Block): Map { - if (blockIn !is BlockMaterialBase) throw IllegalArgumentException("Block is not a BlockMaterialBase") + if (blockIn !is BlockMaterialBase) + throw IllegalArgumentException("Block is not a BlockMaterialBase") return blockIn.blockState.validStates.associateWith(::createModelLocation) } @@ -33,4 +34,4 @@ object MaterialStateMapper : IStateMapper { } return ModelLoader.MODEL_MISSING } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityBakedModel.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityBakedModel.kt index 144dfb984..b5a365183 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityBakedModel.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityBakedModel.kt @@ -19,7 +19,9 @@ class MetaTileEntityBakedModel : IModelParticleProvider { override fun getQuads(state: IBlockState?, side: EnumFacing?, rand: Long): List { if (state == null || side == null || state !is IExtendedBlockState) return emptyList() - val mte = (state.getValue(TILE_ENTITY) as? MetaTileEntityHolder)?.metaTileEntity ?: return emptyList() + val mte = + (state.getValue(TILE_ENTITY) as? MetaTileEntityHolder)?.metaTileEntity + ?: return emptyList() val quads = mutableListOf() mte.getQuads(quads, state, side, rand) @@ -30,18 +32,32 @@ class MetaTileEntityBakedModel : IModelParticleProvider { return quads } - override fun getHitEffects(traceResult: RayTraceResult, state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { - val metaTileEntity = world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) + override fun getHitEffects( + traceResult: RayTraceResult, + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { + val metaTileEntity = + world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) return setOf(ModelTextures.getHullTexture(metaTileEntity.tier)) } - override fun getDestroyEffects(state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { - val metaTileEntity = world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) + override fun getDestroyEffects( + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { + val metaTileEntity = + world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) return setOf(ModelTextures.getHullTexture(metaTileEntity.tier)) } override fun isAmbientOcclusion() = true + override fun isGui3d() = true + override fun isBuiltInRenderer() = false + override fun getOverrides(): ItemOverrideList = ItemOverrideList.NONE -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModel.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModel.kt index 100b3158a..e200be301 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModel.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModel.kt @@ -79,4 +79,4 @@ class MetaTileEntityModel( MetaTileEntityBakedModel() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModelLoader.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModelLoader.kt index c916e1225..887e264a5 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModelLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityModelLoader.kt @@ -14,8 +14,7 @@ object MetaTileEntityModelLoader : ICustomModelLoader { } override fun accepts(modelLocation: ResourceLocation): Boolean { - if (!(modelLocation.namespace == MOD_ID - && modelLocation is ModelResourceLocation)) { + if (!(modelLocation.namespace == MOD_ID && modelLocation is ModelResourceLocation)) { return false } @@ -28,4 +27,4 @@ object MetaTileEntityModelLoader : ICustomModelLoader { val isPipe = modelLocation.variant.split("=").last().toBooleanStrict() return MetaTileEntityModel(isPipe) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityPipeBakedModel.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityPipeBakedModel.kt index 3492611d6..e4ef632ab 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityPipeBakedModel.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetaTileEntityPipeBakedModel.kt @@ -23,52 +23,67 @@ import org.lwjgl.util.vector.Vector3f class MetaTileEntityPipeBakedModel : IModelParticleProvider { - private val sideCubes = listOf( - // From top to bottom, these are DOWN, UP, NORTH, SOUTH, WEST and EAST - Pair(Vector3f(5f, 0f, 5f), Vector3f(11f, 5f, 11f)), - Pair(Vector3f(5f, 11f, 5f), Vector3f(11f, 16f, 11f)), - Pair(Vector3f(5f, 5f, 0f), Vector3f(11f, 11f, 5f)), - Pair(Vector3f(5f, 5f, 11f), Vector3f(11f, 11f, 16f)), - Pair(Vector3f(0f, 5f, 5f), Vector3f(5f, 11f, 11f)), - Pair(Vector3f(11f, 5f, 5f), Vector3f(16f, 11f, 11f)), - ) + private val sideCubes = + listOf( + // From top to bottom, these are DOWN, UP, NORTH, SOUTH, WEST and EAST + Pair(Vector3f(5f, 0f, 5f), Vector3f(11f, 5f, 11f)), + Pair(Vector3f(5f, 11f, 5f), Vector3f(11f, 16f, 11f)), + Pair(Vector3f(5f, 5f, 0f), Vector3f(11f, 11f, 5f)), + Pair(Vector3f(5f, 5f, 11f), Vector3f(11f, 11f, 16f)), + Pair(Vector3f(0f, 5f, 5f), Vector3f(5f, 11f, 11f)), + Pair(Vector3f(11f, 5f, 5f), Vector3f(16f, 11f, 11f)), + ) // Tier -> Pipe Cube Pos -> Side of a Cube -> Quad - val cubeQuads: Map>> = ClayTiers.entries.associateWith { iTier -> - EnumFacing.entries.map { cubePos -> - EnumFacing.entries - .filter { it != cubePos.opposite } - .map { quadSide -> - ModelTextures.faceBakery.makeBakedQuad( - sideCubes[cubePos.index].first, - sideCubes[cubePos.index].second, - BlockPartFace(null, 0, "", getUv(cubePos = cubePos, sideOfCube = quadSide)), - ModelTextures.getHullTexture(iTier), - quadSide, ModelRotation.X0_Y0, - null, true, true - ) - } + val cubeQuads: Map>> = + ClayTiers.entries.associateWith { iTier -> + EnumFacing.entries.map { cubePos -> + EnumFacing.entries + .filter { it != cubePos.opposite } + .map { quadSide -> + ModelTextures.faceBakery.makeBakedQuad( + sideCubes[cubePos.index].first, + sideCubes[cubePos.index].second, + BlockPartFace( + null, + 0, + "", + getUv(cubePos = cubePos, sideOfCube = quadSide) + ), + ModelTextures.getHullTexture(iTier), + quadSide, + ModelRotation.X0_Y0, + null, + true, + true + ) + } + } } - } // Tier -> Side of a Center Cube -> Quad - val centerCubeQuads: Map> = ClayTiers.entries.associateWith { tier -> - EnumFacing.entries.map { - ModelTextures.faceBakery.makeBakedQuad( - Vector3f(5f, 5f, 5f), - Vector3f(11f, 11f, 11f), - BlockPartFace(null, 0, "", BlockFaceUV(floatArrayOf(5f, 5f, 11f, 11f), 0)), - ModelTextures.getHullTexture(tier), - it, ModelRotation.X0_Y0, - null, true, true - ) + val centerCubeQuads: Map> = + ClayTiers.entries.associateWith { tier -> + EnumFacing.entries.map { + ModelTextures.faceBakery.makeBakedQuad( + Vector3f(5f, 5f, 5f), + Vector3f(11f, 11f, 11f), + BlockPartFace(null, 0, "", BlockFaceUV(floatArrayOf(5f, 5f, 11f, 11f), 0)), + ModelTextures.getHullTexture(tier), + it, + ModelRotation.X0_Y0, + null, + true, + true + ) + } } - } override fun getQuads(state: IBlockState?, side: EnumFacing?, rand: Long): List { if (state == null || side != null || state !is IExtendedBlockState) return emptyList() - val metaTileEntity = (state.getValue(BlockMachine.TILE_ENTITY) as? MetaTileEntityHolder)?.metaTileEntity - ?: return emptyList() + val metaTileEntity = + (state.getValue(BlockMachine.TILE_ENTITY) as? MetaTileEntityHolder)?.metaTileEntity + ?: return emptyList() val tier = metaTileEntity.tier val connections = metaTileEntity.connectionsCache @@ -87,19 +102,33 @@ class MetaTileEntityPipeBakedModel : IModelParticleProvider { return quads } - override fun getHitEffects(traceResult: RayTraceResult, state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { - val metaTileEntity = world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) + override fun getHitEffects( + traceResult: RayTraceResult, + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { + val metaTileEntity = + world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) return setOf(ModelTextures.getHullTexture(metaTileEntity.tier)) } - override fun getDestroyEffects(state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { - val metaTileEntity = world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) + override fun getDestroyEffects( + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { + val metaTileEntity = + world.getMetaTileEntity(pos) ?: return setOf(TextureUtils.getMissingSprite()) return setOf(ModelTextures.getHullTexture(metaTileEntity.tier)) } override fun isAmbientOcclusion() = true + override fun isGui3d() = true + override fun isBuiltInRenderer() = false + override fun getOverrides(): ItemOverrideList = ItemOverrideList.NONE private fun getUv(cubePos: EnumFacing, sideOfCube: EnumFacing): BlockFaceUV { @@ -109,35 +138,38 @@ class MetaTileEntityPipeBakedModel : IModelParticleProvider { return when (cubePos) { EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(5f, 11f, 11f, 16f), 0) EnumFacing.UP -> BlockFaceUV(floatArrayOf(5f, 0f, 11f, 5f), 0) - EnumFacing.NORTH -> when (sideOfCube) { - EnumFacing.UP -> BlockFaceUV(floatArrayOf(5f, 0f, 11f, 5f), 0) - EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(5f, 11f, 11f, 16f), 0) - EnumFacing.WEST -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) - EnumFacing.EAST -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.SOUTH -> when (sideOfCube) { - EnumFacing.UP -> BlockFaceUV(floatArrayOf(5f, 11f, 11f, 16f), 0) - EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(5f, 0f, 11f, 5f), 0) - EnumFacing.WEST -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) - EnumFacing.EAST -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.WEST -> when (sideOfCube) { - EnumFacing.UP, EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) - EnumFacing.NORTH -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) - EnumFacing.SOUTH -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } - - EnumFacing.EAST -> when (sideOfCube) { - EnumFacing.UP, EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) - EnumFacing.NORTH -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) - EnumFacing.SOUTH -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) - else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") - } + EnumFacing.NORTH -> + when (sideOfCube) { + EnumFacing.UP -> BlockFaceUV(floatArrayOf(5f, 0f, 11f, 5f), 0) + EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(5f, 11f, 11f, 16f), 0) + EnumFacing.WEST -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) + EnumFacing.EAST -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.SOUTH -> + when (sideOfCube) { + EnumFacing.UP -> BlockFaceUV(floatArrayOf(5f, 11f, 11f, 16f), 0) + EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(5f, 0f, 11f, 5f), 0) + EnumFacing.WEST -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) + EnumFacing.EAST -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.WEST -> + when (sideOfCube) { + EnumFacing.UP, + EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) + EnumFacing.NORTH -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) + EnumFacing.SOUTH -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } + EnumFacing.EAST -> + when (sideOfCube) { + EnumFacing.UP, + EnumFacing.DOWN -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) + EnumFacing.NORTH -> BlockFaceUV(floatArrayOf(0f, 5f, 5f, 11f), 0) + EnumFacing.SOUTH -> BlockFaceUV(floatArrayOf(11f, 5f, 16f, 11f), 0) + else -> throw IllegalArgumentException("Invalid side of cube: $sideOfCube") + } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModel.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModel.kt index 7c64c6c0a..9a02e8f38 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModel.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModel.kt @@ -20,7 +20,11 @@ import net.minecraftforge.common.property.IExtendedBlockState import java.util.function.Function class MetalBlockModel : IModel { - override fun bake(state: IModelState, format: VertexFormat, bakedTextureGetter: Function): IBakedModel { + override fun bake( + state: IModelState, + format: VertexFormat, + bakedTextureGetter: Function + ): IBakedModel { return MetalBlockBakedModel(bakedTextureGetter) } @@ -36,19 +40,29 @@ class MetalBlockModel : IModel { val exState = state as? IExtendedBlockState ?: return emptyList() val materialName = exState.getValue(BlockCompressed.MATERIAL_NAME) val quads = mutableListOf() - val allSideQuads = cache.getOrPut(materialName) { - val atlas = texGetter.apply(clayiumId("blocks/compressed_$materialName")) - EnumFacing.entries.map { ModelTextures.createQuad(it, atlas) } - } + val allSideQuads = + cache.getOrPut(materialName) { + val atlas = texGetter.apply(clayiumId("blocks/compressed_$materialName")) + EnumFacing.entries.map { ModelTextures.createQuad(it, atlas) } + } quads.add(allSideQuads[side.index]) return quads } - override fun getHitEffects(traceResult: RayTraceResult, state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { + override fun getHitEffects( + traceResult: RayTraceResult, + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { return getParticle(state) } - override fun getDestroyEffects(state: IBlockState?, world: IBlockAccess?, pos: BlockPos?): Set { + override fun getDestroyEffects( + state: IBlockState?, + world: IBlockAccess?, + pos: BlockPos? + ): Set { return getParticle(state) } @@ -60,11 +74,13 @@ class MetalBlockModel : IModel { } override fun isAmbientOcclusion() = true + override fun isGui3d() = true + override fun isBuiltInRenderer() = false override fun getOverrides(): ItemOverrideList { return ItemOverrideList.NONE } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModelLoader.kt b/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModelLoader.kt index 241677f7e..f16e68278 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModelLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/MetalBlockModelLoader.kt @@ -8,18 +8,16 @@ import net.minecraftforge.client.model.ICustomModelLoader import net.minecraftforge.client.model.IModel object MetalBlockModelLoader : ICustomModelLoader { - override fun onResourceManagerReload(resourceManager: IResourceManager) { - } + override fun onResourceManagerReload(resourceManager: IResourceManager) {} override fun accepts(modelLocation: ResourceLocation): Boolean { if (modelLocation !is ModelResourceLocation) return false - return modelLocation.namespace == MOD_ID - && modelLocation.path == "material/compressed_material" - && modelLocation.variant == "variant=block" - + return modelLocation.namespace == MOD_ID && + modelLocation.path == "material/compressed_material" && + modelLocation.variant == "variant=block" } override fun loadModel(modelLocation: ResourceLocation): IModel { return MetalBlockModel() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/model/ModelTextures.kt b/src/main/kotlin/com/github/trc/clayium/client/model/ModelTextures.kt index cd36ad68d..ca29a774f 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/model/ModelTextures.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/model/ModelTextures.kt @@ -39,8 +39,11 @@ object ModelTextures { private set // metaTileEntity.faceTexture -> map - private val _faceQuads: MutableMap> = mutableMapOf() - val FACE_QUADS: Map> get() = _faceQuads + private val _faceQuads: MutableMap> = + mutableMapOf() + val FACE_QUADS: Map> + get() = _faceQuads + private lateinit var HULL_QUADS: Map> private lateinit var HULL_TEXTURES: Map private lateinit var inputModeQuads: Map?> @@ -48,14 +51,22 @@ object ModelTextures { private lateinit var filterQuads: List val faceBakery = FaceBakery() - fun createQuad(side: EnumFacing, texture: TextureAtlasSprite, uv: FloatArray = floatArrayOf(0f, 0f, 16f, 16f)): BakedQuad { + + fun createQuad( + side: EnumFacing, + texture: TextureAtlasSprite, + uv: FloatArray = floatArrayOf(0f, 0f, 16f, 16f) + ): BakedQuad { return faceBakery.makeBakedQuad( Vector3f(0f, 0f, 0f), Vector3f(16f, 16f, 16f), BlockPartFace(null, 0, "", BlockFaceUV(uv, 0)), texture, - side, ModelRotation.X0_Y0, - null, true, true, + side, + ModelRotation.X0_Y0, + null, + true, + true, ) } @@ -64,15 +75,16 @@ object ModelTextures { isInitialized = true MISSING = getter.apply(ModelLoader.MODEL_MISSING) - this.HULL_TEXTURES = ClayTiers.entries.associate { - it.prefixTranslationKey to getter.apply(it.hullLocation) - } + this.HULL_TEXTURES = + ClayTiers.entries.associate { it.prefixTranslationKey to getter.apply(it.hullLocation) } - this.HULL_QUADS = ClayTiers.entries.associate { tier -> - tier.prefixTranslationKey to (EnumFacing.VALUES.associateWith { side -> - createQuad(side, getHullTexture(tier)) - }) - } + this.HULL_QUADS = + ClayTiers.entries.associate { tier -> + tier.prefixTranslationKey to + (EnumFacing.VALUES.associateWith { side -> + createQuad(side, getHullTexture(tier)) + }) + } _faceQuads.clear() for (registry in ClayiumApi.mteManager.allRegistries()) { @@ -88,43 +100,47 @@ object ModelTextures { } } - this.inputModeQuads = MachineIoMode.entries.associateWith { ioMode -> - val textureName = when (ioMode) { - NONE -> return@associateWith null - FIRST -> "import_1" - SECOND -> "import_2" - ALL -> "import" - CE -> "import_energy" - M_ALL -> "import_m0" - M_1 -> "import_m1" - M_2 -> "import_m2" - M_3 -> "import_m3" - M_4 -> "import_m4" - M_5 -> "import_m5" - M_6 -> "import_m6" + this.inputModeQuads = + MachineIoMode.entries.associateWith { ioMode -> + val textureName = + when (ioMode) { + NONE -> return@associateWith null + FIRST -> "import_1" + SECOND -> "import_2" + ALL -> "import" + CE -> "import_energy" + M_ALL -> "import_m0" + M_1 -> "import_m1" + M_2 -> "import_m2" + M_3 -> "import_m3" + M_4 -> "import_m4" + M_5 -> "import_m5" + M_6 -> "import_m6" + } + val atlasSprite = getter.apply(clayiumId("blocks/$textureName")) + EnumFacing.entries.map { side -> createQuad(side, atlasSprite) } } - val atlasSprite = getter.apply(clayiumId("blocks/$textureName")) - EnumFacing.entries.map { side -> createQuad(side, atlasSprite) } - } - outputModeQuads = MachineIoMode.entries.associateWith { ioMode -> - val textureName = when (ioMode) { - NONE -> return@associateWith null - FIRST -> "export_1" - SECOND -> "export_2" - ALL -> "export" - CE -> return@associateWith null - M_ALL -> "export_m0" - M_1 -> "export_m1" - M_2 -> "export_m2" - M_3 -> "export_m3" - M_4 -> "export_m4" - M_5 -> "export_m5" - M_6 -> "export_m6" + outputModeQuads = + MachineIoMode.entries.associateWith { ioMode -> + val textureName = + when (ioMode) { + NONE -> return@associateWith null + FIRST -> "export_1" + SECOND -> "export_2" + ALL -> "export" + CE -> return@associateWith null + M_ALL -> "export_m0" + M_1 -> "export_m1" + M_2 -> "export_m2" + M_3 -> "export_m3" + M_4 -> "export_m4" + M_5 -> "export_m5" + M_6 -> "export_m6" + } + val atlasSprite = getter.apply(clayiumId("blocks/$textureName")) + EnumFacing.entries.map { side -> createQuad(side, atlasSprite) } } - val atlasSprite = getter.apply(clayiumId("blocks/$textureName")) - EnumFacing.entries.map { side -> createQuad(side, atlasSprite) } - } val filterSprite = getter.apply(clayiumId("blocks/filter")) filterQuads = EnumFacing.entries.map { createQuad(it, filterSprite) } @@ -149,4 +165,4 @@ object ModelTextures { fun getFilterQuad(side: EnumFacing): BakedQuad { return filterQuads[side.index] } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/AreaMarkerRenderer.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/AreaMarkerRenderer.kt index b3f4f46ad..ad4f73aee 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/AreaMarkerRenderer.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/AreaMarkerRenderer.kt @@ -5,7 +5,14 @@ import codechicken.lib.vec.Cuboid6 import net.minecraft.client.renderer.GlStateManager object AreaMarkerRenderer { - fun render(source: Cuboid6, area: Cuboid6?, x: Double, y: Double, z: Double, mode: RangeRenderMode) { + fun render( + source: Cuboid6, + area: Cuboid6?, + x: Double, + y: Double, + z: Double, + mode: RangeRenderMode + ) { if (mode == RangeRenderMode.DISABLED) return GlStateManager.pushMatrix() GlStateManager.translate(x, y, z) @@ -34,19 +41,25 @@ object AreaMarkerRenderer { private fun renderRangeOverlay(range: Cuboid6, xray: Boolean) { GlStateManager.pushMatrix() CRenderUtils.enableTranslucent() - if (xray) { CRenderUtils.enableXray() } + if (xray) { + CRenderUtils.enableXray() + } run { GlStateManager.color(0.1f, 0.1f, 0.7f, 0.3f) RenderUtils.drawCuboidSolid(range) GlStateManager.color(0.1f, 0.1f, 0.7f, 1f) RenderUtils.drawCuboidOutline(range) } - if (xray) { CRenderUtils.disableXray() } + if (xray) { + CRenderUtils.disableXray() + } CRenderUtils.disableTranslucent() GlStateManager.popMatrix() } enum class RangeRenderMode { - DISABLED, ENABLED, ENABLED_XRAY + DISABLED, + ENABLED, + ENABLED_XRAY } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/CRenderUtils.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/CRenderUtils.kt index d73f9098b..318e7b135 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/CRenderUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/CRenderUtils.kt @@ -7,8 +7,10 @@ object CRenderUtils { GlStateManager.disableLighting() GlStateManager.enableBlend() GlStateManager.tryBlendFuncSeparate( - GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, - GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO + GlStateManager.SourceFactor.SRC_ALPHA, + GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, + GlStateManager.SourceFactor.ONE, + GlStateManager.DestFactor.ZERO ) GlStateManager.enableDepth() GlStateManager.depthMask(false) @@ -35,4 +37,4 @@ object CRenderUtils { GlStateManager.enableLighting() GlStateManager.enableTexture2D() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayLaserReflectorRenderer.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayLaserReflectorRenderer.kt index 6ceb3948c..24be22ca9 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayLaserReflectorRenderer.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayLaserReflectorRenderer.kt @@ -11,7 +11,15 @@ import net.minecraft.util.EnumFacing import org.lwjgl.opengl.GL11 object ClayLaserReflectorRenderer : TileEntitySpecialRenderer() { - override fun render(reflector: TileEntityClayLaserReflector, x: Double, y: Double, z: Double, partialTicks: Float, destroyStage: Int, alpha: Float) { + override fun render( + reflector: TileEntityClayLaserReflector, + x: Double, + y: Double, + z: Double, + partialTicks: Float, + destroyStage: Int, + alpha: Float + ) { GlStateManager.pushMatrix() GlStateManager.disableLighting() GlStateManager.enableBlend() @@ -25,7 +33,7 @@ object ClayLaserReflectorRenderer : TileEntitySpecialRenderer Unit, ) { val rawLaserRed = laser.red @@ -22,7 +27,7 @@ object ClayLaserRenderer { val max = maxOf(rawLaserRed, rawLaserGreen, rawLaserBlue) if (max == 0) return - //reference: https://qiita.com/KrGit3/items/6b2673c6362a3f88ef7a + // reference: https://qiita.com/KrGit3/items/6b2673c6362a3f88ef7a GlStateManager.pushMatrix() GlStateManager.disableLighting() GlStateManager.enableBlend() @@ -78,4 +83,4 @@ object ClayLaserRenderer { GlStateManager.enableDepth() GlStateManager.popMatrix() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayMarkerTESR.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayMarkerTESR.kt index 5dcd3d2cd..d33409b55 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayMarkerTESR.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/ClayMarkerTESR.kt @@ -7,10 +7,19 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer object ClayMarkerTESR : TileEntitySpecialRenderer() { private val clayMarkerC6 = Cuboid6(BlockClayMarker.CLAY_MARKER_AABB) - override fun render(te: TileClayMarker, x: Double, y: Double, z: Double, partialTicks: Float, destroyStage: Int, alpha: Float) { + + override fun render( + te: TileClayMarker, + x: Double, + y: Double, + z: Double, + partialTicks: Float, + destroyStage: Int, + alpha: Float + ) { val range = te.rangeRelative ?: return AreaMarkerRenderer.render(clayMarkerC6, range, x, y, z, te.rangeRenderMode) } override fun isGlobalRenderer(te: TileClayMarker) = true -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/InterfaceRenderer.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/InterfaceRenderer.kt index 2fab23172..8bc197270 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/InterfaceRenderer.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/InterfaceRenderer.kt @@ -19,7 +19,11 @@ object InterfaceRenderer { val OVERLAY_AABB = Block.FULL_BLOCK_AABB.grow(0.001) fun renderHighlight( - tileEntity: MetaTileEntityHolder, syncInterface: ISynchronizedInterface, x: Double, y: Double, z: Double, + tileEntity: MetaTileEntityHolder, + syncInterface: ISynchronizedInterface, + x: Double, + y: Double, + z: Double, partialTicks: Float, ) { val metaTileEntityStack = syncInterface.targetItemStack @@ -55,16 +59,18 @@ object InterfaceRenderer { } renderItem(metaTileEntityStack, tickTime.toFloat()) GlStateManager.pushMatrix() - GlStateManager.translate(0f, 0.4f, 0f) - GlStateManager.scale(0.5f, 0.5f, 0.5f) - renderString(metaTileEntityStack.displayName) + GlStateManager.translate(0f, 0.4f, 0f) + GlStateManager.scale(0.5f, 0.5f, 0.5f) + renderString(metaTileEntityStack.displayName) GlStateManager.popMatrix() GlStateManager.pushMatrix() - GlStateManager.translate(0f, 0.275f, 0f) - GlStateManager.scale(0.25f, 0.25f, 0.25f) + GlStateManager.translate(0f, 0.275f, 0f) + GlStateManager.scale(0.25f, 0.25f, 0.25f) @Suppress("UsePropertyAccessSyntax") // .getName() instead of .name for lower-case - renderString("${targetPos.x}, ${targetPos.y}, ${targetPos.z}; ${targetDimensionType.getName()}") + renderString( + "${targetPos.x}, ${targetPos.y}, ${targetPos.z}; ${targetDimensionType.getName()}" + ) GlStateManager.popMatrix() } GlStateManager.popMatrix() @@ -89,36 +95,114 @@ object InterfaceRenderer { bufferBuilder.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION) GlStateManager.glLineWidth(4f) bufferBuilder.pos(0.5, 0.5, 0.5).endVertex() - bufferBuilder.pos(offsetPos.x + 0.5, offsetPos.y + 0.5, offsetPos.z + 0.5).endVertex() + bufferBuilder + .pos(offsetPos.x + 0.5, offsetPos.y + 0.5, offsetPos.z + 0.5) + .endVertex() tessellator.draw() - GlStateManager.translate(offsetPos.x.toDouble(), offsetPos.y.toDouble(), offsetPos.z.toDouble()) + GlStateManager.translate( + offsetPos.x.toDouble(), + offsetPos.y.toDouble(), + offsetPos.z.toDouble() + ) // render full block box val aabb = OVERLAY_AABB bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_NORMAL) - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.minZ).normal(0.0F, -1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.minZ).normal(0.0F, -1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.minZ).normal(0.0F, 1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.minZ).normal(0.0F, 1.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.maxY, aabb.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.minX, aabb.minY, aabb.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.minZ).normal(1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.minZ).normal(1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.maxY, aabb.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex() - bufferBuilder.pos(aabb.maxX, aabb.minY, aabb.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.minZ) + .normal(0.0F, 0.0F, -1.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.minZ) + .normal(0.0F, 0.0F, -1.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.minZ) + .normal(0.0F, 0.0F, -1.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.minZ) + .normal(0.0F, 0.0F, -1.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.maxZ) + .normal(0.0F, 0.0F, 1.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.maxZ) + .normal(0.0F, 0.0F, 1.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.maxZ) + .normal(0.0F, 0.0F, 1.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.maxZ) + .normal(0.0F, 0.0F, 1.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.minZ) + .normal(0.0F, -1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.minZ) + .normal(0.0F, -1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.maxZ) + .normal(0.0F, -1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.maxZ) + .normal(0.0F, -1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.maxZ) + .normal(0.0F, 1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.maxZ) + .normal(0.0F, 1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.minZ) + .normal(0.0F, 1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.minZ) + .normal(0.0F, 1.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.maxZ) + .normal(-1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.maxZ) + .normal(-1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.maxY, aabb.minZ) + .normal(-1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.minX, aabb.minY, aabb.minZ) + .normal(-1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.minZ) + .normal(1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.minZ) + .normal(1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.maxY, aabb.maxZ) + .normal(1.0F, 0.0F, 0.0F) + .endVertex() + bufferBuilder + .pos(aabb.maxX, aabb.minY, aabb.maxZ) + .normal(1.0F, 0.0F, 0.0F) + .endVertex() tessellator.draw() GlStateManager.enableDepth() GlStateManager.enableCull() @@ -142,7 +226,9 @@ object InterfaceRenderer { GlStateManager.color(1f, 1f, 1f, 0.7f) val itemBakedModel = mc.renderItem.getItemModelWithOverrides(stack, null, null) mc.textureManager.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE) - mc.textureManager.getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).setBlurMipmap(false, false) + mc.textureManager + .getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE) + .setBlurMipmap(false, false) GlStateManager.pushMatrix() GlStateManager.rotate(tickTime * 4f, 0f, 1f, 0f) @@ -164,7 +250,8 @@ object InterfaceRenderer { GlStateManager.tryBlendFuncSeparate( GlStateManager.SourceFactor.SRC_ALPHA, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, + GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, + GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO ) val width = mc.fontRenderer.getStringWidth(text) / 2 @@ -191,4 +278,4 @@ object InterfaceRenderer { } GlStateManager.popMatrix() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/LaserReflectorItemStackRenderer.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/LaserReflectorItemStackRenderer.kt index cacda4d9e..f3c17efad 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/LaserReflectorItemStackRenderer.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/LaserReflectorItemStackRenderer.kt @@ -21,7 +21,7 @@ object LaserReflectorItemStackRenderer : TileEntityItemStackRenderer() { val tessellator = Tessellator.getInstance() val buf = tessellator.buffer - GlStateManager.color(1f, 1f, 1f ,1f) + GlStateManager.color(1f, 1f, 1f, 1f) GlStateManager.translate(0.5, 0.5, 0.5) GlStateManager.scale(0.8f, 0.8f, 0.8f) @@ -30,8 +30,9 @@ object LaserReflectorItemStackRenderer : TileEntityItemStackRenderer() { GlStateManager.translate(-0.5, -0.5, -0.5) GlStateManager.translate(0.0, 0.1, 0.0) - - TileEntityRendererDispatcher.instance.renderEngine.bindTexture(clayiumId("textures/blocks/laserreflector.png")) + TileEntityRendererDispatcher.instance.renderEngine.bindTexture( + clayiumId("textures/blocks/laserreflector.png") + ) val offset = 0.125 val offset2 = offset * 2 @@ -64,4 +65,4 @@ object LaserReflectorItemStackRenderer : TileEntityItemStackRenderer() { GlStateManager.enableDepth() GlStateManager.popMatrix() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/MetaTileEntityRenderDispatcher.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/MetaTileEntityRenderDispatcher.kt index 71be92bc5..c04b2076f 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/MetaTileEntityRenderDispatcher.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/MetaTileEntityRenderDispatcher.kt @@ -8,23 +8,47 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer import net.minecraft.entity.player.EntityPlayer object MetaTileEntityRenderDispatcher : TileEntitySpecialRenderer() { - override fun render(holder: MetaTileEntityHolder, x: Double, y: Double, z: Double, partialTicks: Float, destroyStage: Int, alpha: Float) { + override fun render( + holder: MetaTileEntityHolder, + x: Double, + y: Double, + z: Double, + partialTicks: Float, + destroyStage: Int, + alpha: Float + ) { if (holder.blockType !is BlockMachine) return val metaTileEntity = holder.metaTileEntity ?: return metaTileEntity.renderMetaTileEntity(x, y, z, partialTicks) - val laserSource = metaTileEntity.getCapability(ClayiumTileCapabilities.CLAY_LASER_SOURCE, null) + val laserSource = + metaTileEntity.getCapability(ClayiumTileCapabilities.CLAY_LASER_SOURCE, null) if (laserSource?.irradiatingLaser != null) { - ClayLaserRenderer.renderLaser(laserSource.irradiatingLaser!!, laserSource.direction, laserSource.length, x, y, z, this::bindTexture) + ClayLaserRenderer.renderLaser( + laserSource.irradiatingLaser!!, + laserSource.direction, + laserSource.length, + x, + y, + z, + this::bindTexture + ) } if (metaTileEntity is ISynchronizedInterface) { InterfaceRenderer.renderHighlight(holder, metaTileEntity, x, y, z, partialTicks) } if (world.getBlockState(holder.pos).getValue(BlockMachine.IS_PIPE)) { - PipedMachineIoRenderer.renderPipeIoIcons(holder, x, y, z, this.rendererDispatcher.entity as? EntityPlayer ?: return, this::bindTexture) + PipedMachineIoRenderer.renderPipeIoIcons( + holder, + x, + y, + z, + this.rendererDispatcher.entity as? EntityPlayer ?: return, + this::bindTexture + ) } } override fun isGlobalRenderer(te: MetaTileEntityHolder): Boolean { return te.metaTileEntity?.useGlobalRenderer() == true } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/client/renderer/PipedMachineIoRenderer.kt b/src/main/kotlin/com/github/trc/clayium/client/renderer/PipedMachineIoRenderer.kt index d30cee2ba..09b411c2f 100644 --- a/src/main/kotlin/com/github/trc/clayium/client/renderer/PipedMachineIoRenderer.kt +++ b/src/main/kotlin/com/github/trc/clayium/client/renderer/PipedMachineIoRenderer.kt @@ -31,43 +31,50 @@ object PipedMachineIoRenderer { // offset to prevent z-fighting private const val CUBE_OFFSET = 0.01f - private val inputTextures: Map = MachineIoMode.entries.associateWith { - when (it) { - NONE -> null - FIRST -> clayiumId("textures/blocks/import_1_p.png") - SECOND -> clayiumId("textures/blocks/import_2_p.png") - ALL -> clayiumId("textures/blocks/import_p.png") - CE -> clayiumId("textures/blocks/import_energy_p.png") - M_ALL -> clayiumId("textures/blocks/import_m0_p.png") - M_1 -> clayiumId("textures/blocks/import_m1_p.png") - M_2 -> clayiumId("textures/blocks/import_m2_p.png") - M_3 -> clayiumId("textures/blocks/import_m3_p.png") - M_4 -> clayiumId("textures/blocks/import_m4_p.png") - M_5 -> clayiumId("textures/blocks/import_m5_p.png") - M_6 -> clayiumId("textures/blocks/import_m6_p.png") + private val inputTextures: Map = + MachineIoMode.entries.associateWith { + when (it) { + NONE -> null + FIRST -> clayiumId("textures/blocks/import_1_p.png") + SECOND -> clayiumId("textures/blocks/import_2_p.png") + ALL -> clayiumId("textures/blocks/import_p.png") + CE -> clayiumId("textures/blocks/import_energy_p.png") + M_ALL -> clayiumId("textures/blocks/import_m0_p.png") + M_1 -> clayiumId("textures/blocks/import_m1_p.png") + M_2 -> clayiumId("textures/blocks/import_m2_p.png") + M_3 -> clayiumId("textures/blocks/import_m3_p.png") + M_4 -> clayiumId("textures/blocks/import_m4_p.png") + M_5 -> clayiumId("textures/blocks/import_m5_p.png") + M_6 -> clayiumId("textures/blocks/import_m6_p.png") + } } - } - private val outputTextures: Map = MachineIoMode.entries.associateWith { - when (it) { - NONE, CE -> null - FIRST -> clayiumId("textures/blocks/export_1_p.png") - SECOND -> clayiumId("textures/blocks/export_2_p.png") - ALL -> clayiumId("textures/blocks/export_p.png") - M_ALL -> clayiumId("textures/blocks/export_m0_p.png") - M_1 -> clayiumId("textures/blocks/export_m1_p.png") - M_2 -> clayiumId("textures/blocks/export_m2_p.png") - M_3 -> clayiumId("textures/blocks/export_m3_p.png") - M_4 -> clayiumId("textures/blocks/export_m4_p.png") - M_5 -> clayiumId("textures/blocks/export_m5_p.png") - M_6 -> clayiumId("textures/blocks/export_m6_p.png") + private val outputTextures: Map = + MachineIoMode.entries.associateWith { + when (it) { + NONE, + CE -> null + FIRST -> clayiumId("textures/blocks/export_1_p.png") + SECOND -> clayiumId("textures/blocks/export_2_p.png") + ALL -> clayiumId("textures/blocks/export_p.png") + M_ALL -> clayiumId("textures/blocks/export_m0_p.png") + M_1 -> clayiumId("textures/blocks/export_m1_p.png") + M_2 -> clayiumId("textures/blocks/export_m2_p.png") + M_3 -> clayiumId("textures/blocks/export_m3_p.png") + M_4 -> clayiumId("textures/blocks/export_m4_p.png") + M_5 -> clayiumId("textures/blocks/export_m5_p.png") + M_6 -> clayiumId("textures/blocks/export_m6_p.png") + } } - } private val sideQuads = EnumFacing.entries.map { createQuadsFor(it) } fun renderPipeIoIcons( - holder: MetaTileEntityHolder, x: Double, y: Double, z: Double, player: EntityPlayer, + holder: MetaTileEntityHolder, + x: Double, + y: Double, + z: Double, + player: EntityPlayer, bindTexture: (ResourceLocation) -> Unit ) { if (!isPipingTool(player.heldItemMainhand.item)) return @@ -107,14 +114,15 @@ object PipedMachineIoRenderer { } private fun createQuadsFor(cubePos: EnumFacing): List { - val (x, y, z) = when (cubePos) { - EnumFacing.DOWN -> Triple(5f - CUBE_OFFSET, 0f - CUBE_OFFSET, 5f - CUBE_OFFSET) - EnumFacing.UP -> Triple(5f - CUBE_OFFSET, 11f - CUBE_OFFSET, 5f - CUBE_OFFSET) - EnumFacing.NORTH -> Triple(5f - CUBE_OFFSET, 5f - CUBE_OFFSET, 0f - CUBE_OFFSET) - EnumFacing.SOUTH -> Triple(5f - CUBE_OFFSET, 5f - CUBE_OFFSET, 11f - CUBE_OFFSET) - EnumFacing.WEST -> Triple(0f - CUBE_OFFSET, 5f - CUBE_OFFSET, 5f - CUBE_OFFSET) - EnumFacing.EAST -> Triple(11f - CUBE_OFFSET, 5f - CUBE_OFFSET, 5f - CUBE_OFFSET) - } + val (x, y, z) = + when (cubePos) { + EnumFacing.DOWN -> Triple(5f - CUBE_OFFSET, 0f - CUBE_OFFSET, 5f - CUBE_OFFSET) + EnumFacing.UP -> Triple(5f - CUBE_OFFSET, 11f - CUBE_OFFSET, 5f - CUBE_OFFSET) + EnumFacing.NORTH -> Triple(5f - CUBE_OFFSET, 5f - CUBE_OFFSET, 0f - CUBE_OFFSET) + EnumFacing.SOUTH -> Triple(5f - CUBE_OFFSET, 5f - CUBE_OFFSET, 11f - CUBE_OFFSET) + EnumFacing.WEST -> Triple(0f - CUBE_OFFSET, 5f - CUBE_OFFSET, 5f - CUBE_OFFSET) + EnumFacing.EAST -> Triple(11f - CUBE_OFFSET, 5f - CUBE_OFFSET, 5f - CUBE_OFFSET) + } val xTo = x + (if (cubePos.axis == EnumFacing.Axis.X) 5f else 6f) + CUBE_OFFSET * 2 val yTo = y + (if (cubePos.axis == EnumFacing.Axis.Y) 5f else 6f) + CUBE_OFFSET * 2 @@ -133,17 +141,18 @@ object PipedMachineIoRenderer { for (facingOfQuad in EnumFacing.entries) { if (facingOfQuad.axis == cubePos.axis) continue - val ptvs = when (facingOfQuad) { - EnumFacing.DOWN -> arrayOf(ptv4, ptv3, ptv7, ptv0) - EnumFacing.UP -> arrayOf(ptv1, ptv2, ptv6, ptv5) - EnumFacing.NORTH -> arrayOf(ptv2, ptv1, ptv0, ptv7) - EnumFacing.SOUTH -> arrayOf(ptv5, ptv6, ptv3, ptv4) - EnumFacing.EAST -> arrayOf(ptv1, ptv5, ptv4, ptv0) - EnumFacing.WEST -> arrayOf(ptv6, ptv2, ptv7, ptv3) - } + val ptvs = + when (facingOfQuad) { + EnumFacing.DOWN -> arrayOf(ptv4, ptv3, ptv7, ptv0) + EnumFacing.UP -> arrayOf(ptv1, ptv2, ptv6, ptv5) + EnumFacing.NORTH -> arrayOf(ptv2, ptv1, ptv0, ptv7) + EnumFacing.SOUTH -> arrayOf(ptv5, ptv6, ptv3, ptv4) + EnumFacing.EAST -> arrayOf(ptv1, ptv5, ptv4, ptv0) + EnumFacing.WEST -> arrayOf(ptv6, ptv2, ptv7, ptv3) + } val uv = ModelUtils.getUvInt(cubePos, facingOfQuad) quads.add(TexturedQuad(ptvs, uv[0], uv[1], uv[2], uv[3], 16f, 16f)) } return quads } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/ClayiumMod.kt b/src/main/kotlin/com/github/trc/clayium/common/ClayiumMod.kt index cf807e71b..9cbed631e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/ClayiumMod.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/ClayiumMod.kt @@ -15,17 +15,24 @@ import net.minecraftforge.fml.common.event.FMLPreInitializationEvent name = MOD_NAME, version = CTags.VERSION, modLanguageAdapter = "io.github.chaosunity.forgelin.KotlinAdapter", - dependencies = "required:forge@[14.23.5.2847,);" + + dependencies = + "required:forge@[14.23.5.2847,);" + "required-after:forgelin_continuous@[2.0.0.0,);" + "required-after:modularui@[2.4.3,);" + "required-after:codechickenlib@[3.2.3,);" + "required-after:mixinbooter@[9.1,);" + - "after:jei@[4.15.0,);" + "after:groovyscript@[1.1.3,);" + - "after:enderio;" + "after:theoneprobe;" + "after:gregtech;" + "after:jei@[4.15.0,);" + + "after:groovyscript@[1.1.3,);" + + "after:enderio;" + + "after:theoneprobe;" + + "after:gregtech;" ) object ClayiumMod { - @SidedProxy(clientSide = "com.github.trc.clayium.client.ClientProxy", serverSide = "com.github.trc.clayium.common.CommonProxy") + @SidedProxy( + clientSide = "com.github.trc.clayium.client.ClientProxy", + serverSide = "com.github.trc.clayium.common.CommonProxy" + ) lateinit var proxy: CommonProxy @Mod.EventHandler diff --git a/src/main/kotlin/com/github/trc/clayium/common/CommonProxy.kt b/src/main/kotlin/com/github/trc/clayium/common/CommonProxy.kt index 22b63c3cc..57e186ad0 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/CommonProxy.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/CommonProxy.kt @@ -66,7 +66,9 @@ open class CommonProxy { open fun preInit(event: FMLPreInitializationEvent) { MinecraftForge.EVENT_BUS.register(ClayiumMod.proxy) MinecraftForge.EVENT_BUS.register(ItemClaySteelPickaxe) - if (CUtils.isDeobfEnvironment) { MinecraftForge.EVENT_BUS.register(DebugUtils::class.java) } + if (CUtils.isDeobfEnvironment) { + MinecraftForge.EVENT_BUS.register(DebugUtils::class.java) + } ClayiumCTabs.init() CNetwork.init() @@ -101,8 +103,7 @@ open class CommonProxy { CModIntegration.init(event) } - open fun postInit(event: FMLPostInitializationEvent) { - } + open fun postInit(event: FMLPostInitializationEvent) {} @Suppress("unused") @SubscribeEvent @@ -127,7 +128,7 @@ open class CommonProxy { for (block in ClayiumBlocks.COMPRESSED_BLOCKS) registry.register(block) } - //todo move to ClayiumBlocks/Items + // todo move to ClayiumBlocks/Items @Suppress("unused") @SubscribeEvent fun registerItems(event: RegistryEvent.Register) { @@ -135,7 +136,7 @@ open class CommonProxy { ClayiumBlocks.registerItemBlocks(event) - //todo: move to somewhere else + // todo: move to somewhere else registry.register(MetaItemClayParts) for (orePrefix in OrePrefix.metaItemPrefixes) { val metaPrefixItem = MetaPrefixItem.create("meta_${orePrefix.snake}", orePrefix) @@ -172,25 +173,39 @@ open class CommonProxy { registry.register(createItemBlock(ClayiumBlocks.CA_REACTOR_HULL, ::ItemBlockDamaged)) registry.register(createItemBlock(ClayiumBlocks.CA_REACTOR_COIL, ::ItemBlockTiered)) - registry.register(createItemBlock(ClayiumBlocks.QUARTZ_CRUCIBLE, ItemBlockTiered<*>::noSubTypes)) + registry.register( + createItemBlock(ClayiumBlocks.QUARTZ_CRUCIBLE, ItemBlockTiered<*>::noSubTypes) + ) registry.register(createItemBlock(ClayiumBlocks.PAN_CABLE, ItemBlockTiered<*>::noSubTypes)) - registry.register(createItemBlock(ClayiumBlocks.CLAY_TREE_LOG, ItemBlockTiered<*>::noSubTypes)) - registry.register(createItemBlock(ClayiumBlocks.CLAY_TREE_LEAVES, ItemBlockTiered<*>::noSubTypes)) - registry.register(createItemBlock(ClayiumBlocks.CLAY_TREE_SAPLING, ItemBlockTiered<*>::noSubTypes)) + registry.register( + createItemBlock(ClayiumBlocks.CLAY_TREE_LOG, ItemBlockTiered<*>::noSubTypes) + ) + registry.register( + createItemBlock(ClayiumBlocks.CLAY_TREE_LEAVES, ItemBlockTiered<*>::noSubTypes) + ) + registry.register( + createItemBlock(ClayiumBlocks.CLAY_TREE_SAPLING, ItemBlockTiered<*>::noSubTypes) + ) registry.register(createItemBlock(ClayiumBlocks.OVERCLOCKER, ::ItemBlockTiered)) registry.register(createItemBlock(ClayiumBlocks.ENERGY_STORAGE_UPGRADE, ::ItemBlockTiered)) registry.register(createItemBlock(ClayiumBlocks.CLAY_MARKER, ::VariantItemBlock)) - registry.register(createItemBlock(ClayiumBlocks.CHUNK_LOADER, ItemBlockTiered<*>::noSubTypes)) + registry.register( + createItemBlock(ClayiumBlocks.CHUNK_LOADER, ItemBlockTiered<*>::noSubTypes) + ) - registry.register(createItemBlock(ClayiumBlocks.LASER_REFLECTOR, ::ItemBlockClayLaserReflector)) + registry.register( + createItemBlock(ClayiumBlocks.LASER_REFLECTOR, ::ItemBlockClayLaserReflector) + ) for (block in ClayiumBlocks.ENERGIZED_CLAY_BLOCKS) { - registry.register(createItemBlock(block) { ItemBlockEnergizedClay(it, OrePrefix.block) }) + registry.register( + createItemBlock(block) { ItemBlockEnergizedClay(it, OrePrefix.block) } + ) } for (block in ClayiumBlocks.COMPRESSED_CLAY_BLOCKS) { registry.register(createItemBlock(block) { ItemBlockMaterial(it, OrePrefix.block) }) @@ -207,24 +222,55 @@ open class CommonProxy { registry.register(item) } - private fun createItemBlock(block: T, producer: (T) -> ItemBlock): ItemBlock { + private fun createItemBlock(block: T, producer: (T) -> ItemBlock): ItemBlock { return producer(block).apply { - registryName = block.registryName ?: throw IllegalArgumentException("Block ${block.translationKey} has no registry name") + registryName = + block.registryName + ?: throw IllegalArgumentException( + "Block ${block.translationKey} has no registry name" + ) } } fun registerTileEntities() { GameRegistry.registerTileEntity(TileClayWorkTable::class.java, clayiumId("clayWorkTable")) - GameRegistry.registerTileEntity(TileEntityClayLaserReflector::class.java, clayiumId("laser_reflector")) - GameRegistry.registerTileEntity(TileEntityCreativeEnergySource::class.java, clayiumId("creativeEnergySource")) - GameRegistry.registerTileEntity(MetaTileEntityHolder::class.java, clayiumId("metaTileEntityHolder")) - GameRegistry.registerTileEntity(BlockQuartzCrucible.QuartzCrucibleTileEntity::class.java, clayiumId("quartzCrucibleTileEntity")) - GameRegistry.registerTileEntity(TileClayCraftingTable::class.java, clayiumId("clayCraftingTable")) - - GameRegistry.registerTileEntity(TileClayMarker.NoExtend::class.java, clayiumId("clayMarkerNoExtent")) - GameRegistry.registerTileEntity(TileClayMarker.ExtendToGround::class.java, clayiumId("clayMarkerExtendToGround")) - GameRegistry.registerTileEntity(TileClayMarker.ExtendToSky::class.java, clayiumId("clayMarkerExtendToSky")) - GameRegistry.registerTileEntity(TileClayMarker.AllHeight::class.java, clayiumId("clayMarkerAllHeight")) + GameRegistry.registerTileEntity( + TileEntityClayLaserReflector::class.java, + clayiumId("laser_reflector") + ) + GameRegistry.registerTileEntity( + TileEntityCreativeEnergySource::class.java, + clayiumId("creativeEnergySource") + ) + GameRegistry.registerTileEntity( + MetaTileEntityHolder::class.java, + clayiumId("metaTileEntityHolder") + ) + GameRegistry.registerTileEntity( + BlockQuartzCrucible.QuartzCrucibleTileEntity::class.java, + clayiumId("quartzCrucibleTileEntity") + ) + GameRegistry.registerTileEntity( + TileClayCraftingTable::class.java, + clayiumId("clayCraftingTable") + ) + + GameRegistry.registerTileEntity( + TileClayMarker.NoExtend::class.java, + clayiumId("clayMarkerNoExtent") + ) + GameRegistry.registerTileEntity( + TileClayMarker.ExtendToGround::class.java, + clayiumId("clayMarkerExtendToGround") + ) + GameRegistry.registerTileEntity( + TileClayMarker.ExtendToSky::class.java, + clayiumId("clayMarkerExtendToSky") + ) + GameRegistry.registerTileEntity( + TileClayMarker.AllHeight::class.java, + clayiumId("clayMarkerAllHeight") + ) GameRegistry.registerTileEntity(ChunkLoaderTileEntity::class.java, clayiumId("chunkLoader")) } diff --git a/src/main/kotlin/com/github/trc/clayium/common/GuiHandler.kt b/src/main/kotlin/com/github/trc/clayium/common/GuiHandler.kt index 294e7b09d..3503fecbc 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/GuiHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/GuiHandler.kt @@ -8,12 +8,19 @@ import net.minecraft.util.math.BlockPos import net.minecraft.world.World import net.minecraftforge.fml.common.network.IGuiHandler -//todo: move CWT to mUI +// todo: move CWT to mUI object GuiHandler : IGuiHandler { const val CLAY_WORK_TABLE = 1 - override fun getServerGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int): Any? { + override fun getServerGuiElement( + id: Int, + player: EntityPlayer, + world: World, + x: Int, + y: Int, + z: Int + ): Any? { val tile = world.getTileEntity(BlockPos(x, y, z)) ?: return null return when (id) { CLAY_WORK_TABLE -> ContainerClayWorkTable(player.inventory, tile as TileClayWorkTable) @@ -21,7 +28,14 @@ object GuiHandler : IGuiHandler { } } - override fun getClientGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int): Any? { + override fun getClientGuiElement( + id: Int, + player: EntityPlayer, + world: World, + x: Int, + y: Int, + z: Int + ): Any? { val tile = world.getTileEntity(BlockPos(x, y, z)) ?: return null return when (id) { CLAY_WORK_TABLE -> GuiClayWorkTable(player.inventory, tile as TileClayWorkTable) diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorCoil.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorCoil.kt index eeb2a79ba..73024006e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorCoil.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorCoil.kt @@ -22,7 +22,9 @@ class BlockCaReactorCoil : VariantBlock(Material.I } override fun getTier(stack: ItemStack) = getEnum(stack).tier - override fun getTier(world: IBlockAccess, pos: BlockPos) = getEnum(world.getBlockState(pos)).tier + + override fun getTier(world: IBlockAccess, pos: BlockPos) = + getEnum(world.getBlockState(pos)).tier enum class BlockType(val tier: ITier) : IStringSerializable { ANTIMATTER(ClayTiers.ANTIMATTER), @@ -33,4 +35,4 @@ class BlockCaReactorCoil : VariantBlock(Material.I override fun getName() = name.lowercase() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorHull.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorHull.kt index 43bf295ed..5147d6872 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorHull.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockCaReactorHull.kt @@ -28,7 +28,9 @@ class BlockCaReactorHull : Block(Material.IRON), ICaReactorHull, ITieredBlock { } override fun getTier(stack: ItemStack) = getTier(stack.metadata.coerceIn(0..9)) - override fun getTier(world: IBlockAccess, pos: BlockPos) = getTier(world.getBlockState(pos).getValue(META)) + + override fun getTier(world: IBlockAccess, pos: BlockPos) = + getTier(world.getBlockState(pos).getValue(META)) private fun getTier(meta: Int): ITier { return when (meta) { @@ -41,19 +43,25 @@ class BlockCaReactorHull : Block(Material.IRON), ICaReactorHull, ITieredBlock { } override fun getCaRank(stack: ItemStack) = stack.metadata + 1 - override fun getCaRank(world: IBlockAccess, pos: BlockPos) = world.getBlockState(pos).getValue(META) + 1 + + override fun getCaRank(world: IBlockAccess, pos: BlockPos) = + world.getBlockState(pos).getValue(META) + 1 override fun createBlockState() = BlockStateContainer(this, META) override fun getMetaFromState(state: IBlockState) = state.getValue(META) + override fun getStateFromMeta(meta: Int) = defaultState.withProperty(META, meta) + override fun damageDropped(state: IBlockState) = getMetaFromState(state) override fun getSubBlocks(itemIn: CreativeTabs, items: NonNullList) { - for (i in 0..9) { items.add(ItemStack(this, 1, i)) } + for (i in 0..9) { + items.add(ItemStack(this, 1, i)) + } } companion object { val META = PropertyInteger.create("meta", 0, 9) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockClayLaserReflector.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockClayLaserReflector.kt index 6ee008de2..244f83033 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockClayLaserReflector.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockClayLaserReflector.kt @@ -30,7 +30,12 @@ class BlockClayLaserReflector : Block(Material.IRON) { defaultState = defaultState.withProperty(FACING, EnumFacing.NORTH) } - override fun canCreatureSpawn(state: IBlockState, world: IBlockAccess, pos: BlockPos, type: EntityLiving.SpawnPlacementType): Boolean { + override fun canCreatureSpawn( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos, + type: EntityLiving.SpawnPlacementType + ): Boolean { return false } @@ -38,13 +43,26 @@ class BlockClayLaserReflector : Block(Material.IRON) { return BlockStateContainer(this, FACING) } - override fun getStateFromMeta(meta: Int) = defaultState.withProperty(FACING, EnumFacing.byIndex(meta)) + override fun getStateFromMeta(meta: Int) = + defaultState.withProperty(FACING, EnumFacing.byIndex(meta)) + override fun getMetaFromState(state: IBlockState) = state.getValue(FACING).index - override fun onBlockActivated(worldIn: World, pos: BlockPos, state: IBlockState, playerIn: EntityPlayer, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onBlockActivated( + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { val stack: ItemStack = playerIn.getHeldItem(hand) - val type = stack.getCapability(ClayiumCapabilities.CONFIG_TOOL, null)?.getType(playerIn.isSneaking) - ?: return false + val type = + stack.getCapability(ClayiumCapabilities.CONFIG_TOOL, null)?.getType(playerIn.isSneaking) + ?: return false if (type != IConfigurationTool.ToolType.ROTATION) return false val direction = state.getValue(FACING) @@ -57,35 +75,81 @@ class BlockClayLaserReflector : Block(Material.IRON) { } override fun isFullBlock(state: IBlockState) = false + override fun isFullCube(state: IBlockState) = isFullBlock(state) + override fun isOpaqueCube(state: IBlockState) = isFullBlock(state) + override fun causesSuffocation(state: IBlockState) = isFullBlock(state) override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState) = TileEntityClayLaserReflector() - override fun getStateForPlacement(world: World, pos: BlockPos, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, meta: Int, placer: EntityLivingBase, hand: EnumHand): IBlockState { + override fun getStateForPlacement( + world: World, + pos: BlockPos, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + meta: Int, + placer: EntityLivingBase, + hand: EnumHand + ): IBlockState { val facing = EnumFacing.getDirectionFromEntityLiving(pos, placer) return defaultState.withProperty(FACING, facing) } override fun getRenderLayer() = BlockRenderLayer.TRANSLUCENT + override fun getRenderType(state: IBlockState) = EnumBlockRenderType.INVISIBLE - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos): AxisAlignedBB { + override fun getBoundingBox( + state: IBlockState, + source: IBlockAccess, + pos: BlockPos + ): AxisAlignedBB { val direction = state.getValue(FACING) return when (direction) { - EnumFacing.DOWN, EnumFacing.UP -> Y_AABB - EnumFacing.NORTH, EnumFacing.SOUTH -> Z_AABB - EnumFacing.WEST, EnumFacing.EAST -> X_AABB + EnumFacing.DOWN, + EnumFacing.UP -> Y_AABB + EnumFacing.NORTH, + EnumFacing.SOUTH -> Z_AABB + EnumFacing.WEST, + EnumFacing.EAST -> X_AABB } } companion object { val FACING = PropertyDirection.create("direction") - private val X_AABB = AxisAlignedBB(0.0 + 0.125, 0.0 + 0.125 * 2.0, 0.0 + 0.125 * 2.0, 1.0 - 0.125, 1.0 - 0.125 * 2.0, 1.0 - 0.125 * 2.0) - private val Y_AABB = AxisAlignedBB(0.0 + 0.125 * 2.0, 0.0 + 0.125, 0.0 + 0.125 * 2.0, 1.0 - 0.125 * 2.0, 1.0 - 0.125, 1.0 - 0.125 * 2.0) - private val Z_AABB = AxisAlignedBB(0.0 + 0.125 * 2.0, 0.0 + 0.125 * 2.0, 0.0 + 0.125, 1.0 - 0.125 * 2.0, 1.0 - 0.125 * 2.0, 1.0 - 0.125) + private val X_AABB = + AxisAlignedBB( + 0.0 + 0.125, + 0.0 + 0.125 * 2.0, + 0.0 + 0.125 * 2.0, + 1.0 - 0.125, + 1.0 - 0.125 * 2.0, + 1.0 - 0.125 * 2.0 + ) + private val Y_AABB = + AxisAlignedBB( + 0.0 + 0.125 * 2.0, + 0.0 + 0.125, + 0.0 + 0.125 * 2.0, + 1.0 - 0.125 * 2.0, + 1.0 - 0.125, + 1.0 - 0.125 * 2.0 + ) + private val Z_AABB = + AxisAlignedBB( + 0.0 + 0.125 * 2.0, + 0.0 + 0.125 * 2.0, + 0.0 + 0.125, + 1.0 - 0.125 * 2.0, + 1.0 - 0.125 * 2.0, + 1.0 - 0.125 + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockEnergyStorageUpgrade.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockEnergyStorageUpgrade.kt index d3206620c..4f0b7330f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockEnergyStorageUpgrade.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockEnergyStorageUpgrade.kt @@ -12,19 +12,30 @@ import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockAccess import net.minecraft.world.World -class BlockEnergyStorageUpgrade : VariantBlock(Material.IRON), IEnergyStorageUpgradeBlock, ITieredBlock { +class BlockEnergyStorageUpgrade : + VariantBlock(Material.IRON), + IEnergyStorageUpgradeBlock, + ITieredBlock { init { setHardness(2.0f) setResistance(2.0f) soundType = SoundType.METAL } - override fun getExtraStackLimit(world: IBlockAccess, pos: BlockPos) = getExtraStackLimit(getEnum(world.getBlockState(pos))) + override fun getExtraStackLimit(world: IBlockAccess, pos: BlockPos) = + getExtraStackLimit(getEnum(world.getBlockState(pos))) override fun getTier(stack: ItemStack) = getEnum(stack).tier - override fun getTier(world: IBlockAccess, pos: BlockPos) = getEnum(world.getBlockState(pos)).tier - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: List, flagIn: ITooltipFlag) { + override fun getTier(world: IBlockAccess, pos: BlockPos) = + getEnum(world.getBlockState(pos)).tier + + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: List, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) } @@ -38,4 +49,4 @@ class BlockEnergyStorageUpgrade : VariantBlock(Mat } override fun getRenderLayer() = BlockRenderLayer.CUTOUT_MIPPED -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMachineHull.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMachineHull.kt index ad4ab28e9..14f2aac72 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMachineHull.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMachineHull.kt @@ -22,5 +22,6 @@ class BlockMachineHull : VariantBlock(Material.IRON), ITieredBlock { } override fun getTier(stack: ItemStack) = getEnum(stack) + override fun getTier(world: IBlockAccess, pos: BlockPos) = getEnum(world.getBlockState(pos)) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMaterialBase.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMaterialBase.kt index 2f8b891b7..9d8131b69 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMaterialBase.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockMaterialBase.kt @@ -31,7 +31,9 @@ abstract class BlockMaterialBase( } fun getCMaterial(meta: Int) = mapping[meta] ?: mapping.values.first() + fun getCMaterial(stack: ItemStack) = getCMaterial(stack.metadata) + fun getCMaterial(state: IBlockState) = state.getValue(getMaterialProperty()) override fun createBlockState(): BlockStateContainer { @@ -56,7 +58,12 @@ abstract class BlockMaterialBase( } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { val material = getCMaterial(stack.metadata) if (material.tier != null) { tooltip.add(I18n.format("tooltip.clayium.tier", material.tier.numeric)) @@ -68,8 +75,10 @@ abstract class BlockMaterialBase( ModelLoader.setCustomStateMapper(this, MaterialStateMapper) for (state in blockState.validStates) { ModelLoader.setCustomModelResourceLocation( - this.getAsItem(), this.getMetaFromState(state), MaterialStateMapper.createModelLocation(state) + this.getAsItem(), + this.getMetaFromState(state), + MaterialStateMapper.createModelLocation(state) ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockOverclocker.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockOverclocker.kt index b36aab976..d34c679b2 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockOverclocker.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockOverclocker.kt @@ -12,14 +12,16 @@ import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockAccess import net.minecraft.world.World -class BlockOverclocker : VariantBlock(Material.IRON), IOverclockerBlock, ITieredBlock { +class BlockOverclocker : + VariantBlock(Material.IRON), IOverclockerBlock, ITieredBlock { init { setHardness(2.0f) setResistance(2.0f) soundType = SoundType.METAL } - override fun getOverclockFactor(world: IBlockAccess, pos: BlockPos) = getOcFactor(getEnum(world.getBlockState(pos))) + override fun getOverclockFactor(world: IBlockAccess, pos: BlockPos) = + getOcFactor(getEnum(world.getBlockState(pos))) private fun getOcFactor(type: BlockCaReactorCoil.BlockType): Double { return when (type) { @@ -31,10 +33,17 @@ class BlockOverclocker : VariantBlock(Material.IRO } override fun getTier(stack: ItemStack) = getEnum(stack).tier - override fun getTier(world: IBlockAccess, pos: BlockPos) = getEnum(world.getBlockState(pos)).tier - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun getTier(world: IBlockAccess, pos: BlockPos) = + getEnum(world.getBlockState(pos)).tier + + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) tooltip.add(I18n.format("tile.clayium.overclocker.factor", getOcFactor(getEnum(stack)))) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockPanCable.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockPanCable.kt index e6d83b1b7..7a9daac02 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockPanCable.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockPanCable.kt @@ -25,13 +25,23 @@ class BlockPanCable : Block(Material.GLASS), IPanCable, ITieredBlock { setHardness(0.2f) setResistance(0.2f) - defaultState = blockState.baseState.withProperty(DOWN, false).withProperty(UP, false) - .withProperty(NORTH, false).withProperty(SOUTH, false).withProperty(WEST, false).withProperty(EAST, false) + defaultState = + blockState.baseState + .withProperty(DOWN, false) + .withProperty(UP, false) + .withProperty(NORTH, false) + .withProperty(SOUTH, false) + .withProperty(WEST, false) + .withProperty(EAST, false) } override fun createBlockState() = BlockStateContainer(this, DOWN, UP, NORTH, SOUTH, WEST, EAST) - override fun getActualState(state: IBlockState, worldIn: IBlockAccess, pos: BlockPos): IBlockState { + override fun getActualState( + state: IBlockState, + worldIn: IBlockAccess, + pos: BlockPos + ): IBlockState { var res = state for (side in EnumFacing.entries) { val property = properties[side.index] @@ -47,12 +57,23 @@ class BlockPanCable : Block(Material.GLASS), IPanCable, ITieredBlock { override fun getMetaFromState(state: IBlockState) = 0 override fun isFullBlock(state: IBlockState) = false + override fun isFullCube(state: IBlockState) = false + override fun isOpaqueCube(state: IBlockState) = false + override fun causesSuffocation(state: IBlockState) = false @Suppress("DEPRECATION") - override fun addCollisionBoxToList(state: IBlockState, worldIn: World, pos: BlockPos, entityBox: AxisAlignedBB, collidingBoxes: MutableList, entityIn: Entity?, isActualState: Boolean) { + override fun addCollisionBoxToList( + state: IBlockState, + worldIn: World, + pos: BlockPos, + entityBox: AxisAlignedBB, + collidingBoxes: MutableList, + entityIn: Entity?, + isActualState: Boolean + ) { addCollisionBoxToList(pos, entityBox, collidingBoxes, CENTER_AABB) val s = getActualState(state, worldIn, pos) if (s.getValue(DOWN)) addCollisionBoxToList(pos, entityBox, collidingBoxes, DOWN_AABB) @@ -63,7 +84,11 @@ class BlockPanCable : Block(Material.GLASS), IPanCable, ITieredBlock { if (s.getValue(EAST)) addCollisionBoxToList(pos, entityBox, collidingBoxes, EAST_AABB) } - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos): AxisAlignedBB { + override fun getBoundingBox( + state: IBlockState, + source: IBlockAccess, + pos: BlockPos + ): AxisAlignedBB { var aabb = CENTER_AABB val s = getActualState(state, source, pos) if (s.getValue(DOWN)) aabb = aabb.union(DOWN_AABB) @@ -76,6 +101,7 @@ class BlockPanCable : Block(Material.GLASS), IPanCable, ITieredBlock { } override fun getTier(stack: ItemStack) = ClayTiers.PURE_ANTIMATTER + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.PURE_ANTIMATTER companion object { @@ -88,15 +114,70 @@ class BlockPanCable : Block(Material.GLASS), IPanCable, ITieredBlock { val WEST = PropertyBool.create("west") val EAST = PropertyBool.create("east") - val CENTER_AABB = AxisAlignedBB(0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH) - val DOWN_AABB = AxisAlignedBB(0.5 - CABLE_WIDTH, 0.0, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH) - val UP_AABB = AxisAlignedBB(0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 1.0, 0.5 + CABLE_WIDTH) - val NORTH_AABB = AxisAlignedBB(0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.0, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 - CABLE_WIDTH) - val SOUTH_AABB = AxisAlignedBB(0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH, 1.0) - val WEST_AABB = AxisAlignedBB(0.0, 0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH) - val EAST_AABB = AxisAlignedBB(0.5 + CABLE_WIDTH, 0.5 - CABLE_WIDTH, 0.5 - CABLE_WIDTH, 1.0, 0.5 + CABLE_WIDTH, 0.5 + CABLE_WIDTH) - + val CENTER_AABB = + AxisAlignedBB( + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH + ) + val DOWN_AABB = + AxisAlignedBB( + 0.5 - CABLE_WIDTH, + 0.0, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH + ) + val UP_AABB = + AxisAlignedBB( + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 1.0, + 0.5 + CABLE_WIDTH + ) + val NORTH_AABB = + AxisAlignedBB( + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.0, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 - CABLE_WIDTH + ) + val SOUTH_AABB = + AxisAlignedBB( + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 1.0 + ) + val WEST_AABB = + AxisAlignedBB( + 0.0, + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH + ) + val EAST_AABB = + AxisAlignedBB( + 0.5 + CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 0.5 - CABLE_WIDTH, + 1.0, + 0.5 + CABLE_WIDTH, + 0.5 + CABLE_WIDTH + ) private val properties = arrayOf(DOWN, UP, NORTH, SOUTH, WEST, EAST) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockQuartzCrucible.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockQuartzCrucible.kt index 0ac6be277..f8cb1404b 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockQuartzCrucible.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockQuartzCrucible.kt @@ -39,15 +39,26 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), } override fun getStateFromMeta(meta: Int) = defaultState.withProperty(LEVEL, meta) + override fun getMetaFromState(state: IBlockState) = state.getValue(LEVEL) override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState) = QuartzCrucibleTileEntity() - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = SELECT_AABB + override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = + SELECT_AABB @Suppress("DEPRECATION") - override fun addCollisionBoxToList(state: IBlockState, worldIn: World, pos: BlockPos, entityBox: AxisAlignedBB, collidingBoxes: MutableList, entityIn: Entity?, isActualState: Boolean) { + override fun addCollisionBoxToList( + state: IBlockState, + worldIn: World, + pos: BlockPos, + entityBox: AxisAlignedBB, + collidingBoxes: MutableList, + entityIn: Entity?, + isActualState: Boolean + ) { addCollisionBoxToList(pos, entityBox, collidingBoxes, AABB_BASE) addCollisionBoxToList(pos, entityBox, collidingBoxes, AABB_WALL_NORTH) addCollisionBoxToList(pos, entityBox, collidingBoxes, AABB_WALL_SOUTH) @@ -56,11 +67,19 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), } override fun isFullBlock(state: IBlockState) = false + override fun isFullCube(state: IBlockState) = false + override fun isOpaqueCube(state: IBlockState) = false + override fun causesSuffocation(state: IBlockState) = false - override fun onEntityCollision(worldIn: World, pos: BlockPos, state: IBlockState, entityIn: Entity) { + override fun onEntityCollision( + worldIn: World, + pos: BlockPos, + state: IBlockState, + entityIn: Entity + ) { if (worldIn.isRemote || entityIn !is EntityItem) return val tileEntity = worldIn.getTileEntity(pos) as? QuartzCrucibleTileEntity ?: return val stack = entityIn.item @@ -85,14 +104,16 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), entityIn.setDead() } tileEntity.ingotQuantity = 0 - spawnAsEntity(worldIn, pos, OreDictUnifier.get(OrePrefix.ingot, CMaterials.silicon, amount = currentLevel)) + spawnAsEntity( + worldIn, + pos, + OreDictUnifier.get(OrePrefix.ingot, CMaterials.silicon, amount = currentLevel) + ) worldIn.setBlockState(pos, state.withProperty(LEVEL, 0)) } } } - - override fun getTier(stack: ItemStack): ITier { return ClayTiers.ADVANCED } @@ -109,6 +130,7 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), field = value markDirty() } + var ticked = 0 set(value) { field = value @@ -116,9 +138,8 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), } override fun update() { - if (world.isRemote - || ingotQuantity <= 0 - || ticked >= TICKS_PER_ITEM * ingotQuantity) return + if (world.isRemote || ingotQuantity <= 0 || ticked >= TICKS_PER_ITEM * ingotQuantity) + return ticked++ } @@ -135,7 +156,12 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), ticked = compound.getInteger("ticked") } - override fun shouldRefresh(world: World, pos: BlockPos, oldState: IBlockState, newSate: IBlockState): Boolean { + override fun shouldRefresh( + world: World, + pos: BlockPos, + oldState: IBlockState, + newSate: IBlockState + ): Boolean { return oldState.block != newSate.block } } @@ -153,4 +179,4 @@ class BlockQuartzCrucible : Block(net.minecraft.block.material.Material.GLASS), val SELECT_AABB = AxisAlignedBB(0.0, 0.0, 0.0, 1.0, 0.75, 1.0) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockResonator.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockResonator.kt index 82958136e..6165911a7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockResonator.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockResonator.kt @@ -17,7 +17,8 @@ import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @Suppress("OVERRIDE_DEPRECATION") -class BlockResonator : VariantBlock(Material.IRON), IResonatingBlock, ITieredBlock { +class BlockResonator : + VariantBlock(Material.IRON), IResonatingBlock, ITieredBlock { init { setSoundType(SoundType.METAL) setHardness(2.0f) @@ -26,15 +27,23 @@ class BlockResonator : VariantBlock(Material.IRON) } override fun getResonance(state: IBlockState) = RESONANCE[getEnum(state).ordinal] + override fun getTier(stack: ItemStack) = getEnum(stack).tier - override fun getTier(world: IBlockAccess, pos: BlockPos) = getEnum(world.getBlockState(pos)).tier + + override fun getTier(world: IBlockAccess, pos: BlockPos) = + getEnum(world.getBlockState(pos)).tier @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add(I18n.format("gui.${MOD_ID}.resonance", RESONANCE[stack.metadata])) } companion object { val RESONANCE = doubleArrayOf(1.08, 1.1, 2.0, 20.0) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockSimpleTileEntityHolder.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockSimpleTileEntityHolder.kt index 11c77ec77..0cc5e1cff 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockSimpleTileEntityHolder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/BlockSimpleTileEntityHolder.kt @@ -24,11 +24,22 @@ class BlockSimpleTileEntityHolder( } override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState): TileEntity? { return tileEntityFactory() } - override fun onBlockActivated(worldIn: World, pos: BlockPos, state: IBlockState, playerIn: EntityPlayer, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onBlockActivated( + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { if (worldIn.isRemote) return true val tileEntity = worldIn.getTileEntity(pos) ?: return true @@ -37,4 +48,4 @@ class BlockSimpleTileEntityHolder( } return true } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ClayiumBlocks.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ClayiumBlocks.kt index 79b72e0f6..2a73ba914 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ClayiumBlocks.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ClayiumBlocks.kt @@ -46,8 +46,13 @@ object ClayiumBlocks { private val blocks: MutableMap = mutableMapOf() - val CREATIVE_ENERGY_SOURCE = createBlock("creative_energy_source", BlockSimpleTileEntityHolder(::TileEntityCreativeEnergySource) - .apply { setBlockUnbreakable() }) + val CREATIVE_ENERGY_SOURCE = + createBlock( + "creative_energy_source", + BlockSimpleTileEntityHolder(::TileEntityCreativeEnergySource).apply { + setBlockUnbreakable() + } + ) val CLAY_CRAFTING_BOARD = createBlock("clay_crafting_board", BlockClayCraftingBoard()) val CLAY_WORK_TABLE = createBlock("clay_work_table", BlockClayWorkTable()) @@ -77,7 +82,8 @@ object ClayiumBlocks { val CHUNK_LOADER = createBlock("chunk_loader", ChunkLoaderBlock()) /* Deco Blocks */ - val COLORED_SILICONE = createBlock("colored_silicone", ColoredSiliconeBlock(), ClayiumCTabs.decorations) + val COLORED_SILICONE = + createBlock("colored_silicone", ColoredSiliconeBlock(), ClayiumCTabs.decorations) /* ---------------------------------- */ @@ -96,20 +102,34 @@ object ClayiumBlocks { init { createMaterialBlock( - { !OrePrefix.block.isIgnored(it) - && it.hasProperty(CPropertyKey.CLAY) && it.getProperty(CPropertyKey.CLAY).energy == null }, - this::createCompressedClayBlock) + { + !OrePrefix.block.isIgnored(it) && + it.hasProperty(CPropertyKey.CLAY) && + it.getProperty(CPropertyKey.CLAY).energy == null + }, + this::createCompressedClayBlock + ) createMaterialBlock( - { !OrePrefix.block.isIgnored(it) - && it.getPropOrNull(CPropertyKey.CLAY)?.energy != null }, - this::createEnergizedClayBlock) + { + !OrePrefix.block.isIgnored(it) && + it.getPropOrNull(CPropertyKey.CLAY)?.energy != null + }, + this::createEnergizedClayBlock + ) createMaterialBlock( - { !OrePrefix.block.isIgnored(it) - && (it.hasProperty(CPropertyKey.INGOT) || it.hasProperty(CPropertyKey.MATTER)) }, - this::createCompressedBock) + { + !OrePrefix.block.isIgnored(it) && + (it.hasProperty(CPropertyKey.INGOT) || it.hasProperty(CPropertyKey.MATTER)) + }, + this::createCompressedBock + ) } - private fun createBlock(key: String, block: T, tab: CreativeTabs = ClayiumCTabs.main): T { + private fun createBlock( + key: String, + block: T, + tab: CreativeTabs = ClayiumCTabs.main + ): T { return block.apply { setCreativeTab(tab) setRegistryName(clayiumId(key)) @@ -118,9 +138,13 @@ object ClayiumBlocks { } } - private fun createItemBlock(block: T, producer: (T) -> I): I { + private fun createItemBlock(block: T, producer: (T) -> I): I { return producer(block).apply { - registryName = block.registryName ?: throw IllegalArgumentException("Block ${block.translationKey} has no registry name") + registryName = + block.registryName + ?: throw IllegalArgumentException( + "Block ${block.translationKey} has no registry name" + ) } } @@ -148,7 +172,11 @@ object ClayiumBlocks { } fun registerOreDictionaries() { - OreDictUnifier.registerOre(ItemStack(COLORED_SILICONE, 1, W), OrePrefix.block, CMaterials.silicone) + OreDictUnifier.registerOre( + ItemStack(COLORED_SILICONE, 1, W), + OrePrefix.block, + CMaterials.silicone + ) for ((m, b) in energizedClay) { val stack = b.getItemStack(m) OreDictUnifier.registerOre(stack, OrePrefix.block, m) @@ -163,7 +191,10 @@ object ClayiumBlocks { } } - fun createMaterialBlock(filter: (material: CMaterial) -> Boolean, generator: (metaMaterialMap: Map, index: Int) -> Unit) { + fun createMaterialBlock( + filter: (material: CMaterial) -> Boolean, + generator: (metaMaterialMap: Map, index: Int) -> Unit + ) { var mapping = Int2ObjectArrayMap(17) for ((currentId, materials) in ClayiumApi.materialRegistry.chunked(16).withIndex()) { for (material in materials) { @@ -201,9 +232,15 @@ object ClayiumBlocks { @SideOnly(Side.CLIENT) fun registerStateMappers() { - setStateMapper(CLAY_TREE_LEAVES, StateMap.Builder().ignore(BlockLeaves.CHECK_DECAY, BlockLeaves.DECAYABLE).build()) + setStateMapper( + CLAY_TREE_LEAVES, + StateMap.Builder().ignore(BlockLeaves.CHECK_DECAY, BlockLeaves.DECAYABLE).build() + ) setStateMapper(CLAY_TREE_SAPLING, StateMap.Builder().ignore(BlockSapling.STAGE).build()) - setStateMapper(COLORED_SILICONE, StateMap.Builder().ignore(COLORED_SILICONE.variantProperty).build()) + setStateMapper( + COLORED_SILICONE, + StateMap.Builder().ignore(COLORED_SILICONE.variantProperty).build() + ) } @SideOnly(Side.CLIENT) @@ -227,20 +264,39 @@ object ClayiumBlocks { val item = block.getAsItem() val defaultStateMapper = DefaultStateMapper() when (block) { - CLAY_TREE_SAPLING -> ModelLoader.setCustomModelResourceLocation(item, 0, ModelResourceLocation(clayiumId("clay_tree_sapling"), "inventory")) - PAN_CABLE -> ModelLoader.setCustomModelResourceLocation(item, 0, ModelResourceLocation(clayiumId("pan_cable"), "inventory")) + CLAY_TREE_SAPLING -> + ModelLoader.setCustomModelResourceLocation( + item, + 0, + ModelResourceLocation(clayiumId("clay_tree_sapling"), "inventory") + ) + PAN_CABLE -> + ModelLoader.setCustomModelResourceLocation( + item, + 0, + ModelResourceLocation(clayiumId("pan_cable"), "inventory") + ) else -> { val customStateMapper = stateMapperCache[block] if (customStateMapper != null) { val map = customStateMapper.putStateModelLocations(block) for (state in block.blockState.validStates) { - ModelLoader.setCustomModelResourceLocation(item, block.getMetaFromState(state), - map[state] ?: error("Missing model for state $state")) + ModelLoader.setCustomModelResourceLocation( + item, + block.getMetaFromState(state), + map[state] ?: error("Missing model for state $state") + ) } } else { for (state in block.blockState.validStates) { - ModelLoader.setCustomModelResourceLocation(item, block.getMetaFromState(state), - ModelResourceLocation(block.registryName!!, defaultStateMapper.getPropertyString(state.properties))) + ModelLoader.setCustomModelResourceLocation( + item, + block.getMetaFromState(state), + ModelResourceLocation( + block.registryName!!, + defaultStateMapper.getPropertyString(state.properties) + ) + ) } } } @@ -250,21 +306,26 @@ object ClayiumBlocks { @SideOnly(Side.CLIENT) fun registerBlockColors(e: ColorHandlerEvent.Block) { val blockColors = e.blockColors - blockColors.registerBlockColorHandler({ state, _, _, _ -> - COLORED_SILICONE.getEnum(state).colorValue - }, COLORED_SILICONE) + blockColors.registerBlockColorHandler( + { state, _, _, _ -> COLORED_SILICONE.getEnum(state).colorValue }, + COLORED_SILICONE + ) } @SideOnly(Side.CLIENT) fun registerItemColors(e: ColorHandlerEvent.Item) { val itemColors = e.itemColors for (item in COMPRESSED_ITEM_BLOCKS) { - itemColors.registerItemColorHandler({ stack, i -> - item.blockMaterial.getCMaterial(stack.itemDamage).colors?.get(i) ?: 0 - }, item) + itemColors.registerItemColorHandler( + { stack, i -> + item.blockMaterial.getCMaterial(stack.itemDamage).colors?.get(i) ?: 0 + }, + item + ) } - itemColors.registerItemColorHandler({ stack, _ -> - COLORED_SILICONE.getEnum(stack).colorValue - }, COLORED_SILICONE) + itemColors.registerItemColorHandler( + { stack, _ -> COLORED_SILICONE.getEnum(stack).colorValue }, + COLORED_SILICONE + ) } } diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ColoredSiliconeBlock.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ColoredSiliconeBlock.kt index ae8bd2d8a..bd7bc772e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ColoredSiliconeBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ColoredSiliconeBlock.kt @@ -19,5 +19,6 @@ class ColoredSiliconeBlock : VariantBlock(BlockMaterial.IRON), ITi } override fun getTier(stack: ItemStack) = ClayTiers.PRECISION + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.PRECISION -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockClayLaserReflector.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockClayLaserReflector.kt index 02b6cea99..292e25811 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockClayLaserReflector.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockClayLaserReflector.kt @@ -10,4 +10,4 @@ class ItemBlockClayLaserReflector(block: BlockClayLaserReflector) : ItemBlock(bl tileEntityItemStackRenderer = LaserReflectorItemStackRenderer } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockEnergizedClay.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockEnergizedClay.kt index 450290a60..ba1042123 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockEnergizedClay.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockEnergizedClay.kt @@ -11,18 +11,24 @@ import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.ICapabilityProvider -class ItemBlockEnergizedClay(block: BlockEnergizedClay, orePrefix: OrePrefix, ) : ItemBlockMaterial(block, orePrefix) { +class ItemBlockEnergizedClay( + block: BlockEnergizedClay, + orePrefix: OrePrefix, +) : ItemBlockMaterial(block, orePrefix) { override fun initCapabilities(stack: ItemStack, nbt: NBTTagCompound?): ICapabilityProvider? { return object : ItemCapabilityProvider { override fun getCapability(capability: Capability): T? { if (capability == ClayiumCapabilities.ENERGIZED_CLAY) { - val energy = blockMaterial.getCMaterial(stack).getPropOrNull(CPropertyKey.CLAY)?.energy + val energy = + blockMaterial.getCMaterial(stack).getPropOrNull(CPropertyKey.CLAY)?.energy if (energy != null) { - return ClayiumCapabilities.ENERGIZED_CLAY.cast(IClayEnergyProvider { energy }) + return ClayiumCapabilities.ENERGIZED_CLAY.cast( + IClayEnergyProvider { energy } + ) } } return null } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockMaterial.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockMaterial.kt index e65e615af..2deedcbce 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockMaterial.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ItemBlockMaterial.kt @@ -9,7 +9,10 @@ open class ItemBlockMaterial( val blockMaterial: BlockMaterialBase, val orePrefix: OrePrefix, ) : ItemBlock(blockMaterial) { - init { hasSubtypes = true } + init { + hasSubtypes = true + } + override fun getMetadata(damage: Int) = damage override fun getItemStackDisplayName(stack: ItemStack): String { @@ -19,4 +22,4 @@ open class ItemBlockMaterial( override fun getForgeRarity(stack: ItemStack): IRarity { return blockMaterial.getCMaterial(stack).tier?.rarity ?: super.getForgeRarity(stack) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityClayLaserReflector.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityClayLaserReflector.kt index 94bbe5b6e..81eb7807e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityClayLaserReflector.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityClayLaserReflector.kt @@ -20,7 +20,8 @@ import net.minecraft.util.math.BlockPos import net.minecraft.world.World import net.minecraftforge.common.capabilities.Capability -class TileEntityClayLaserReflector : SyncedTileEntityBase(), ITickable, IClayLaserSource, IClayLaserAcceptor, IWorldObject { +class TileEntityClayLaserReflector : + SyncedTileEntityBase(), ITickable, IClayLaserSource, IClayLaserAcceptor, IWorldObject { override var irradiatingLaser: ClayLaser? = null private set(value) { @@ -30,21 +31,24 @@ class TileEntityClayLaserReflector : SyncedTileEntityBase(), ITickable, IClayLas writeLaser(value) } } + override var length: Int = 0 private set(value) { val syncFlag = !world.isRemote && (value != field) field = value if (syncFlag) { - writeCustomData(UPDATE_LASER_LENGTH) { - writeVarInt(value) - } + writeCustomData(UPDATE_LASER_LENGTH) { writeVarInt(value) } } } + private val laserManager = ClayLaserIrradiator(this) private val receivedLasers = Object2ObjectOpenHashMap() - override val worldObj: World? get() = world - override val position: BlockPos? get() = pos + override val worldObj: World? + get() = world + + override val position: BlockPos? + get() = pos override val direction get() = world.getBlockState(pos).getValue(BlockClayLaserReflector.FACING) @@ -122,9 +126,9 @@ class TileEntityClayLaserReflector : SyncedTileEntityBase(), ITickable, IClayLas } override fun hasCapability(capability: Capability<*>, facing: EnumFacing?): Boolean { - return capability === ClayiumTileCapabilities.CLAY_LASER_SOURCE - || capability === ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR - || super.hasCapability(capability, facing) + return capability === ClayiumTileCapabilities.CLAY_LASER_SOURCE || + capability === ClayiumTileCapabilities.CLAY_LASER_ACCEPTOR || + super.hasCapability(capability, facing) } override fun getCapability(capability: Capability, facing: EnumFacing?): T? { @@ -162,4 +166,4 @@ class TileEntityClayLaserReflector : SyncedTileEntityBase(), ITickable, IClayLas } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityCreativeEnergySource.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityCreativeEnergySource.kt index 8adbc801d..142e324eb 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityCreativeEnergySource.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/TileEntityCreativeEnergySource.kt @@ -25,7 +25,11 @@ class TileEntityCreativeEnergySource : TileEntity(), IGuiHolder { for (state in block.blockState.validStates) { if (highest == null) highest = state val matCe = block.getCMaterial(state).getProperty(CPropertyKey.CLAY).energy - val currentCe = (highest.block as BlockEnergizedClay).getCMaterial(highest).getProperty(CPropertyKey.CLAY).energy!! + val currentCe = + (highest.block as BlockEnergizedClay) + .getCMaterial(highest) + .getProperty(CPropertyKey.CLAY) + .energy!! if (matCe == null) continue if (matCe > currentCe) { highest = state @@ -37,9 +41,12 @@ class TileEntityCreativeEnergySource : TileEntity(), IGuiHolder { override fun buildUI(data: PosGuiData, syncManager: GuiSyncManager): ModularPanel { return ModularPanel.defaultPanel("clayium:creative_energy_source") - .child(ItemSlot() - .slot(SyncHandlers.itemSlot(handler, 0).accessibility(false, true)) - .align(Alignment.TopCenter).top(36)) + .child( + ItemSlot() + .slot(SyncHandlers.itemSlot(handler, 0).accessibility(false, true)) + .align(Alignment.TopCenter) + .top(36) + ) .bindPlayerInventory() } @@ -50,4 +57,4 @@ class TileEntityCreativeEnergySource : TileEntity(), IGuiHolder { super.getCapability(capability, facing) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderBlock.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderBlock.kt index 23184593a..4e935fb72 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderBlock.kt @@ -25,9 +25,16 @@ class ChunkLoaderBlock : Block(Material.IRON), ITieredBlock { } override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState) = ChunkLoaderTileEntity() - override fun onBlockPlacedBy(worldIn: World, pos: BlockPos, state: IBlockState, placer: EntityLivingBase, stack: ItemStack) { + override fun onBlockPlacedBy( + worldIn: World, + pos: BlockPos, + state: IBlockState, + placer: EntityLivingBase, + stack: ItemStack + ) { super.onBlockPlacedBy(worldIn, pos, state, placer, stack) val tileEntity = worldIn.getTileEntity(pos) if (tileEntity is ChunkLoaderTileEntity) { @@ -44,7 +51,8 @@ class ChunkLoaderBlock : Block(Material.IRON), ITieredBlock { } override fun getTier(stack: ItemStack): ITier = ClayTiers.PRECISION + override fun getTier(world: IBlockAccess, pos: BlockPos): ITier = ClayTiers.PRECISION override fun getRenderLayer() = BlockRenderLayer.CUTOUT_MIPPED -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderTileEntity.kt index c6b0844a8..9141f1c42 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/chunkloader/ChunkLoaderTileEntity.kt @@ -7,7 +7,7 @@ import net.minecraft.tileentity.TileEntity import net.minecraft.util.math.ChunkPos import net.minecraftforge.common.ForgeChunkManager -//todo modifiable via config or gui? +// todo modifiable via config or gui? private const val SIZE = 1 class ChunkLoaderTileEntity : TileEntity() { @@ -24,9 +24,12 @@ class ChunkLoaderTileEntity : TileEntity() { } fun requestTicket(): ForgeChunkManager.Ticket? { - val ticket = ForgeChunkManager.requestTicket(ClayiumMod, this.world, ForgeChunkManager.Type.NORMAL) + val ticket = + ForgeChunkManager.requestTicket(ClayiumMod, this.world, ForgeChunkManager.Type.NORMAL) if (ticket == null) { - CLog.warn("Chunk Loader at $pos failed to request a new ticket. There are too many $MOD_NAME's Chunk Loaders in the world.") + CLog.warn( + "Chunk Loader at $pos failed to request a new ticket. There are too many $MOD_NAME's Chunk Loaders in the world." + ) return null } ticket.modData.setLong("chunkLoaderPos", pos.toLong()) @@ -48,4 +51,4 @@ class ChunkLoaderTileEntity : TileEntity() { } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/BlockClayCraftingBoard.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/BlockClayCraftingBoard.kt index b50e0c070..d9b91c2f5 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/BlockClayCraftingBoard.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/BlockClayCraftingBoard.kt @@ -24,12 +24,26 @@ class BlockClayCraftingBoard : Block(Material.CLAY), ITieredBlock { } private val aabb = AxisAlignedBB(0.0, 0.0, 0.0, 1.0, 0.25, 1.0) + override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState) = TileClayCraftingTable() + override fun getTier(stack: ItemStack) = ClayTiers.DEFAULT + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.DEFAULT - override fun onBlockActivated(worldIn: World, pos: BlockPos, state: IBlockState, playerIn: EntityPlayer, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onBlockActivated( + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { if (!worldIn.isRemote) { TileEntityGuiFactory.open(playerIn, pos) } @@ -37,13 +51,21 @@ class BlockClayCraftingBoard : Block(Material.CLAY), ITieredBlock { } override fun isFullBlock(state: IBlockState) = false + override fun isFullCube(state: IBlockState) = false + override fun isOpaqueCube(state: IBlockState) = false + override fun causesSuffocation(state: IBlockState) = false override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = aabb - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add("WIP, not functional yet") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/TileClayCraftingTable.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/TileClayCraftingTable.kt index 2c1aacbfe..a090cb807 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/TileClayCraftingTable.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/claycraftingtable/TileClayCraftingTable.kt @@ -51,54 +51,117 @@ class TileClayCraftingTable : TileEntity(), IMarkDirty, IGuiHolder { override fun buildUI(data: PosGuiData, syncManager: GuiSyncManager): ModularPanel { syncManager.registerSlotGroup("input_inventory", 3) return ModularPanel.defaultPanel("clay_crafting_table") - .child(Column().margin(7).sizeRel(1f) - .child(ParentWidget().widthRel(1f).expanded().marginBottom(2) - .child(IKey.lang("tile.$MOD_ID.clay_crafting_board.name").asWidget().align(Alignment.TopLeft)) - .child(IKey.lang("container.inventory").asWidget().align(Alignment.BottomLeft)) - .child(Row().widthRel(0.7f).height(18 * 3).align(Alignment.Center) - .child(SlotGroupWidget.builder() - .matrix("III", "III", "III") - .key('I') { i -> - ItemSlot().slot(SyncHandlers.itemSlot(inputInventory, i) - .slotGroup("input_inventory") - .changeListener { newItem, onlyAmountChanged, client, init -> - onInputSlotChanged() - } - ) - }.build().align(Alignment.CenterLeft) - ) - .child(ProgressWidget().size(22, 17).progress { 0.0 }.texture(ClayGuiTextures.PROGRESS_BAR, 22) - .left(18 * 3 + 5).top(18 * 3 / 2 - 8) - .also { - if (Mods.JustEnoughItems.isModLoaded) { - it.addTooltipLine(IKey.lang("jei.tooltip.show.recipes")) - .listenGuiAction(IGuiAction.MousePressed { _ -> - if (!it.isBelowMouse) return@MousePressed false - JeiPlugin.jeiRuntime.recipesGui.showCategories(listOf(VanillaRecipeCategoryUid.CRAFTING)) - return@MousePressed true - }) - } - } - ) - .child(ParentWidget().size(26, 26).background(ClayGuiTextures.LARGE_SLOT) - .child(ItemSlot().align(Alignment.Center) - .slot(object: ModularSlot(outputInventory, 0) { - override fun onTake(thePlayer: EntityPlayer, stack: ItemStack): ItemStack { - onOutputSlotTake() - return super.onTake(thePlayer, stack) - } - }.accessibility(false, true)) - .background(IDrawable.EMPTY)) - .align(Alignment.CenterRight)) + .child( + Column() + .margin(7) + .sizeRel(1f) + .child( + ParentWidget() + .widthRel(1f) + .expanded() + .marginBottom(2) + .child( + IKey.lang("tile.$MOD_ID.clay_crafting_board.name") + .asWidget() + .align(Alignment.TopLeft) + ) + .child( + IKey.lang("container.inventory") + .asWidget() + .align(Alignment.BottomLeft) + ) + .child( + Row() + .widthRel(0.7f) + .height(18 * 3) + .align(Alignment.Center) + .child( + SlotGroupWidget.builder() + .matrix("III", "III", "III") + .key('I') { i -> + ItemSlot() + .slot( + SyncHandlers.itemSlot(inputInventory, i) + .slotGroup("input_inventory") + .changeListener { + newItem, + onlyAmountChanged, + client, + init -> + onInputSlotChanged() + } + ) + } + .build() + .align(Alignment.CenterLeft) + ) + .child( + ProgressWidget() + .size(22, 17) + .progress { 0.0 } + .texture(ClayGuiTextures.PROGRESS_BAR, 22) + .left(18 * 3 + 5) + .top(18 * 3 / 2 - 8) + .also { + if (Mods.JustEnoughItems.isModLoaded) { + it.addTooltipLine( + IKey.lang("jei.tooltip.show.recipes") + ) + .listenGuiAction( + IGuiAction.MousePressed { _ -> + if (!it.isBelowMouse) + return@MousePressed false + JeiPlugin.jeiRuntime.recipesGui + .showCategories( + listOf( + VanillaRecipeCategoryUid + .CRAFTING + ) + ) + return@MousePressed true + } + ) + } + } + ) + .child( + ParentWidget() + .size(26, 26) + .background(ClayGuiTextures.LARGE_SLOT) + .child( + ItemSlot() + .align(Alignment.Center) + .slot( + object : ModularSlot(outputInventory, 0) { + override fun onTake( + thePlayer: EntityPlayer, + stack: ItemStack + ): ItemStack { + onOutputSlotTake() + return super.onTake( + thePlayer, + stack + ) + } + } + .accessibility(false, true) + ) + .background(IDrawable.EMPTY) + ) + .align(Alignment.CenterRight) + ) + ) ) - ) - .child(SlotGroupWidget.playerInventory(0)) + .child(SlotGroupWidget.playerInventory(0)) ) } private fun onInputSlotChanged() { val matrix = InventoryCrafting(DummyContainer, 3, 3) - for (slot in 0..<9) matrix.setInventorySlotContents(slot, inputInventory.getStackInSlot(slot)) + for (slot in 0..<9) matrix.setInventorySlotContents( + slot, + inputInventory.getStackInSlot(slot) + ) val recipe = CraftingManager.findMatchingRecipe(matrix, world) if (recipe == null) { outputInventory.setStackInSlot(0, ItemStack.EMPTY) @@ -111,10 +174,13 @@ class TileClayCraftingTable : TileEntity(), IMarkDirty, IGuiHolder { private fun onOutputSlotTake() { val matrix = InventoryCrafting(DummyContainer, 3, 3) - for (slot in 0..<9) matrix.setInventorySlotContents(slot, inputInventory.getStackInSlot(slot)) + for (slot in 0..<9) matrix.setInventorySlotContents( + slot, + inputInventory.getStackInSlot(slot) + ) val recipe = CraftingManager.findMatchingRecipe(matrix, world) ?: return recipe.getRemainingItems(matrix).forEachIndexed { i, stack -> inputInventory.setStackInSlot(i, stack) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLeaves.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLeaves.kt index c6aab819b..9bada5f84 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLeaves.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLeaves.kt @@ -24,10 +24,18 @@ import java.util.Random @Suppress("OVERRIDE_DEPRECATION") class BlockClayLeaves : BlockLeaves(), ITieredBlock { init { - defaultState = blockState.baseState.withProperty(CHECK_DECAY, true).withProperty(DECAYABLE, true) + defaultState = + blockState.baseState.withProperty(CHECK_DECAY, true).withProperty(DECAYABLE, true) } + override fun getWoodType(meta: Int) = BlockPlanks.EnumType.OAK - override fun onSheared(item: ItemStack, world: IBlockAccess?, pos: BlockPos?, fortune: Int): List { + + override fun onSheared( + item: ItemStack, + world: IBlockAccess?, + pos: BlockPos?, + fortune: Int + ): List { return listOf(ItemStack(this.getAsItem())) } @@ -46,19 +54,39 @@ class BlockClayLeaves : BlockLeaves(), ITieredBlock { } // default implementation uses damageDropped for metadata. so we have to adjust it to 0. - override fun getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack { + override fun getPickBlock( + state: IBlockState, + target: RayTraceResult, + world: World, + pos: BlockPos, + player: EntityPlayer + ): ItemStack { return ItemStack(this) } - override fun getStateFromMeta(meta: Int) = defaultState.withProperty(CHECK_DECAY, meta and 0b01 != 0).withProperty(DECAYABLE, meta and 0b10 != 0) - override fun getMetaFromState(state: IBlockState) = (if (state.getValue(CHECK_DECAY)) 0b01 else 0) or (if (state.getValue(DECAYABLE)) 0b10 else 0) + override fun getStateFromMeta(meta: Int) = + defaultState + .withProperty(CHECK_DECAY, meta and 0b01 != 0) + .withProperty(DECAYABLE, meta and 0b10 != 0) + + override fun getMetaFromState(state: IBlockState) = + (if (state.getValue(CHECK_DECAY)) 0b01 else 0) or + (if (state.getValue(DECAYABLE)) 0b10 else 0) override fun createBlockState() = BlockStateContainer(this, CHECK_DECAY, DECAYABLE) override fun getTier(stack: ItemStack) = ClayTiers.CLAY_STEEL + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.CLAY_STEEL override fun getRenderLayer() = Blocks.LEAVES.defaultState.block.getRenderLayer() + override fun isOpaqueCube(state: IBlockState) = Blocks.LEAVES.defaultState.isOpaqueCube - override fun shouldSideBeRendered(blockState: IBlockState, blockAccess: IBlockAccess, pos: BlockPos, side: EnumFacing) = Blocks.LEAVES.defaultState.shouldSideBeRendered(blockAccess, pos, side) -} \ No newline at end of file + + override fun shouldSideBeRendered( + blockState: IBlockState, + blockAccess: IBlockAccess, + pos: BlockPos, + side: EnumFacing + ) = Blocks.LEAVES.defaultState.shouldSideBeRendered(blockAccess, pos, side) +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLog.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLog.kt index 93992b433..8ad466a1e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLog.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClayLog.kt @@ -20,8 +20,10 @@ class BlockClayLog : BlockRotatedPillar(Material.WOOD), ITieredBlock { } override fun canSustainLeaves(state: IBlockState, world: IBlockAccess, pos: BlockPos) = true + override fun isWood(world: IBlockAccess, pos: BlockPos) = true override fun getTier(stack: ItemStack) = ClayTiers.CLAY_STEEL + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.CLAY_STEEL -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClaySapling.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClaySapling.kt index fd594c98d..ffbcf77f0 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClaySapling.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/claytree/BlockClaySapling.kt @@ -22,8 +22,23 @@ import java.util.Random @Suppress("OVERRIDE_DEPRECATION") class BlockClaySapling : BlockBush(), IGrowable, ITieredBlock { - val clayTreeGen = WorldGenTrees(true, 4, ClayiumBlocks.CLAY_TREE_LOG.defaultState, ClayiumBlocks.CLAY_TREE_LEAVES.defaultState, false) - val saplingAabb = AxisAlignedBB(0.09999999403953552, 0.0, 0.09999999403953552, 0.8999999761581421, 0.800000011920929, 0.8999999761581421) + val clayTreeGen = + WorldGenTrees( + true, + 4, + ClayiumBlocks.CLAY_TREE_LOG.defaultState, + ClayiumBlocks.CLAY_TREE_LEAVES.defaultState, + false + ) + val saplingAabb = + AxisAlignedBB( + 0.09999999403953552, + 0.0, + 0.09999999403953552, + 0.8999999761581421, + 0.800000011920929, + 0.8999999761581421 + ) init { setHardness(0.0f) @@ -32,14 +47,26 @@ class BlockClaySapling : BlockBush(), IGrowable, ITieredBlock { } override fun createBlockState() = BlockStateContainer(this, STAGE) + override fun getMetaFromState(state: IBlockState) = state.getValue(STAGE) + override fun getStateFromMeta(meta: Int) = defaultState.withProperty(STAGE, meta) - override fun canGrow(worldIn: World, pos: BlockPos, state: IBlockState, isClient: Boolean): Boolean { + override fun canGrow( + worldIn: World, + pos: BlockPos, + state: IBlockState, + isClient: Boolean + ): Boolean { return true } - override fun canUseBonemeal(worldIn: World, rand: Random, pos: BlockPos, state: IBlockState): Boolean { + override fun canUseBonemeal( + worldIn: World, + rand: Random, + pos: BlockPos, + state: IBlockState + ): Boolean { return rand.nextDouble() < 0.45 } @@ -68,8 +95,10 @@ class BlockClaySapling : BlockBush(), IGrowable, ITieredBlock { clayTreeGen.generate(worldIn, rand, pos) } - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = saplingAabb + override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = + saplingAabb override fun getTier(stack: ItemStack) = ClayTiers.CLAY_STEEL + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.CLAY_STEEL -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/BlockClayWorkTable.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/BlockClayWorkTable.kt index 7719deb78..a9328e9e7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/BlockClayWorkTable.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/BlockClayWorkTable.kt @@ -24,16 +24,23 @@ class BlockClayWorkTable : Block(Material.ROCK), ITieredBlock { } override fun getTier(stack: ItemStack) = ClayTiers.DEFAULT + override fun getTier(world: IBlockAccess, pos: BlockPos) = ClayTiers.DEFAULT override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState) = TileClayWorkTable() override fun onBlockActivated( - worldIn: World, pos: BlockPos, state: IBlockState, - playerIn: EntityPlayer, hand: EnumHand, + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, facing: EnumFacing, - hitX: Float, hitY: Float, hitZ: Float + hitX: Float, + hitY: Float, + hitZ: Float ): Boolean { if (worldIn.isRemote) return true playerIn.openGui(ClayiumMod, GuiHandler.CLAY_WORK_TABLE, worldIn, pos.x, pos.y, pos.z) diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/TileClayWorkTable.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/TileClayWorkTable.kt index 08e505933..55fb4492f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/TileClayWorkTable.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/clayworktable/TileClayWorkTable.kt @@ -35,7 +35,8 @@ class TileClayWorkTable : TileEntity() { } override fun getCapability(capability: Capability, facing: EnumFacing?): T? { - return if (capability === ITEM_HANDLER_CAPABILITY) capability.cast(itemHandler) else super.getCapability(capability, facing) + return if (capability === ITEM_HANDLER_CAPABILITY) capability.cast(itemHandler) + else super.getCapability(capability, facing) } private val currentTool: ItemStack @@ -47,16 +48,21 @@ class TileClayWorkTable : TileEntity() { } fun canPushButton(id: Int): Boolean { - return canStartCraft(itemHandler.getStackInSlot(0), ClayWorkTableMethod.fromId(id) - ?: throw IllegalArgumentException("Invalid button id.")) + return canStartCraft( + itemHandler.getStackInSlot(0), + ClayWorkTableMethod.fromId(id) ?: throw IllegalArgumentException("Invalid button id.") + ) } fun pushButton(clicker: EntityPlayer, id: Int) { val input = itemHandler.getStackInSlot(0) - val method: ClayWorkTableMethod = ClayWorkTableMethod.fromId(id) - ?: throw IllegalArgumentException("Invalid button id.") - val recipe = CWTRecipes.getClayWorkTableRecipe(input, method) - ?: throw NullPointerException("Button pushed without any valid recipe! This should not happen.") + val method: ClayWorkTableMethod = + ClayWorkTableMethod.fromId(id) ?: throw IllegalArgumentException("Invalid button id.") + val recipe = + CWTRecipes.getClayWorkTableRecipe(input, method) + ?: throw NullPointerException( + "Button pushed without any valid recipe! This should not happen." + ) if (currentRecipe !== recipe) { currentRecipe = recipe requiredProgress = recipe.clicks @@ -83,8 +89,15 @@ class TileClayWorkTable : TileEntity() { val outputSlot = itemHandler.getStackInSlot(2) val secondaryOutputSlot = itemHandler.getStackInSlot(3) - val canOutputPrimary = (outputSlot.isEmpty || (outputSlot.isItemEqual(recipe.primaryOutput) && outputSlot.count + recipe.primaryOutput.count <= outputSlot.maxStackSize)) - val canOutputSecondary = (secondaryOutputSlot.isEmpty || (secondaryOutputSlot.isItemEqual(recipe.secondaryOutput) && secondaryOutputSlot.count + recipe.secondaryOutput.count <= secondaryOutputSlot.maxStackSize)) + val canOutputPrimary = + (outputSlot.isEmpty || + (outputSlot.isItemEqual(recipe.primaryOutput) && + outputSlot.count + recipe.primaryOutput.count <= outputSlot.maxStackSize)) + val canOutputSecondary = + (secondaryOutputSlot.isEmpty || + (secondaryOutputSlot.isItemEqual(recipe.secondaryOutput) && + secondaryOutputSlot.count + recipe.secondaryOutput.count <= + secondaryOutputSlot.maxStackSize)) return canOutputPrimary && (!recipe.hasSecondaryOutput() || canOutputSecondary) } diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/BlockClayMarker.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/BlockClayMarker.kt index 827d1a2ae..f75135771 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/BlockClayMarker.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/BlockClayMarker.kt @@ -29,9 +29,11 @@ class BlockClayMarker : VariantBlock(Material.GROUND) { } override fun hasTileEntity(state: IBlockState) = true + override fun createTileEntity(world: World, state: IBlockState): TileEntity { // when use getEnum(state) directly in when, it will throw - // java.lang.NoClassDefFoundError: com/github/trc/clayium/common/blocks/marker/BlockClayMarker$WhenMappings + // java.lang.NoClassDefFoundError: + // com/github/trc/clayium/common/blocks/marker/BlockClayMarker$WhenMappings val type: ClayMarkerType = getEnum(state) return when (type) { ClayMarkerType.NO_EXTEND -> TileClayMarker.NoExtend() @@ -41,24 +43,46 @@ class BlockClayMarker : VariantBlock(Material.GROUND) { } } - override fun onBlockActivated(worldIn: World, pos: BlockPos, state: IBlockState, playerIn: EntityPlayer, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onBlockActivated( + worldIn: World, + pos: BlockPos, + state: IBlockState, + playerIn: EntityPlayer, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { val tileEntity = worldIn.getTileEntity(pos) as? TileClayMarker ?: return false tileEntity.onRightClick() return true } override fun isFullBlock(state: IBlockState) = false + override fun isFullCube(state: IBlockState) = false + override fun isOpaqueCube(state: IBlockState) = false + override fun causesSuffocation(state: IBlockState) = false - override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = CLAY_MARKER_AABB + override fun getBoundingBox(state: IBlockState, source: IBlockAccess, pos: BlockPos) = + CLAY_MARKER_AABB @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) UtilLocale.formatTooltips(tooltip, "${super.translationKey}.tooltip") - UtilLocale.formatTooltips(tooltip, "${super.translationKey}.${getEnum(stack).lowerName}.tooltip") + UtilLocale.formatTooltips( + tooltip, + "${super.translationKey}.${getEnum(stack).lowerName}.tooltip" + ) } companion object { @@ -67,4 +91,4 @@ class BlockClayMarker : VariantBlock(Material.GROUND) { AxisAlignedBB(0.5 - d, 0.5 - d, 0.5 - d, 0.5 + d, 0.5 + d, 0.5 + d) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/ClayMarkerType.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/ClayMarkerType.kt index a7ad3286c..d9b9dacb5 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/ClayMarkerType.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/ClayMarkerType.kt @@ -3,19 +3,16 @@ package com.github.trc.clayium.common.blocks.marker import com.github.trc.clayium.api.util.ClayTiers import net.minecraft.util.IStringSerializable -enum class ClayMarkerType( - val tier: ClayTiers -) : IStringSerializable { +enum class ClayMarkerType(val tier: ClayTiers) : IStringSerializable { NO_EXTEND(ClayTiers.CLAY_STEEL), EXTEND_TO_GROUND(ClayTiers.CLAYIUM), EXTEND_TO_SKY(ClayTiers.CLAYIUM), ALL_HEIGHT(ClayTiers.CLAYIUM), ; - @Suppress("usePropertyAccessSyntax") - val lowerName = getName() + @Suppress("usePropertyAccessSyntax") val lowerName = getName() override fun getName(): String { return name.lowercase() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/TileClayMarker.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/TileClayMarker.kt index 9a240a68f..35ab21aad 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/TileClayMarker.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/marker/TileClayMarker.kt @@ -11,10 +11,7 @@ import net.minecraft.util.math.BlockPos abstract class TileClayMarker : TileEntity() { - /** - * range of this marker. - * null if not marked yet. - */ + /** range of this marker. null if not marked yet. */ var rangeRelative: Cuboid6? = null private set @@ -22,7 +19,7 @@ abstract class TileClayMarker : TileEntity() { var rangeRenderMode = RangeRenderMode.DISABLED - //todo remove logic from client + // todo remove logic from client fun onRightClick() { rangeRenderMode = rangeRenderMode.next() val mutPos = BlockPos.MutableBlockPos() @@ -38,15 +35,12 @@ abstract class TileClayMarker : TileEntity() { } } } - this.rangeRelative = constructRange(markerPoses) - .subtract(pos) + this.rangeRelative = constructRange(markerPoses).subtract(pos) this.markerPoses.clear() this.markerPoses.addAll(markerPoses) } - /** - * @return Absolute. - */ + /** @return Absolute. */ abstract fun constructRange(markerPoses: List): Cuboid6 override fun getRenderBoundingBox(): AxisAlignedBB { @@ -56,34 +50,34 @@ abstract class TileClayMarker : TileEntity() { open class NoExtend : TileClayMarker() { override fun constructRange(markerPoses: List): Cuboid6 { return Cuboid6( - markerPoses.minOf { it.x }.toDouble(), - markerPoses.minOf { it.y }.toDouble(), - markerPoses.minOf { it.z }.toDouble(), - markerPoses.maxOf { it.x }.toDouble() + 1.0, - markerPoses.maxOf { it.y }.toDouble() + 1.0, - markerPoses.maxOf { it.z }.toDouble() + 1.0 + markerPoses.minOf { it.x }.toDouble(), + markerPoses.minOf { it.y }.toDouble(), + markerPoses.minOf { it.z }.toDouble(), + markerPoses.maxOf { it.x }.toDouble() + 1.0, + markerPoses.maxOf { it.y }.toDouble() + 1.0, + markerPoses.maxOf { it.z }.toDouble() + 1.0 ) } } class ExtendToGround : NoExtend() { override fun constructRange(markerPoses: List): Cuboid6 { - return super.constructRange(markerPoses) - .apply { min.y = 0.0 } + return super.constructRange(markerPoses).apply { min.y = 0.0 } } } class ExtendToSky : NoExtend() { override fun constructRange(markerPoses: List): Cuboid6 { - return super.constructRange(markerPoses) - .apply { max.y = 255.0 } + return super.constructRange(markerPoses).apply { max.y = 255.0 } } } class AllHeight : NoExtend() { override fun constructRange(markerPoses: List): Cuboid6 { - return super.constructRange(markerPoses) - .apply { min.y = 0.0; max.y = 255.0 } + return super.constructRange(markerPoses).apply { + min.y = 0.0 + max.y = 255.0 + } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressed.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressed.kt index 033681f92..28ddc90ba 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressed.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressed.kt @@ -31,7 +31,8 @@ import net.minecraftforge.common.property.IExtendedBlockState import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly -abstract class BlockCompressed(mapping: Map) : BlockMaterialBase(BlockMaterial.IRON, mapping) { +abstract class BlockCompressed(mapping: Map) : + BlockMaterialBase(BlockMaterial.IRON, mapping) { init { setCreativeTab(ClayiumCTabs.decorations) @@ -39,41 +40,65 @@ abstract class BlockCompressed(mapping: Map) : BlockMaterialBase override fun createBlockState(): BlockStateContainer { return BlockStateContainer.Builder(this) - .add(getMaterialProperty()).add(MATERIAL_NAME).build() + .add(getMaterialProperty()) + .add(MATERIAL_NAME) + .build() } override fun getSubBlocks(itemIn: CreativeTabs, items: NonNullList) { super.getSubBlocks(itemIn, items) } - @SideOnly(Side.CLIENT) - override fun getRenderLayer() = BlockRenderLayer.SOLID + @SideOnly(Side.CLIENT) override fun getRenderLayer() = BlockRenderLayer.SOLID @SideOnly(Side.CLIENT) override fun registerModels() { - val blockLoc = ModelResourceLocation(clayiumId("material/compressed_material"), "variant=block") - val itemLoc = ModelResourceLocation(clayiumId("material/compressed_material"), "variant=item") - ModelLoader.setCustomStateMapper(this, - object : StateMapperBase() { override fun getModelResourceLocation(state: IBlockState) = blockLoc } + val blockLoc = + ModelResourceLocation(clayiumId("material/compressed_material"), "variant=block") + val itemLoc = + ModelResourceLocation(clayiumId("material/compressed_material"), "variant=item") + ModelLoader.setCustomStateMapper( + this, + object : StateMapperBase() { + override fun getModelResourceLocation(state: IBlockState) = blockLoc + } ) for (state in blockState.validStates) { - ModelLoader.setCustomModelResourceLocation(this.getAsItem(), this.getMetaFromState(state), itemLoc) + ModelLoader.setCustomModelResourceLocation( + this.getAsItem(), + this.getMetaFromState(state), + itemLoc + ) } } - override fun getSoundType(state: IBlockState, world: World, pos: BlockPos, entity: Entity?): SoundType { - //todo: different sound for different materials? + override fun getSoundType( + state: IBlockState, + world: World, + pos: BlockPos, + entity: Entity? + ): SoundType { + // todo: different sound for different materials? return SoundType.METAL } - override fun getExtendedState(state: IBlockState, world: IBlockAccess, pos: BlockPos): IBlockState { + override fun getExtendedState( + state: IBlockState, + world: IBlockAccess, + pos: BlockPos + ): IBlockState { val material = getCMaterial(state) return (state as IExtendedBlockState).withProperty(MATERIAL_NAME, material.upperCamelName) } /* BoilerPlate for custom particle handling */ @SideOnly(Side.CLIENT) - override fun addHitEffects(state: IBlockState, world: World, target: RayTraceResult, manager: ParticleManager): Boolean { + override fun addHitEffects( + state: IBlockState, + world: World, + target: RayTraceResult, + manager: ParticleManager + ): Boolean { CustomParticleHandler.handleHitEffects(state, world, target, manager) return true } @@ -84,21 +109,38 @@ abstract class BlockCompressed(mapping: Map) : BlockMaterialBase return true } - override fun addRunningEffects(state: IBlockState, world: World, pos: BlockPos, entity: Entity): Boolean { + override fun addRunningEffects( + state: IBlockState, + world: World, + pos: BlockPos, + entity: Entity + ): Boolean { if (world.isRemote) { CustomParticleHandler.handleRunningEffects(world, pos, state, entity) } return true } - override fun addLandingEffects(state: IBlockState, worldObj: WorldServer, blockPosition: BlockPos, iblockstate: IBlockState, entity: EntityLivingBase, numberOfParticles: Int): Boolean { - CustomParticleHandler.handleLandingEffects(worldObj, blockPosition, entity, numberOfParticles) + override fun addLandingEffects( + state: IBlockState, + worldObj: WorldServer, + blockPosition: BlockPos, + iblockstate: IBlockState, + entity: EntityLivingBase, + numberOfParticles: Int + ): Boolean { + CustomParticleHandler.handleLandingEffects( + worldObj, + blockPosition, + entity, + numberOfParticles + ) return true } - companion object { val MATERIAL_NAME = UnlistedStringProperty("material") + fun create(mapping: Map): BlockCompressed { val materials = mapping.values val prop = CMaterialProperty(materials, "material") @@ -107,4 +149,4 @@ abstract class BlockCompressed(mapping: Map) : BlockMaterialBase } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressedClay.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressedClay.kt index b66fa7b61..0a96e0278 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressedClay.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockCompressedClay.kt @@ -6,9 +6,8 @@ import com.github.trc.clayium.common.blocks.properties.CMaterialProperty import com.github.trc.clayium.common.creativetab.ClayiumCTabs import net.minecraft.block.SoundType -abstract class BlockCompressedClay( - mapping: Map -) : BlockMaterialBase(net.minecraft.block.material.Material.CLAY, mapping) { +abstract class BlockCompressedClay(mapping: Map) : + BlockMaterialBase(net.minecraft.block.material.Material.CLAY, mapping) { init { setSoundType(SoundType.GROUND) setHarvestLevel("shovel", 0) @@ -27,4 +26,4 @@ abstract class BlockCompressedClay( } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockEnergizedClay.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockEnergizedClay.kt index 56be682ea..0daf3a259 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockEnergizedClay.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/material/BlockEnergizedClay.kt @@ -27,10 +27,16 @@ abstract class BlockEnergizedClay( } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) val energizedClayCapability = stack.getCapability(ClayiumCapabilities.ENERGIZED_CLAY, null) - if (energizedClayCapability != null) tooltip.add(energizedClayCapability.getClayEnergy().format()) + if (energizedClayCapability != null) + tooltip.add(energizedClayCapability.getClayEnergy().format()) } companion object { @@ -42,4 +48,4 @@ abstract class BlockEnergizedClay( } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockClayOre.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockClayOre.kt index f5d44ca7a..d3bafc2b3 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockClayOre.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockClayOre.kt @@ -48,14 +48,29 @@ class BlockClayOre : Block(Material.ROCK), IClayOreBlock { return 4 + random.nextInt(5) * random.nextInt(4) } - override fun canHarvestBlock(world: IBlockAccess, pos: BlockPos, player: EntityPlayer): Boolean { - return (player.heldItemMainhand.item is ItemClayShovel) || super.canHarvestBlock(world, pos, player) + override fun canHarvestBlock( + world: IBlockAccess, + pos: BlockPos, + player: EntityPlayer + ): Boolean { + return (player.heldItemMainhand.item is ItemClayShovel) || + super.canHarvestBlock(world, pos, player) } - override fun harvestBlock(worldIn: World, player: EntityPlayer, pos: BlockPos, state: IBlockState, te: TileEntity?, stack: ItemStack) { + override fun harvestBlock( + worldIn: World, + player: EntityPlayer, + pos: BlockPos, + state: IBlockState, + te: TileEntity?, + stack: ItemStack + ) { StatList.getBlockStats(this)?.let { player.addStat(it) } player.addExhaustion(0.005f) - if (this.canSilkHarvest(worldIn, pos, state, player) && EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack) > 0 ) { + if ( + this.canSilkHarvest(worldIn, pos, state, player) && + EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack) > 0 + ) { val items: MutableList = ArrayList() val itemStack = getSilkTouchDrop(state) if (!itemStack.isEmpty) { diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockDenseClayOre.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockDenseClayOre.kt index 641b816cb..2c5b114d4 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockDenseClayOre.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/BlockDenseClayOre.kt @@ -17,7 +17,12 @@ class BlockDenseClayOre : Block(Material.ROCK), IClayOreBlock { setHarvestLevel("pickaxe", 1) } - override fun canHarvestBlock(world: IBlockAccess, pos: BlockPos, player: EntityPlayer): Boolean { - return if (player.heldItemMainhand.item is ItemClayShovel) true else super.canHarvestBlock(world, pos, player) + override fun canHarvestBlock( + world: IBlockAccess, + pos: BlockPos, + player: EntityPlayer + ): Boolean { + return if (player.heldItemMainhand.item is ItemClayShovel) true + else super.canHarvestBlock(world, pos, player) } } diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/IClayOreBlock.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/IClayOreBlock.kt index 59ea444c3..77b87f2e0 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/IClayOreBlock.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/ores/IClayOreBlock.kt @@ -1,7 +1,7 @@ package com.github.trc.clayium.common.blocks.ores /** - * Marker interface for blocks. - * If implemented, mining speed will be increased when using Clay Tools such as [com.github.trc.clayium.common.items.ItemClayShovel]. + * Marker interface for blocks. If implemented, mining speed will be increased when using Clay Tools + * such as [com.github.trc.clayium.common.items.ItemClayShovel]. */ -interface IClayOreBlock \ No newline at end of file +interface IClayOreBlock diff --git a/src/main/kotlin/com/github/trc/clayium/common/blocks/properties/CMaterialProperty.kt b/src/main/kotlin/com/github/trc/clayium/common/blocks/properties/CMaterialProperty.kt index f9f88d123..d95ffa230 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/blocks/properties/CMaterialProperty.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/blocks/properties/CMaterialProperty.kt @@ -21,7 +21,10 @@ class CMaterialProperty( if (modIdAndName.size != 2) return Optional.absent() val namespace = modIdAndName[0] val path = modIdAndName[1] - val material = allowedValues.find { it.materialId.namespace == namespace && it.materialId.path == path } + val material = + allowedValues.find { + it.materialId.namespace == namespace && it.materialId.path == path + } return Optional.fromNullable(material) } @@ -29,4 +32,4 @@ class CMaterialProperty( // we can't use ":" in blockState property names return "${value.materialId.namespace}__${value.materialId.path}" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/creativetab/BasicCreativeTab.kt b/src/main/kotlin/com/github/trc/clayium/common/creativetab/BasicCreativeTab.kt index 79de11b80..854a6fb01 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/creativetab/BasicCreativeTab.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/creativetab/BasicCreativeTab.kt @@ -16,4 +16,4 @@ class BasicCreativeTab( } return stack } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/creativetab/ClayiumCTabs.kt b/src/main/kotlin/com/github/trc/clayium/common/creativetab/ClayiumCTabs.kt index 7d2fd7518..27596f31f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/creativetab/ClayiumCTabs.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/creativetab/ClayiumCTabs.kt @@ -11,5 +11,9 @@ object ClayiumCTabs { fun init() {} val main = BasicCreativeTab(MOD_ID, { ItemStack(Items.CLAY_BALL) }) - val decorations = BasicCreativeTab("$MOD_ID.decorations", { ClayiumBlocks.COMPRESSED_BLOCKS.first().defaultState.toItemStack() }) -} \ No newline at end of file + val decorations = + BasicCreativeTab( + "$MOD_ID.decorations", + { ClayiumBlocks.COMPRESSED_BLOCKS.first().defaultState.toItemStack() } + ) +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/gui/ClayGuiTextures.kt b/src/main/kotlin/com/github/trc/clayium/common/gui/ClayGuiTextures.kt index 234b132ac..bb3809b98 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/gui/ClayGuiTextures.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/gui/ClayGuiTextures.kt @@ -7,33 +7,18 @@ import com.github.trc.clayium.api.util.clayiumId object ClayGuiTextures { - val LARGE_SLOT = slotTexture() - .uv(0, 32, 26, 26) - .canApplyTheme() - .build() + val LARGE_SLOT = slotTexture().uv(0, 32, 26, 26).canApplyTheme().build() - val CLAY_SLOT = slotTexture() - .uv(96, 0, 18, 18) - .build() + val CLAY_SLOT = slotTexture().uv(96, 0, 18, 18).build() - val FILTER_SLOT = slotTexture() - .uv(96, 32, 18, 18) - .build() + val FILTER_SLOT = slotTexture().uv(96, 32, 18, 18).build() // memo: gui/slot slot interval is 14 pixels - val IMPORT_1_SLOT = slotTexture() - .uv(32, 0, 18, 18) - .build() - val IMPORT_2_SLOT = slotTexture() - .uv(32, 32, 18, 18) - .build() - - val EXPORT_1_SLOT = slotTexture() - .uv(64, 0, 18, 18) - .build() - val EXPORT_2_SLOT = slotTexture() - .uv(64, 32, 18, 18) - .build() + val IMPORT_1_SLOT = slotTexture().uv(32, 0, 18, 18).build() + val IMPORT_2_SLOT = slotTexture().uv(32, 32, 18, 18).build() + + val EXPORT_1_SLOT = slotTexture().uv(64, 0, 18, 18).build() + val EXPORT_2_SLOT = slotTexture().uv(64, 32, 18, 18).build() /* Multi-trac buffer Slots */ val SLOT_M1 = slotTexture().uv(32, 96, 18, 18).build() @@ -52,24 +37,34 @@ object ClayGuiTextures { val FILTER_SLOT_M5 = slotTexture().uv(160, 128, 18, 18).build() val FILTER_SLOT_M6 = slotTexture().uv(192, 128, 18, 18).build() - val M_TRACK_FILTER_SLOTS = arrayOf(FILTER_SLOT_M1, FILTER_SLOT_M2, FILTER_SLOT_M3, FILTER_SLOT_M4, FILTER_SLOT_M5, FILTER_SLOT_M6) - - val PROGRESS_BAR = UITexture.builder() - .location(clayiumId("gui/progress_bar")) - .imageSize(256, 256) - .uv(1, 0, 22, 34) - .canApplyTheme() - .build() + val M_TRACK_FILTER_SLOTS = + arrayOf( + FILTER_SLOT_M1, + FILTER_SLOT_M2, + FILTER_SLOT_M3, + FILTER_SLOT_M4, + FILTER_SLOT_M5, + FILTER_SLOT_M6 + ) + + val PROGRESS_BAR = + UITexture.builder() + .location(clayiumId("gui/progress_bar")) + .imageSize(256, 256) + .uv(1, 0, 22, 34) + .canApplyTheme() + .build() // GuiTextures.MC_BUTTON_PRESSED is bugged - val BUTTON_PRESSED = UITexture.builder() + val BUTTON_PRESSED = + UITexture.builder() .location(Mods.ModularUI.modId, "gui/widgets/mc_button") .imageSize(16, 32) .uv(0, 16, 16, 16) .name("mc_button_hovered") .build() - //region Buttons + // region Buttons val CE_BUTTON_DISABLED = button(0, 0) val CE_BUTTON = button(0, 16) val CE_BUTTON_HOVERED = button(0, 32) @@ -89,15 +84,15 @@ object ClayGuiTextures { val RESET_DISABLED = button(64, 0) val RESET = button(64, 16) val RESET_HOVERED = button(64, 32) - //endregion - - private fun slotTexture() = UITexture.builder() - .location(MOD_ID, "gui/slot") - .imageSize(256, 256) - - private fun button(u: Int, v: Int) = UITexture.builder() - .location(MOD_ID, "gui/button") - .imageSize(256, 256) - .uv(u, v, 16, 16) - .build() -} \ No newline at end of file + + // endregion + + private fun slotTexture() = UITexture.builder().location(MOD_ID, "gui/slot").imageSize(256, 256) + + private fun button(u: Int, v: Int) = + UITexture.builder() + .location(MOD_ID, "gui/button") + .imageSize(256, 256) + .uv(u, v, 16, 16) + .build() +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayWorkTable.kt b/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayWorkTable.kt index 237ae17ce..722b5fbdd 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayWorkTable.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayWorkTable.kt @@ -21,46 +21,54 @@ class ContainerClayWorkTable( init { val itemHandler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null) // Input - addSlotToContainer(object : SlotItemHandler(itemHandler, 0, 17, 30) { - override fun isItemValid(stack: ItemStack): Boolean { - return ClayWorkTableMethod.entries.any { tile.canStartCraft(stack, it) } - } + addSlotToContainer( + object : SlotItemHandler(itemHandler, 0, 17, 30) { + override fun isItemValid(stack: ItemStack): Boolean { + return ClayWorkTableMethod.entries.any { tile.canStartCraft(stack, it) } + } - override fun onSlotChanged() { - tile.resetRecipeIfEmptyInput() - tile.markDirty() + override fun onSlotChanged() { + tile.resetRecipeIfEmptyInput() + tile.markDirty() + } } - }) + ) // Tool - addSlotToContainer(object : SlotItemHandler(itemHandler, 1, 80, 17) { - override fun isItemValid(stack: ItemStack): Boolean { - return ClayWorkTableMethod.entries.any { stack.item in it.requiredTools } - } + addSlotToContainer( + object : SlotItemHandler(itemHandler, 1, 80, 17) { + override fun isItemValid(stack: ItemStack): Boolean { + return ClayWorkTableMethod.entries.any { stack.item in it.requiredTools } + } - override fun onSlotChanged() { - tile.markDirty() + override fun onSlotChanged() { + tile.markDirty() + } } - }) + ) // Primary Output - addSlotToContainer(object : SlotItemHandler(itemHandler, 2, 143, 30) { - override fun isItemValid(stack: ItemStack): Boolean { - return false - } + addSlotToContainer( + object : SlotItemHandler(itemHandler, 2, 143, 30) { + override fun isItemValid(stack: ItemStack): Boolean { + return false + } - override fun onSlotChanged() { - tile.markDirty() + override fun onSlotChanged() { + tile.markDirty() + } } - }) + ) // Secondary Output - addSlotToContainer(object : SlotItemHandler(itemHandler, 3, 143, 55) { - override fun isItemValid(stack: ItemStack): Boolean { - return false - } + addSlotToContainer( + object : SlotItemHandler(itemHandler, 3, 143, 55) { + override fun isItemValid(stack: ItemStack): Boolean { + return false + } - override fun onSlotChanged() { - tile.markDirty() + override fun onSlotChanged() { + tile.markDirty() + } } - }) + ) } override fun canInteractWith(playerIn: EntityPlayer): Boolean { diff --git a/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayium.kt b/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayium.kt index ca08fc8f6..3f729becf 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayium.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/gui/ContainerClayium.kt @@ -14,7 +14,9 @@ abstract class ContainerClayium( // add player inventory slots for (i in 0..2) { for (j in 0..8) { - this.addSlotToContainer(Slot(playerInv, j + i * 9 + 9, 8 + j * 18, playerInvOffsetY + i * 18)) + this.addSlotToContainer( + Slot(playerInv, j + i * 9 + 9, 8 + j * 18, playerInvOffsetY + i * 18) + ) } } // hot bar @@ -36,22 +38,28 @@ abstract class ContainerClayium( when (index) { // player inventory -> container? -> hot bar in 0..<27 -> { - if (!(mergeItemStack(slotStack, 36, inventorySlots.size, false) - || mergeItemStack(slotStack, 27, 36, false))) { + if ( + !(mergeItemStack(slotStack, 36, inventorySlots.size, false) || + mergeItemStack(slotStack, 27, 36, false)) + ) { return ItemStack.EMPTY } } // hot bar -> container? -> player inventory in 27..<36 -> { - if (!(mergeItemStack(slotStack, 36, inventorySlots.size, false) - || mergeItemStack(slotStack, 0, 27, false))) { + if ( + !(mergeItemStack(slotStack, 36, inventorySlots.size, false) || + mergeItemStack(slotStack, 0, 27, false)) + ) { return ItemStack.EMPTY } } // container -> hot bar? -> player inventory in 36.. { - if (!(mergeItemStack(slotStack, 27, 36, false) - || mergeItemStack(slotStack, 0, 27, false))) { + if ( + !(mergeItemStack(slotStack, 27, 36, false) || + mergeItemStack(slotStack, 0, 27, false)) + ) { return ItemStack.EMPTY } } @@ -70,4 +78,4 @@ abstract class ContainerClayium( slot.onTake(playerIn, slotStack) return orgStack } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/gui/ResizingTextWidget.kt b/src/main/kotlin/com/github/trc/clayium/common/gui/ResizingTextWidget.kt index 1c15aa5a1..6386c0c09 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/gui/ResizingTextWidget.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/gui/ResizingTextWidget.kt @@ -14,4 +14,4 @@ class ResizingTextWidget(key: IKey) : TextWidget(key) { super.draw(context, widgetTheme) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ClayiumItems.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ClayiumItems.kt index 7426cd417..4e612c12b 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ClayiumItems.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ClayiumItems.kt @@ -10,18 +10,50 @@ import net.minecraft.item.Item object ClayiumItems { - //region Tools - val CLAY_ROLLING_PIN = createItem("clay_rolling_pin", ItemClayConfigTool(maxDamage = 60, type = IConfigurationTool.ToolType.INSERTION)) - val CLAY_SLICER = createItem("clay_slicer", ItemClayConfigTool(maxDamage = 60, type = IConfigurationTool.ToolType.EXTRACTION)) - val CLAY_SPATULA = createItem("clay_spatula", ItemClayConfigTool(maxDamage = 36, type = IConfigurationTool.ToolType.PIPING)) + // region Tools + val CLAY_ROLLING_PIN = + createItem( + "clay_rolling_pin", + ItemClayConfigTool(maxDamage = 60, type = IConfigurationTool.ToolType.INSERTION) + ) + val CLAY_SLICER = + createItem( + "clay_slicer", + ItemClayConfigTool(maxDamage = 60, type = IConfigurationTool.ToolType.EXTRACTION) + ) + val CLAY_SPATULA = + createItem( + "clay_spatula", + ItemClayConfigTool(maxDamage = 36, type = IConfigurationTool.ToolType.PIPING) + ) - val CLAY_WRENCH = createItem("clay_wrench", ItemClayConfigTool(maxDamage = 0, type = IConfigurationTool.ToolType.ROTATION)) - val CLAY_IO_CONFIGURATOR = createItem("clay_io_configurator", ItemClayConfigTool(maxDamage = 0, type = IConfigurationTool.ToolType.INSERTION, typeWhenSneak = IConfigurationTool.ToolType.EXTRACTION)) - val CLAY_PIPING_TOOL = createItem("clay_piping_tool", ItemClayConfigTool(maxDamage = 0, type = IConfigurationTool.ToolType.PIPING, typeWhenSneak = IConfigurationTool.ToolType.ROTATION)) + val CLAY_WRENCH = + createItem( + "clay_wrench", + ItemClayConfigTool(maxDamage = 0, type = IConfigurationTool.ToolType.ROTATION) + ) + val CLAY_IO_CONFIGURATOR = + createItem( + "clay_io_configurator", + ItemClayConfigTool( + maxDamage = 0, + type = IConfigurationTool.ToolType.INSERTION, + typeWhenSneak = IConfigurationTool.ToolType.EXTRACTION + ) + ) + val CLAY_PIPING_TOOL = + createItem( + "clay_piping_tool", + ItemClayConfigTool( + maxDamage = 0, + type = IConfigurationTool.ToolType.PIPING, + typeWhenSneak = IConfigurationTool.ToolType.ROTATION + ) + ) val MEMORY_CARD = createItem("memory_card", ItemMemoryCard()) val SYNCHRONIZER = createItem("synchronizer", ItemSynchronizer()) - //endregion + // endregion val CLAY_PICKAXE = createItem("clay_pickaxe", ItemClayPickaxe()) val CLAY_SHOVEL = createItem("clay_shovel", ItemClayShovel()) @@ -36,7 +68,7 @@ object ClayiumItems { } } - private fun createItem(name: String, item: T): T { + private fun createItem(name: String, item: T): T { return item.apply { setCreativeTab(ClayiumCTabs.main) setRegistryName(clayiumId(name)) diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayConfigTool.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayConfigTool.kt index 01ccad855..c78123b65 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayConfigTool.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayConfigTool.kt @@ -28,14 +28,28 @@ class ItemClayConfigTool( this.maxStackSize = maxStackSize } - override fun doesSneakBypassUse(stack: ItemStack, world: IBlockAccess, pos: BlockPos, player: EntityPlayer): Boolean { + override fun doesSneakBypassUse( + stack: ItemStack, + world: IBlockAccess, + pos: BlockPos, + player: EntityPlayer + ): Boolean { return typeWhenSneak != null } - //todo use capability - override fun onItemUseFirst(player: EntityPlayer, world: World, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, hand: EnumHand): EnumActionResult { - val typeToSend = (if (player.isSneaking) typeWhenSneak else type) - ?: return EnumActionResult.PASS + // todo use capability + override fun onItemUseFirst( + player: EntityPlayer, + world: World, + pos: BlockPos, + side: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + hand: EnumHand + ): EnumActionResult { + val typeToSend = + (if (player.isSneaking) typeWhenSneak else type) ?: return EnumActionResult.PASS val metaTileEntity = world.getMetaTileEntity(pos) if (metaTileEntity == null) { @@ -57,8 +71,6 @@ class ItemClayConfigTool( } private fun createConfigToolCapability(): IConfigurationTool { - return IConfigurationTool { isSneaking -> - if (isSneaking) typeWhenSneak else type - } + return IConfigurationTool { isSneaking -> if (isSneaking) typeWhenSneak else type } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayPickaxe.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayPickaxe.kt index 12eb9a0bb..b1ab06b88 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayPickaxe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayPickaxe.kt @@ -33,7 +33,13 @@ class ItemClayPickaxe : ItemPickaxe(ToolMaterial.STONE) { override fun getDestroySpeed(stack: ItemStack, state: IBlockState): Float { if (state.block is IClayOreBlock) { val blockHarvestLevel = state.block.getHarvestLevel(state) - val itemHarvestLevel = stack.item.getHarvestLevel(stack, state.block.getHarvestTool(state) ?: "", null, state) + val itemHarvestLevel = + stack.item.getHarvestLevel( + stack, + state.block.getHarvestTool(state) ?: "", + null, + state + ) return if (blockHarvestLevel <= itemHarvestLevel) { efficiencyOnClayOre } else { @@ -44,7 +50,12 @@ class ItemClayPickaxe : ItemPickaxe(ToolMaterial.STONE) { } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add(I18n.format("item.clayium.clay_pickaxe.tooltip")) } } diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayShovel.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayShovel.kt index fb29e5d7d..af90a491d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayShovel.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayShovel.kt @@ -34,7 +34,12 @@ class ItemClayShovel : ItemSpade(ToolMaterial.WOOD) { } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltip.add(I18n.format("item.clayium.clay_shovel.tooltip")) } } diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClaySteelPickaxe.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClaySteelPickaxe.kt index 713104c52..4ec03b206 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClaySteelPickaxe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClaySteelPickaxe.kt @@ -73,13 +73,20 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { val block = ForgeRegistries.BLOCKS.getValue(ResourceLocation(blockAndMeta[0])) val meta = blockAndMeta[1].toIntOrNull() @Suppress("DEPRECATION") - if (block != null && meta != null) block.getStateFromMeta(meta) else Blocks.CLAY.defaultState + if (block != null && meta != null) block.getStateFromMeta(meta) + else Blocks.CLAY.defaultState } } - override fun onItemRightClick(worldIn: World, playerIn: EntityPlayer, handIn: EnumHand): ActionResult { - if (playerIn.isSneaking) return ActionResult.newResult(EnumActionResult.PASS, playerIn.getHeldItem(handIn)) - if (worldIn.isRemote) return ActionResult.newResult(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn)) + override fun onItemRightClick( + worldIn: World, + playerIn: EntityPlayer, + handIn: EnumHand + ): ActionResult { + if (playerIn.isSneaking) + return ActionResult.newResult(EnumActionResult.PASS, playerIn.getHeldItem(handIn)) + if (worldIn.isRemote) + return ActionResult.newResult(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn)) val stack = playerIn.getHeldItem(handIn) val mode = getMode(stack) @@ -93,24 +100,45 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { return ActionResult.newResult(EnumActionResult.SUCCESS, stack) } - override fun onItemUse(player: EntityPlayer, world: World, targetPos: BlockPos, hand: EnumHand, facing: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): EnumActionResult { + override fun onItemUse( + player: EntityPlayer, + world: World, + targetPos: BlockPos, + hand: EnumHand, + facing: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): EnumActionResult { if (player.isSneaking) { val oldState = world.getBlockState(targetPos) val block = oldState.block - val pos = if (block.isReplaceable(world, targetPos)) targetPos else targetPos.offset(facing) - val blockStack = ItemStack(rangeBlock.block, 1, rangeBlock.block.getMetaFromState(rangeBlock)) - if (!(player.canPlayerEdit(pos, facing, blockStack) && world.mayPlace(Blocks.CLAY, pos, false, facing, player))){ + val pos = + if (block.isReplaceable(world, targetPos)) targetPos else targetPos.offset(facing) + val blockStack = + ItemStack(rangeBlock.block, 1, rangeBlock.block.getMetaFromState(rangeBlock)) + if ( + !(player.canPlayerEdit(pos, facing, blockStack) && + world.mayPlace(Blocks.CLAY, pos, false, facing, player)) + ) { return EnumActionResult.FAIL } if (world.setBlockState(pos, rangeBlock, Constants.BlockFlags.DEFAULT_AND_RERENDER)) { val soundType = rangeBlock.block.getSoundType(rangeBlock, world, pos, player) - world.playSound(player, pos, soundType.placeSound, SoundCategory.BLOCKS, (soundType.volume + 1f) / 2f, soundType.pitch * 0.8f) + world.playSound( + player, + pos, + soundType.placeSound, + SoundCategory.BLOCKS, + (soundType.volume + 1f) / 2f, + soundType.pitch * 0.8f + ) } return EnumActionResult.SUCCESS } else { - val poses = getPoses(player, targetPos, 2) - .filter { rangeBlock == world.getBlockState(it) } + val poses = + getPoses(player, targetPos, 2).filter { rangeBlock == world.getBlockState(it) } if (!world.isRemote) { val stack = player.getHeldItem(hand) if (!stack.hasTagCompound()) stack.tagCompound = NBTTagCompound() @@ -121,25 +149,37 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { } } - override fun onBlockDestroyed(stack: ItemStack, worldIn: World, state: IBlockState, pos: BlockPos, entityLiving: EntityLivingBase): Boolean { + override fun onBlockDestroyed( + stack: ItemStack, + worldIn: World, + state: IBlockState, + pos: BlockPos, + entityLiving: EntityLivingBase + ): Boolean { if (worldIn.isRemote) return true - val poses = when (getMode(stack)) { - null, SINGLE -> { return super.onBlockDestroyed(stack, worldIn, state, pos, entityLiving) } - RANGED -> getPoses(entityLiving, pos, 1) - CUSTOM -> { - stack.tagCompound?.getIntArray("poses")?.takeUnless { it.isEmpty() } - ?.toBlockPosList { pos.add(it) } - ?: getPoses(entityLiving, pos, 2) + val poses = + when (getMode(stack)) { + null, + SINGLE -> { + return super.onBlockDestroyed(stack, worldIn, state, pos, entityLiving) + } + RANGED -> getPoses(entityLiving, pos, 1) + CUSTOM -> { + stack.tagCompound + ?.getIntArray("poses") + ?.takeUnless { it.isEmpty() } + ?.toBlockPosList { pos.add(it) } ?: getPoses(entityLiving, pos, 2) + } } - } for (harvesting in poses) { if (harvesting == pos) continue val state = worldIn.getBlockState(harvesting) if (state.getBlockHardness(worldIn, harvesting) == HARDNESS_UNBREAKABLE) continue - if (entityLiving is EntityPlayer - && state.block.canSilkHarvest(worldIn, harvesting, state, entityLiving) - && EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack) > 0) - { + if ( + entityLiving is EntityPlayer && + state.block.canSilkHarvest(worldIn, harvesting, state, entityLiving) && + EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack) > 0 + ) { val drop = BlockReflect.getSilkTouchDrop(state.block, state) if (!drop.isEmpty) Block.spawnAsEntity(worldIn, harvesting, drop) worldIn.destroyBlock(harvesting, false) @@ -158,8 +198,12 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { val pos2 = pos.offset(facing.rotateYCCW(), range).offset(EnumFacing.UP, range) BlockPos.getAllInBox(pos1, pos2) } else { - val pos1 = pos.offset(facing.rotateAround(EnumFacing.Axis.X), range).offset(facing.rotateAround(EnumFacing.Axis.Z), range) - val pos2 = pos.offset(facing.rotateAround(EnumFacing.Axis.X), -range).offset(facing.rotateAround(EnumFacing.Axis.Z), -range) + val pos1 = + pos.offset(facing.rotateAround(EnumFacing.Axis.X), range) + .offset(facing.rotateAround(EnumFacing.Axis.Z), range) + val pos2 = + pos.offset(facing.rotateAround(EnumFacing.Axis.X), -range) + .offset(facing.rotateAround(EnumFacing.Axis.Z), -range) BlockPos.getAllInBox(pos1, pos2) } } @@ -176,7 +220,12 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { return Mode.entries[i] } - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { val regName = this.registryName ?: return UtilLocale.formatTooltips(tooltip, "item.${regName.namespace}.${regName.path}.tooltip") } @@ -189,6 +238,7 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { companion object { private var firstCall = true + @SubscribeEvent fun onBreakSpeed(e: PlayerEvent.BreakSpeed) { // state.getPlayerRelativeBlockHardness fires this event @@ -202,20 +252,24 @@ class ItemClaySteelPickaxe : ItemPickaxe(ToolMaterial.DIAMOND) { if (!stack.hasTagCompound()) return val tag = stack.tagCompound!! val mode = Mode.entries[tag.getInteger("mode")] - val poses = when (mode) { - SINGLE -> return - RANGED -> item.getPoses(e.entityPlayer, e.pos, 1) - CUSTOM -> { - stack.tagCompound?.getIntArray("poses")?.takeUnless { it.isEmpty() } - ?.toBlockPosList { e.pos.add(it) } - ?: item.getPoses(e.entityPlayer, e.pos, 2) + val poses = + when (mode) { + SINGLE -> return + RANGED -> item.getPoses(e.entityPlayer, e.pos, 1) + CUSTOM -> { + stack.tagCompound + ?.getIntArray("poses") + ?.takeUnless { it.isEmpty() } + ?.toBlockPosList { e.pos.add(it) } + ?: item.getPoses(e.entityPlayer, e.pos, 2) + } } - } var hardness = 0f for (pos in poses) { val state = world.getBlockState(pos) if (state.material == Material.AIR) continue - val relHardness = state.getPlayerRelativeBlockHardness(e.entityPlayer, world, pos) * 30f + val relHardness = + state.getPlayerRelativeBlockHardness(e.entityPlayer, world, pos) * 30f hardness += if (relHardness == 0.0f) Float.POSITIVE_INFINITY else 1.0f / relHardness } e.newSpeed = if (hardness == 0f) Float.POSITIVE_INFINITY else 1f / hardness diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayium.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayium.kt index f563a7dde..7d6170aaf 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayium.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemClayium.kt @@ -5,13 +5,11 @@ import com.github.trc.clayium.api.util.clayiumId import com.github.trc.clayium.common.creativetab.ClayiumCTabs import net.minecraft.item.Item -/** - * @param name name without mod id - */ +/** @param name name without mod id */ open class ItemClayium(name: String) : Item() { init { this.creativeTab = ClayiumCTabs.main this.registryName = clayiumId(name) this.translationKey = "${MOD_ID}.$name" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemMemoryCard.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemMemoryCard.kt index 0bfff7300..c5d4f2fe4 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemMemoryCard.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemMemoryCard.kt @@ -24,7 +24,16 @@ class ItemMemoryCard : Item() { maxStackSize = 1 } - override fun onItemUseFirst(player: EntityPlayer, world: World, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, hand: EnumHand): EnumActionResult { + override fun onItemUseFirst( + player: EntityPlayer, + world: World, + pos: BlockPos, + side: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + hand: EnumHand + ): EnumActionResult { val metaTileEntity = world.getMetaTileEntity(pos) if (metaTileEntity == null) return EnumActionResult.PASS if (world.isRemote) return EnumActionResult.SUCCESS @@ -48,7 +57,10 @@ class ItemMemoryCard : Item() { private fun isTagValid(tag: NBTTagCompound): Boolean { for (side in EnumFacing.entries) { val i = side.index - if (!(tag.hasKey("input$i", Constants.NBT.TAG_INT) || tag.hasKey("output$i", Constants.NBT.TAG_INT))) { + if ( + !(tag.hasKey("input$i", Constants.NBT.TAG_INT) || + tag.hasKey("output$i", Constants.NBT.TAG_INT)) + ) { return false } } @@ -67,13 +79,22 @@ class ItemMemoryCard : Item() { return tag } - private fun applyToMetaTileEntity(tag: NBTTagCompound, metaTileEntity: MetaTileEntity): Boolean { - val inputs = EnumFacing.entries.map { MachineIoMode.byId(tag.getInteger("input${it.index}")) } - val outputs = EnumFacing.entries.map { MachineIoMode.byId(tag.getInteger("output${it.index}")) } + private fun applyToMetaTileEntity( + tag: NBTTagCompound, + metaTileEntity: MetaTileEntity + ): Boolean { + val inputs = + EnumFacing.entries.map { MachineIoMode.byId(tag.getInteger("input${it.index}")) } + val outputs = + EnumFacing.entries.map { MachineIoMode.byId(tag.getInteger("output${it.index}")) } val io = inputs.zip(outputs) - if (io.any { (i, o) -> !(metaTileEntity.isInputModeValid(i) && metaTileEntity.isOutputModeValid(o)) }) { + if ( + io.any { (i, o) -> + !(metaTileEntity.isInputModeValid(i) && metaTileEntity.isOutputModeValid(o)) + } + ) { return false } @@ -86,8 +107,13 @@ class ItemMemoryCard : Item() { } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) UtilLocale.formatTooltips(tooltip, "item.clayium.memory_card.tooltip") } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/ItemSynchronizer.kt b/src/main/kotlin/com/github/trc/clayium/common/items/ItemSynchronizer.kt index de99425e4..beab80f2f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/ItemSynchronizer.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/ItemSynchronizer.kt @@ -21,33 +21,65 @@ class ItemSynchronizer : Item() { maxStackSize = 1 } - override fun onItemUseFirst(player: EntityPlayer, world: World, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, hand: EnumHand): EnumActionResult { + override fun onItemUseFirst( + player: EntityPlayer, + world: World, + pos: BlockPos, + side: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + hand: EnumHand + ): EnumActionResult { if (world.getMetaTileEntity(pos) == null || player.isSneaking) return EnumActionResult.PASS if (world.isRemote) return EnumActionResult.SUCCESS val itemStack = player.getHeldItem(hand) val stackTag = itemStack.tagCompound if (stackTag != null && isTagValid(stackTag)) { - val proxy = world.getTileEntity(pos)?.getCapability(ClayiumCapabilities.SYNCHRONIZED_INTERFACE, side) + val proxy = + world + .getTileEntity(pos) + ?.getCapability(ClayiumCapabilities.SYNCHRONIZED_INTERFACE, side) if (proxy != null) { val targetPos = BlockPos.fromLong(stackTag.getLong("pos")) val targetWorld = stackTag.getInteger("world") if (proxy.synchronize(targetPos, targetWorld)) { - player.sendMessage(TextComponentTranslation("item.clayium.synchronizer.synchronized", createPosTooltip(targetPos, targetWorld))) + player.sendMessage( + TextComponentTranslation( + "item.clayium.synchronizer.synchronized", + createPosTooltip(targetPos, targetWorld) + ) + ) } else { - player.sendMessage(TextComponentTranslation("item.clayium.synchronizer.synchronize_failed", createPosTooltip(targetPos, targetWorld))) + player.sendMessage( + TextComponentTranslation( + "item.clayium.synchronizer.synchronize_failed", + createPosTooltip(targetPos, targetWorld) + ) + ) } return EnumActionResult.SUCCESS } } itemStack.tagCompound = createPositionNbt(pos, world.provider.dimension) - player.sendMessage(TextComponentTranslation("item.clayium.synchronizer.position_saved", createPosTooltip(pos, world.provider.dimension))) + player.sendMessage( + TextComponentTranslation( + "item.clayium.synchronizer.position_saved", + createPosTooltip(pos, world.provider.dimension) + ) + ) return EnumActionResult.SUCCESS } - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { val stackTag = stack.tagCompound if (stackTag != null && stackTag.hasKey("pos") && stackTag.hasKey("world")) { val pos = BlockPos.fromLong(stackTag.getLong("pos")) @@ -73,4 +105,4 @@ class ItemSynchronizer : Item() { @Suppress("UsePropertyAccessSyntax") // .getName() instead of .name for lower-case return "(${DimensionManager.getProviderType(dimensionId).getName()} : ${pos.x}, ${pos.y}, ${pos.z})" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/filter/FilterType.kt b/src/main/kotlin/com/github/trc/clayium/common/items/filter/FilterType.kt index e768aaf4b..72cff73de 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/filter/FilterType.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/filter/FilterType.kt @@ -15,4 +15,4 @@ enum class FilterType( return entries[id] } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/filter/ItemSimpleItemFilter.kt b/src/main/kotlin/com/github/trc/clayium/common/items/filter/ItemSimpleItemFilter.kt index 0feb4e25e..64a06ea82 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/filter/ItemSimpleItemFilter.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/filter/ItemSimpleItemFilter.kt @@ -41,69 +41,105 @@ import net.minecraftforge.items.IItemHandlerModifiable class ItemSimpleItemFilter : Item(), IGuiHolder { override fun buildUI(data: HandGuiData, syncManager: GuiSyncManager): ModularPanel { val stack = data.usedItemStack - val itemHandler = stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null) as? IItemHandlerModifiable - ?: return ModularPanel.defaultPanel("simple_item_filter_error") + val itemHandler = + stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null) + as? IItemHandlerModifiable + ?: return ModularPanel.defaultPanel("simple_item_filter_error") syncManager.registerSlotGroup("filter", FILTER_SIZE_X) - val matrix: Array = "I".repeat(FILTER_SIZE_X).let { column -> - (0.. = + "I".repeat(FILTER_SIZE_X).let { column -> + (0.. + val tag = stack.tagCompound ?: NBTTagCompound() + tag.setBoolean("isWhiteList", value) + stack.tagCompound = tag } - }, - { value -> - val tag = stack.tagCompound ?: NBTTagCompound() - tag.setBoolean("isWhiteList", value) - stack.tagCompound = tag - } - ) + ) return ModularPanel.defaultPanel("simple_item_filter") - .child(Column().margin(7) - .child(ParentWidget().widthRel(1f).expanded().marginBottom(2) - .child(IKey.str(stack.displayName).asWidget() - .align(Alignment.TopLeft)) - .child(IKey.lang("container.inventory").asWidget() - .align(Alignment.BottomLeft)) - .child(CycleButtonWidget() - .length(2) - .align(Alignment.CenterRight) - .value(isWhiteListSyncHandler) - .overlay(DynamicDrawable { - if (isWhiteListSyncHandler.value) { - GuiTextures.FILTER - } else { - GuiTextures.CLOSE - } - }) - .addTooltip(0, "Deny") - .addTooltip(1, "Allow") + .child( + Column() + .margin(7) + .child( + ParentWidget() + .widthRel(1f) + .expanded() + .marginBottom(2) + .child(IKey.str(stack.displayName).asWidget().align(Alignment.TopLeft)) + .child( + IKey.lang("container.inventory") + .asWidget() + .align(Alignment.BottomLeft) + ) + .child( + CycleButtonWidget() + .length(2) + .align(Alignment.CenterRight) + .value(isWhiteListSyncHandler) + .overlay( + DynamicDrawable { + if (isWhiteListSyncHandler.value) { + GuiTextures.FILTER + } else { + GuiTextures.CLOSE + } + } + ) + .addTooltip(0, "Deny") + .addTooltip(1, "Allow") + ) + .child( + SlotGroupWidget.builder() + .matrix(*matrix) + .key('I') { i -> + ItemSlot() + .slot( + SyncHandlers.phantomItemSlot(itemHandler, i) + .slotGroup("filter") + ) + } + .build() + .align(Alignment.Center) + ) ) - .child(SlotGroupWidget.builder() - .matrix(*matrix) - .key('I') { i -> ItemSlot().slot(SyncHandlers.phantomItemSlot(itemHandler, i) - .slotGroup("filter")) - } - .build() - .align(Alignment.Center))) - .child(SlotGroupWidget.playerInventory(0))) + .child(SlotGroupWidget.playerInventory(0)) + ) } - override fun onItemRightClick(worldIn: World, playerIn: EntityPlayer, handIn: EnumHand): ActionResult { + override fun onItemRightClick( + worldIn: World, + playerIn: EntityPlayer, + handIn: EnumHand + ): ActionResult { if (!worldIn.isRemote) { ItemGuiFactory.open(playerIn as EntityPlayerMP, handIn) } return ActionResult(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn)) } - override fun onItemUseFirst(player: EntityPlayer, world: World, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float, hand: EnumHand): EnumActionResult { + override fun onItemUseFirst( + player: EntityPlayer, + world: World, + pos: BlockPos, + side: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float, + hand: EnumHand + ): EnumActionResult { val metaTileEntity = world.getMetaTileEntity(pos) ?: return EnumActionResult.PASS if (world.isRemote) return EnumActionResult.SUCCESS metaTileEntity.setFilter(side, createFilter(player.getHeldItem(hand)), FilterType.SIMPLE) @@ -111,7 +147,9 @@ class ItemSimpleItemFilter : Item(), IGuiHolder { } private fun createFilter(stack: ItemStack): IItemFilter { - val itemHandler = stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null) as? IItemHandlerModifiable + val itemHandler = + stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null) + as? IItemHandlerModifiable if (itemHandler == null) return SimpleItemFilter() val stacksMutableList = mutableListOf() @@ -130,10 +168,10 @@ class ItemSimpleItemFilter : Item(), IGuiHolder { return object : ItemCapabilityProvider { override fun getCapability(capability: Capability): T? { return when { - capability === CapabilityItemHandler.ITEM_HANDLER_CAPABILITY - -> capability.cast(ItemStackItemHandler(stack, FILTER_SIZE_X * FILTER_SIZE_Y)) - capability === ClayiumCapabilities.ITEM_FILTER - -> capability.cast(createFilter(stack)) + capability === CapabilityItemHandler.ITEM_HANDLER_CAPABILITY -> + capability.cast(ItemStackItemHandler(stack, FILTER_SIZE_X * FILTER_SIZE_Y)) + capability === ClayiumCapabilities.ITEM_FILTER -> + capability.cast(createFilter(stack)) else -> null } } @@ -144,4 +182,4 @@ class ItemSimpleItemFilter : Item(), IGuiHolder { private const val FILTER_SIZE_X = 5 private const val FILTER_SIZE_Y = 2 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayParts.kt b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayParts.kt index 1c35e2c2e..5fcb5fa68 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayParts.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayParts.kt @@ -10,15 +10,18 @@ import net.minecraftforge.common.capabilities.Capability @Suppress("unused") object MetaItemClayParts : MetaItemClayium("clay_parts") { - //region Circuits + // region Circuits val ClayCircuit = addItem(0, "clay_circuit").tier(2) val SimpleCircuit = addItem(1, "simple_circuit").tier(3) val BasicCircuit = addItem(2, "basic_circuit").tier(4) val AdvancedCircuit = addItem(3, "advanced_circuit").tier(5).oreDict("circuitBasic") val PrecisionCircuit = addItem(4, "precision_circuit").tier(6).oreDict("circuitAdvanced") val IntegratedCircuit = addItem(5, "integrated_circuit").tier(7).oreDict("circuitElite") - val ClayCore = addItem(6, "clay_core").tier(8).oreDict("circuitUltimate") - .tooltip("item.clayium.clay_core.tooltip") + val ClayCore = + addItem(6, "clay_core") + .tier(8) + .oreDict("circuitUltimate") + .tooltip("item.clayium.clay_core.tooltip") val ClayBrain = addItem(7, "clay_brain").tier(9) val ClaySpirit = addItem(8, "clay_spirit").tier(10) val ClaySoul = addItem(9, "clay_soul").tier(11) @@ -27,7 +30,7 @@ object MetaItemClayParts : MetaItemClayium("clay_parts") { val ClayCircuitBoard = addItem(12, "clay_circuit_board").tier(2) val CeeBoard = addItem(13, "cee_board").tier(3) - //endregion + // endregion val LargeClayBall = addItem(14, "large_clay_ball").tier(2) @@ -42,8 +45,8 @@ object MetaItemClayParts : MetaItemClayium("clay_parts") { val ManipulatorMk3 = addItem(21, "manipulator_mk3").tier(12) val LaserParts = addItem(22, "laser_parts").tier(7) - val SynchronousParts = addItem(23, "synchronous_parts").tier(9) - .tooltip("item.clayium.synchronous_parts.tooltip") + val SynchronousParts = + addItem(23, "synchronous_parts").tier(9).tooltip("item.clayium.synchronous_parts.tooltip") val TeleportationParts = addItem(24, "teleportation_parts").tier(11) val AntimatterSeed = addItem(25, "antimatter_seed").tier(9) @@ -59,14 +62,21 @@ object MetaItemClayParts : MetaItemClayium("clay_parts") { private fun createRawClayConfigTool(meta: Short, name: String): MetaValueItem { return addItem(meta, name) - .addComponent(TooltipBehavior { UtilLocale.formatTooltips(it, "item.clayium.filter_remover.tooltip") }) - .addComponent(object : IItemCapabilityProvider { - override fun getCapability(capability: Capability): T? { - return if (capability == ClayiumCapabilities.CONFIG_TOOL) - ClayiumCapabilities.CONFIG_TOOL.cast(IConfigurationTool { IConfigurationTool.ToolType.FILTER_REMOVER } ) - else - null + .addComponent( + TooltipBehavior { + UtilLocale.formatTooltips(it, "item.clayium.filter_remover.tooltip") } - }) + ) + .addComponent( + object : IItemCapabilityProvider { + override fun getCapability(capability: Capability): T? { + return if (capability == ClayiumCapabilities.CONFIG_TOOL) + ClayiumCapabilities.CONFIG_TOOL.cast( + IConfigurationTool { IConfigurationTool.ToolType.FILTER_REMOVER } + ) + else null + } + } + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayium.kt b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayium.kt index 3d14b01b5..b22f56bc1 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayium.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaItemClayium.kt @@ -30,14 +30,17 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { init { hasSubtypes = true - @Suppress("LeakingThis") - _metaItems.add(this) + @Suppress("LeakingThis") _metaItems.add(this) } protected val metaValueItems = mutableMapOf() protected val metaOreDicts = Short2ObjectAVLTreeMap() - protected fun addItem(meta: Short, name: String, itemModifier: MetaValueItem.() -> Unit = {}): MetaValueItem { + protected fun addItem( + meta: Short, + name: String, + itemModifier: MetaValueItem.() -> Unit = {} + ): MetaValueItem { val item = MetaValueItem(meta, name) item.itemModifier() this.metaValueItems[meta] = item @@ -45,19 +48,28 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { } private fun getItem(meta: Short) = this.metaValueItems[meta] + private fun getItem(stack: ItemStack) = getItem(stack.itemDamage.toShort()) @SideOnly(Side.CLIENT) fun registerColorHandler(e: ColorHandlerEvent.Item) { - e.itemColors.registerItemColorHandler({ stack, tintIndex -> - getItem(stack.itemDamage.toShort())?.colorHandler?.getColor(stack, tintIndex) ?: 0xFFFFFF - }, this) + e.itemColors.registerItemColorHandler( + { stack, tintIndex -> + getItem(stack.itemDamage.toShort())?.colorHandler?.getColor(stack, tintIndex) + ?: 0xFFFFFF + }, + this + ) } @SideOnly(Side.CLIENT) open fun registerModels() { for (item in this.metaValueItems.values) { - ModelLoader.setCustomModelResourceLocation(this, item.meta.toInt(), ModelResourceLocation(clayiumId(item.name), "inventory")) + ModelLoader.setCustomModelResourceLocation( + this, + item.meta.toInt(), + ModelResourceLocation(clayiumId(item.name), "inventory") + ) } } @@ -88,7 +100,12 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { val item = getItem(stack.itemDamage.toShort()) ?: return for (behavior in item.behaviors) { @@ -106,7 +123,8 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { var rarity: IRarity = EnumRarity.COMMON var capabilityProvider: IItemCapabilityProvider? = null - fun getStackForm(count: Int = 1): ItemStack = ItemStack(this@MetaItemClayium, count, meta.toInt()) + fun getStackForm(count: Int = 1): ItemStack = + ItemStack(this@MetaItemClayium, count, meta.toInt()) fun addComponent(component: IItemComponent): MetaValueItem { when (component) { @@ -118,18 +136,25 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { return this } - /** - * sets the rarity and adds a tooltip by tier. - * if -1 is passed, it mutates nothing - */ + /** sets the rarity and adds a tooltip by tier. if -1 is passed, it mutates nothing */ fun tier(tier: Int): MetaValueItem { if (tier == -1) return this - rarity = when (tier) { - 4, 5, 6, 7 -> EnumRarity.UNCOMMON - 8, 9, 10, 11 -> EnumRarity.RARE - 12, 13, 14, 15 -> EnumRarity.EPIC - else -> EnumRarity.COMMON - } + rarity = + when (tier) { + 4, + 5, + 6, + 7 -> EnumRarity.UNCOMMON + 8, + 9, + 10, + 11 -> EnumRarity.RARE + 12, + 13, + 14, + 15 -> EnumRarity.EPIC + else -> EnumRarity.COMMON + } addComponent(TooltipBehavior { it.add(1, "§rTier $tier") }) return this } @@ -151,7 +176,8 @@ abstract class MetaItemClayium(name: String) : ItemClayium(name) { companion object { private val _metaItems = mutableListOf() - val META_ITEMS: List get() = _metaItems + val META_ITEMS: List + get() = _metaItems @SideOnly(Side.CLIENT) fun registerModels() { diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaPrefixItem.kt b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaPrefixItem.kt index bf69a10a1..246d72ac7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaPrefixItem.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/MetaPrefixItem.kt @@ -10,7 +10,8 @@ import net.minecraft.client.renderer.block.model.ModelResourceLocation import net.minecraft.item.ItemStack import net.minecraftforge.client.model.ModelLoader -open class MetaPrefixItem private constructor( +open class MetaPrefixItem +private constructor( val name: String, val orePrefix: OrePrefix, ) : MetaItemClayium(name) { @@ -34,9 +35,17 @@ open class MetaPrefixItem private constructor( for (item in metaValueItems.values) { val material = getMaterial(item.meta.toInt()) ?: continue if (material.colors == null) { - ModelLoader.setCustomModelResourceLocation(this, item.meta.toInt(), ModelResourceLocation("${material.materialId}_${orePrefix.snake}", "inventory")) + ModelLoader.setCustomModelResourceLocation( + this, + item.meta.toInt(), + ModelResourceLocation("${material.materialId}_${orePrefix.snake}", "inventory") + ) } else { - ModelLoader.setCustomModelResourceLocation(this, item.meta.toInt(), ModelResourceLocation(clayiumId("colored/${orePrefix.snake}"), "inventory")) + ModelLoader.setCustomModelResourceLocation( + this, + item.meta.toInt(), + ModelResourceLocation(clayiumId("colored/${orePrefix.snake}"), "inventory") + ) } } } @@ -58,26 +67,32 @@ open class MetaPrefixItem private constructor( fun create(name: String, orePrefix: OrePrefix): MetaPrefixItem { return when (orePrefix) { OrePrefix.impureDust -> MetaPrefixItemImpureDust - OrePrefix.gem -> object : MetaPrefixItem(name, OrePrefix.gem) { - override fun registerModels() { - for (item in metaValueItems.values) { - ModelLoader.setCustomModelResourceLocation( - this, item.meta.toInt(), - ClayiumApi.materialRegistry.getObjectById(item.meta.toInt())?.getProperty(CPropertyKey.MATTER)?.modelLocation ?: ModelLoader.MODEL_MISSING - ) + OrePrefix.gem -> + object : MetaPrefixItem(name, OrePrefix.gem) { + override fun registerModels() { + for (item in metaValueItems.values) { + ModelLoader.setCustomModelResourceLocation( + this, + item.meta.toInt(), + ClayiumApi.materialRegistry + .getObjectById(item.meta.toInt()) + ?.getProperty(CPropertyKey.MATTER) + ?.modelLocation ?: ModelLoader.MODEL_MISSING + ) + } } } - } else -> MetaPrefixItem(name, orePrefix) } } } - private object MetaPrefixItemImpureDust : MetaPrefixItem("meta_impure_dust", OrePrefix.impureDust) { - override fun registerSubItems() { + private object MetaPrefixItemImpureDust : + MetaPrefixItem("meta_impure_dust", OrePrefix.impureDust) { + override fun registerSubItems() { for (material in ClayiumApi.materialRegistry) { if (orePrefix.canGenerateItem(material)) { - val impureDust = material.getProperty(CPropertyKey.IMPURE_DUST) + val impureDust = material.getProperty(CPropertyKey.IMPURE_DUST) addItem(material.metaItemSubId.toShort(), material.materialId.path) .tier(6) .addComponent(IItemColorHandler { _, i -> impureDust.getColor(i) }) @@ -89,10 +104,11 @@ open class MetaPrefixItem private constructor( override fun registerModels() { for (item in metaValueItems.values) { ModelLoader.setCustomModelResourceLocation( - this, item.meta.toInt(), + this, + item.meta.toInt(), ModelResourceLocation(clayiumId("colored/dust"), "inventory") ) } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/IItemComponent.kt b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/IItemComponent.kt index 948dda1a8..eea0c476d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/IItemComponent.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/IItemComponent.kt @@ -16,7 +16,12 @@ fun interface ISubItemHandler : IItemComponent { } interface IItemBehavior : IItemComponent { - fun addInformation(stack: ItemStack, world: World?, tooltip: MutableList, flagIn: ITooltipFlag) {} + fun addInformation( + stack: ItemStack, + world: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) {} } fun interface IItemColorHandler : IItemComponent { @@ -25,6 +30,10 @@ fun interface IItemColorHandler : IItemComponent { interface IItemCapabilityProvider : IItemComponent, ICapabilityProvider { fun getCapability(capability: Capability): T? - override fun getCapability(capability: Capability, facing: EnumFacing?) = getCapability(capability) - override fun hasCapability(capability: Capability<*>, facing: EnumFacing?) = getCapability(capability) != null + + override fun getCapability(capability: Capability, facing: EnumFacing?) = + getCapability(capability) + + override fun hasCapability(capability: Capability<*>, facing: EnumFacing?) = + getCapability(capability) != null } diff --git a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/TooltipBehavior.kt b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/TooltipBehavior.kt index 497f60e65..04234d598 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/TooltipBehavior.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/items/metaitem/component/TooltipBehavior.kt @@ -6,7 +6,12 @@ import net.minecraft.world.World import java.util.function.Consumer class TooltipBehavior(private val tooltips: Consumer>) : IItemBehavior { - override fun addInformation(stack: ItemStack, world: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + world: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { tooltips.accept(tooltip) } } diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/OreDictionaryLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/OreDictionaryLoader.kt index 96d71a758..c7eb24de2 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/OreDictionaryLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/OreDictionaryLoader.kt @@ -29,4 +29,4 @@ object OreDictionaryLoader { } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AlloySmelterRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AlloySmelterRecipeLoader.kt index ac0279957..c95e158b7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AlloySmelterRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AlloySmelterRecipeLoader.kt @@ -33,49 +33,67 @@ object AlloySmelterRecipeLoader { .output(OrePrefix.ingot, CMaterials.electrum, 2) .buildAndRegister() - registry.builder() + registry + .builder() .input(ingotDust, CMaterials.zinc, 9) .input(ingotDust, CMaterials.aluminum) .output(OrePrefix.ingot, CMaterials.zinc_aluminum, 10) - .tier(6).CEt(ClayEnergy.milli(100)).duration(50) + .tier(6) + .CEt(ClayEnergy.milli(100)) + .duration(50) .buildAndRegister() - registry.builder() + registry + .builder() .input(ingotDust, CMaterials.zinc, 9) .input(ingotDust, CMaterials.zirconium) .output(OrePrefix.ingot, CMaterials.zinc_zirconium, 10) - .tier(6).CEt(ClayEnergy.of(3)).duration(50) + .tier(6) + .CEt(ClayEnergy.of(3)) + .duration(50) .buildAndRegister() - registry.builder() + registry + .builder() .input(ingotDust, CMaterials.magnesium, 9) .input(ingotDust, CMaterials.zinc_aluminum) .output(OrePrefix.ingot, CMaterials.az91d, 10) - .tier(6).CEt(ClayEnergy.of(1)).duration(500) + .tier(6) + .CEt(ClayEnergy.of(1)) + .duration(500) .buildAndRegister() - registry.builder() + registry + .builder() .input(ingotDust, CMaterials.magnesium, 19) .input(ingotDust, CMaterials.zinc_zirconium) .output(OrePrefix.ingot, CMaterials.zk60a, 20) - .tier(6).CEt(ClayEnergy.of(3)).duration(500) + .tier(6) + .CEt(ClayEnergy.of(3)) + .duration(500) .buildAndRegister() if (Mods.EnderIO.isModLoaded) { /* Redstone Alloy */ - registry.builder() + registry + .builder() .input(Items.REDSTONE) .input(OrePrefix.item, CMaterials.silicon) .output(OrePrefix.ingot, CMarkerMaterials.redstoneAlloy) - .tier(6).defaultCEt().duration(100) + .tier(6) + .defaultCEt() + .duration(100) .buildAndRegister() /* Conductive Iron */ - registry.builder() + registry + .builder() .input(Items.REDSTONE) .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMaterials.iron) .output(OrePrefix.ingot, CMarkerMaterials.conductiveIron) - .tier(6).defaultCEt().duration(100) + .tier(6) + .defaultCEt() + .duration(100) .buildAndRegister() } } - private fun simpleAlloy() = CRecipes.ALLOY_SMELTER.builder() - .tier(0).CEt(ClayEnergy.milli(1)).duration(40) -} \ No newline at end of file + private fun simpleAlloy() = + CRecipes.ALLOY_SMELTER.builder().tier(0).CEt(ClayEnergy.milli(1)).duration(40) +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AssemblerRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AssemblerRecipeLoader.kt index f8684b59a..8cd0317f2 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AssemblerRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/AssemblerRecipeLoader.kt @@ -17,148 +17,204 @@ object AssemblerRecipeLoader { fun registerRecipes() { val registry = CRecipes.ASSEMBLER - //region Tools - registry.builder() + // region Tools + registry + .builder() .input(ClayiumItems.CLAY_ROLLING_PIN) .input(ClayiumItems.CLAY_SLICER) .output(ClayiumItems.CLAY_IO_CONFIGURATOR) - .tier(6).CEtFactor(1.0).duration(20) + .tier(6) + .CEtFactor(1.0) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumItems.CLAY_SPATULA) .input(ClayiumItems.CLAY_WRENCH) .output(ClayiumItems.CLAY_PIPING_TOOL) - .tier(6).CEtFactor(1.0).duration(20) + .tier(6) + .CEtFactor(1.0) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.az91d, 3) .input(MetaItemClayParts.SynchronousParts, 2) .output(ClayiumItems.SYNCHRONIZER) - .tier(6).duration(20) + .tier(6) + .duration(20) .buildAndRegister() - //endregion + // endregion - registry.builder() + registry + .builder() .input(MetaItemClayParts.AdvancedCircuit) .input(OrePrefix.plate, CMaterials.industrialClay) .output(ClayiumItems.simpleItemFilter) - .tier(4).CEt(ClayEnergy.micro(80)).duration(20) + .tier(4) + .CEt(ClayEnergy.micro(80)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.quartz, 16) .output(ClayiumBlocks.QUARTZ_CRUCIBLE) - .CEt(ClayEnergy.milli(10)).duration(20) + .CEt(ClayEnergy.milli(10)) + .duration(20) .buildAndRegister() - //region ClayParts + // region ClayParts for (m in listOf(CMaterials.clay, CMaterials.denseClay)) { - registry.builder() + registry + .builder() .input(OrePrefix.stick, m, 5) .output(OrePrefix.gear, m) - .tier(3).duration(20) + .tier(3) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.shortStick, m, 9) .output(OrePrefix.gear, m) - .tier(3).duration(20) + .tier(3) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.largePlate, m) .input(Items.CLAY_BALL, 8) .output(OrePrefix.spindle, m) - .tier(3).duration(20) + .tier(3) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.largePlate, m) .input(OrePrefix.block, m, 8) .output(OrePrefix.grindingHead, m) - .tier(3).duration(20) + .tier(3) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.largePlate, m) .input(OrePrefix.plate, m, 8) .output(OrePrefix.cuttingHead, m) - .tier(3).duration(20) + .tier(3) + .duration(20) .buildAndRegister() } - registry.builder() + registry + .builder() .input(MetaItemClayParts.CeeCircuit) .input(OrePrefix.plate, CMaterials.industrialClay) .output(MetaItemClayParts.CEE) - .CEt(ClayEnergy.micro(80)).duration(20) + .CEt(ClayEnergy.micro(80)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.PrecisionCircuit) .input(MetaItemClayParts.EnergizedClayDust, 32) .output(MetaItemClayParts.IntegratedCircuit) - .tier(6).CEt(ClayEnergy.milli(100)).duration(1200) + .tier(6) + .CEt(ClayEnergy.milli(100)) + .duration(1200) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.IntegratedCircuit) .input(MetaItemClayParts.CEE) .output(MetaItemClayParts.LaserParts) - .tier(6).CEt(ClayEnergy.milli(100)).duration(20) + .tier(6) + .CEt(ClayEnergy.milli(100)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.IntegratedCircuit) .input(OrePrefix.dust, CMaterials.beryllium, 8) .output(MetaItemClayParts.SynchronousParts) - .tier(6).duration(432_000) + .tier(6) + .duration(432_000) .buildAndRegister() - //endregion + // endregion /* Pan Cable */ - registry.builder() + registry + .builder() .input(OrePrefix.gem, CMaterials.pureAntimatter, 3) .input(OrePrefix.block, CMarkerMaterials.glass, 2) .output(ClayiumBlocks.PAN_CABLE, 12) - .tier(10).CEt(ClayEnergy.of(1000)).duration(2) + .tier(10) + .CEt(ClayEnergy.of(1000)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.STONEBRICK) .input(Blocks.VINE) .output(ItemStack(Blocks.STONEBRICK, 1, 1)) - .tier(6).duration(20) + .tier(6) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(Items.LEATHER, 4) .input(Items.STRING, 16) .output(Items.SADDLE) - .tier(10).CEt(ClayEnergy.of(1000)).duration(6000) + .tier(10) + .CEt(ClayEnergy.of(1000)) + .duration(6000) .buildAndRegister() - registry.builder() + registry + .builder() .input(Items.PAPER, 2) .input(Items.STRING, 4) .output(Items.NAME_TAG) - .tier(10).CEt(ClayEnergy.of(1000)).duration(600) + .tier(10) + .CEt(ClayEnergy.of(1000)) + .duration(600) .buildAndRegister() /* Clay Markers */ - registry.builder() + registry + .builder() .input(Blocks.CLAY) .input(MetaItemClayParts.PrecisionCircuit) .output(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.NO_EXTEND)) - .tier(6).CEt(ClayEnergy.of(1)).duration(480) + .tier(6) + .CEt(ClayEnergy.of(1)) + .duration(480) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.block, CMaterials.denseClay) .input(MetaItemClayParts.ClayCore) .output(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.EXTEND_TO_GROUND)) - .tier(6).CEt(ClayEnergy.of(10)).duration(480) + .tier(6) + .CEt(ClayEnergy.of(10)) + .duration(480) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.block, CMaterials.compressedClay) .input(MetaItemClayParts.ClayCore) .output(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.EXTEND_TO_SKY)) - .tier(6).CEt(ClayEnergy.of(10)).duration(480) + .tier(6) + .CEt(ClayEnergy.of(10)) + .duration(480) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.EXTEND_TO_GROUND)) .input(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.EXTEND_TO_SKY)) .output(ClayiumBlocks.CLAY_MARKER.getItem(ClayMarkerType.ALL_HEIGHT)) - .tier(6).CEt(ClayEnergy.of(10)).duration(480) + .tier(6) + .CEt(ClayEnergy.of(10)) + .duration(480) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/BendingMachineLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/BendingMachineLoader.kt index 26db0a2a3..564b6c67c 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/BendingMachineLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/BendingMachineLoader.kt @@ -9,12 +9,14 @@ object BendingMachineLoader { fun registerRecipes() { val registry = CRecipes.BENDING for ((i, m) in listOf(CMaterials.clay, CMaterials.denseClay).withIndex()) { - registry.builder() + registry + .builder() .input(OrePrefix.cylinder, m) .output(OrePrefix.blade, m, 2) - .tier(0).CEt(ClayEnergy.micro(10)) + .tier(0) + .CEt(ClayEnergy.micro(10)) .duration(4 * (i + 1)) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CRecipeLoader.kt index f5b4fb7ab..a70879efd 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CRecipeLoader.kt @@ -3,7 +3,7 @@ package com.github.trc.clayium.common.loaders.recipe import com.github.trc.clayium.common.recipe.handler.MaterialRecipeHandler object CRecipeLoader { - //todo refactoring + // todo refactoring fun load() { ClayWorkTableRecipeLoader.registerRecipes() @@ -35,4 +35,4 @@ object CRecipeLoader { SolarClayFabricatorRecipeLoader.registerRecipes() WireDrawingRecipeLoader.registerRecipes() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaCondenserRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaCondenserRecipeLoader.kt index 017b956eb..99e2bdfbb 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaCondenserRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaCondenserRecipeLoader.kt @@ -16,4 +16,4 @@ object CaCondenserRecipeLoader { tier(0) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaInjectorRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaInjectorRecipeLoader.kt index bd7899e26..f42926c89 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaInjectorRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CaInjectorRecipeLoader.kt @@ -19,55 +19,99 @@ object CaInjectorRecipeLoader { val registry = CRecipes.CA_INJECTOR /* Resonators */ - registry.builder() + registry + .builder() .input(ClayiumBlocks.MACHINE_HULL.getItem(ClayTiers.ULTIMATE)) .input(OrePrefix.gem, CMaterials.antimatter, 8) .output(ItemStack(ClayiumBlocks.RESONATOR, 1, 0)) - .tier(9).CEtFactor(2.0).duration(4000) + .tier(9) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ItemStack(ClayiumBlocks.RESONATOR, 16, 0)) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(ItemStack(ClayiumBlocks.RESONATOR, 1, 1)) - .tier(11).CEtFactor(2.0).duration(4000) + .tier(11) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ItemStack(ClayiumBlocks.RESONATOR, 16, 1)) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(ItemStack(ClayiumBlocks.RESONATOR, 1, 2)) - .tier(12).CEtFactor(2.0).duration(4000) + .tier(12) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ItemStack(ClayiumBlocks.RESONATOR, 16, 2)) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(ItemStack(ClayiumBlocks.RESONATOR, 1, 3)) - .tier(13).CEtFactor(2.0).duration(4000) + .tier(13) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() /* Energy Storage Upgrades */ - registry.builder() + registry + .builder() .input(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.ANTIMATTER)) .input(OrePrefix.gem, CMaterials.antimatter, 8) - .output(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.ANTIMATTER)) - .tier(9).CEtFactor(2.0).duration(4000) + .output( + ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem( + BlockCaReactorCoil.BlockType.ANTIMATTER + ) + ) + .tier(9) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() - .input(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.ANTIMATTER, 16)) + registry + .builder() + .input( + ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem( + BlockCaReactorCoil.BlockType.ANTIMATTER, + 16 + ) + ) .input(OrePrefix.gem, CMaterials.antimatter, 64) - .output(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.PURE_ANTIMATTER)) - .tier(11).CEtFactor(2.0).duration(4000) + .output( + ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem( + BlockCaReactorCoil.BlockType.PURE_ANTIMATTER + ) + ) + .tier(11) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() - .input(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.PURE_ANTIMATTER, 16)) + registry + .builder() + .input( + ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem( + BlockCaReactorCoil.BlockType.PURE_ANTIMATTER, + 16 + ) + ) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.OEC)) - .tier(12).CEtFactor(2.0).duration(4000) + .tier(12) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() - registry.builder() - .input(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.OEC, 16)) + registry + .builder() + .input( + ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.OEC, 16) + ) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(ClayiumBlocks.ENERGY_STORAGE_UPGRADE.getItem(BlockCaReactorCoil.BlockType.OPA)) - .tier(13).CEtFactor(2.0).duration(4000) + .tier(13) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() val duration = CaInjectorMetaTileEntity.DURATION @@ -78,13 +122,16 @@ object CaInjectorRecipeLoader { val recipeTier = next.tier.numeric val prevTier = prev.tier.numeric // offset 2 (tier 1->2 to tier 12->13) - val antimatterAmount = ((prevTier + 1)..recipeTier).sumOf { CaInjectorMetaTileEntity.ANTIMATTER_AMOUNTS[it - 2] } + val antimatterAmount = + ((prevTier + 1)..recipeTier) + .sumOf { CaInjectorMetaTileEntity.ANTIMATTER_AMOUNTS[it - 2] } .coerceAtMost(64) CRecipes.CA_INJECTOR.builder() .input(prev) .input(OrePrefix.gem, CMaterials.antimatter, antimatterAmount) .output(next) - .tier(recipeTier).duration(duration) + .tier(recipeTier) + .duration(duration) .CEtFactor(ceFactor) .buildAndRegister() } @@ -92,20 +139,24 @@ object CaInjectorRecipeLoader { // special cases // /* Solar -> Clay Fabricator Mk1, CF Mk1 -> CF Mk2. no Mk2->Mk3 Recipe */ - registry.builder() + registry + .builder() .input(MetaTileEntities.SOLAR_CLAY_FABRICATOR[2]) .input(OrePrefix.gem, CMaterials.antimatter, 8) .output(MetaTileEntities.CLAY_FABRICATOR[0]) - .tier(8).duration(duration) + .tier(8) + .duration(duration) .CEtFactor(ceFactor) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaTileEntities.CLAY_FABRICATOR[0]) .input(OrePrefix.gem, CMaterials.antimatter, 10) .output(MetaTileEntities.CLAY_FABRICATOR[1]) - .tier(9).duration(duration) + .tier(9) + .duration(duration) .CEtFactor(ceFactor) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CentrifugeRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CentrifugeRecipeLoader.kt index e3f442ad7..cb04a470d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CentrifugeRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CentrifugeRecipeLoader.kt @@ -12,62 +12,89 @@ object CentrifugeRecipeLoader { fun registerRecipes() { val registry = CRecipes.CENTRIFUGE - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.clay, 9) .output(OrePrefix.dust, CMaterials.denseClay) - .tier(0).CEt(ClayEnergy.micro(20)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(20)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.denseClay, 2) .output(OrePrefix.dust, CMaterials.clay, 9) .output(OrePrefix.dust, CMaterials.calcareousClay) - .tier(0).CEt(ClayEnergy.micro(20)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(20)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.industrialClay, 2) .output(MetaItemClayParts.EnergizedClayDust, 12) .output(OrePrefix.dust, CMaterials.clay, 8) .output(OrePrefix.dust, CMaterials.denseClay, 8) .output(OrePrefix.dust, CMaterials.industrialClay) - .tier(0).CEt(ClayEnergy.micro(40)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(40)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay, 2) .output(MetaItemClayParts.EnergizedClayDust, 64) .output(OrePrefix.dust, CMaterials.clay, 64) .output(OrePrefix.dust, CMaterials.denseClay, 64) .output(OrePrefix.dust, CMaterials.industrialClay, 12) - .tier(4).CEt(ClayEnergy.milli(100)).duration(12) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(12) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.GRAVEL) .output(OrePrefix.block, CMaterials.denseClay) - .tier(4).CEt(ClayEnergy.micro(10)).duration(2) + .tier(4) + .CEt(ClayEnergy.micro(10)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.GRAVEL, 4) .output(OrePrefix.block, CMaterials.denseClay, 4) - .tier(4).CEt(ClayEnergy.micro(20)).duration(2) + .tier(4) + .CEt(ClayEnergy.micro(20)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.GRAVEL, 16) .output(OrePrefix.block, CMaterials.denseClay, 16) - .tier(5).CEt(ClayEnergy.micro(40)).duration(2) + .tier(5) + .CEt(ClayEnergy.micro(40)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.GRAVEL, 64) .output(OrePrefix.block, CMaterials.denseClay, 64) - .tier(6).CEt(ClayEnergy.micro(80)).duration(2) + .tier(6) + .CEt(ClayEnergy.micro(80)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumBlocks.CLAY_TREE_LOG) .output(OrePrefix.dust, CMaterials.advancedIndustrialClay, 16) .output(OrePrefix.dust, CMaterials.manganese, 5) .output(OrePrefix.dust, CMaterials.lithium, 3) .output(OrePrefix.dust, CMaterials.zirconium) - .tier(6).defaultCEt().duration(400) + .tier(6) + .defaultCEt() + .duration(400) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalMetalSeparatorRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalMetalSeparatorRecipeLoader.kt index bd5d02af7..1bcbbba74 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalMetalSeparatorRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalMetalSeparatorRecipeLoader.kt @@ -5,14 +5,16 @@ import com.github.trc.clayium.api.unification.material.CMaterials import com.github.trc.clayium.api.unification.ore.OrePrefix import com.github.trc.clayium.common.recipe.registry.CRecipes - object ChemicalMetalSeparatorRecipeLoader { fun registerRecipes() { val registry = CRecipes.CHEMICAL_METAL_SEPARATOR - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.industrialClay) - .duration(40).CEt(ClayEnergy.milli(50)).tier(6) + .duration(40) + .CEt(ClayEnergy.milli(50)) + .tier(6) .chancedOutput(OrePrefix.impureDust, CMaterials.aluminum, 200) .chancedOutput(OrePrefix.impureDust, CMaterials.manganese, 80) .chancedOutput(OrePrefix.impureDust, CMaterials.magnesium, 60) diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalReactorRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalReactorRecipeLoader.kt index 225e392f5..0ab7e590f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalReactorRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ChemicalReactorRecipeLoader.kt @@ -9,62 +9,86 @@ import com.github.trc.clayium.common.recipe.registry.CRecipes object ChemicalReactorRecipeLoader { fun registerRecipes() { val registry = CRecipes.CHEMICAL_REACTOR - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.clay) .input(OrePrefix.dust, CMaterials.sodiumCarbonate) .output(OrePrefix.dust, CMaterials.quartz) - .CEt(ClayEnergy.milli(1)).duration(120).tier(0) + .CEt(ClayEnergy.milli(1)) + .duration(120) + .tier(0) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.gem, CMaterials.coal) .input(OrePrefix.dust, CMaterials.quartz) .output(OrePrefix.ingot, CMaterials.impureSilicon) - .CEt(ClayEnergy.milli(1)).duration(120).tier(0) + .CEt(ClayEnergy.milli(1)) + .duration(120) + .tier(0) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.gem, CMaterials.charcoal) .input(OrePrefix.dust, CMaterials.quartz) .output(OrePrefix.ingot, CMaterials.impureSilicon) - .CEt(ClayEnergy.milli(1)).duration(120).tier(0) + .CEt(ClayEnergy.milli(1)) + .duration(120) + .tier(0) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.salt, 2) .input(OrePrefix.dust, CMaterials.calcareousClay) .output(OrePrefix.dust, CMaterials.calciumChloride) .output(OrePrefix.dust, CMaterials.sodiumCarbonate) - .CEt(ClayEnergy.milli(10)).duration(120).tier(0) + .CEt(ClayEnergy.milli(10)) + .duration(120) + .tier(0) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.EnergizedClayDust) .output(OrePrefix.dust, CMaterials.impureRedstone) .output(OrePrefix.dust, CMaterials.impureGlowStone) - .tier(5).CEt(ClayEnergy.milli(10)).duration(10) + .tier(5) + .CEt(ClayEnergy.milli(10)) + .duration(10) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.denseClay) .output(OrePrefix.dust, CMaterials.impureSilicon) .output(OrePrefix.dust, CMaterials.aluminum) - .CEt(ClayEnergy.milli(10)).duration(30).tier(5) + .CEt(ClayEnergy.milli(10)) + .duration(30) + .tier(5) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.salt) .input(OrePrefix.dust, CMaterials.industrialClay) .output(OrePrefix.dust, CMaterials.quartz) .output(OrePrefix.dust, CMaterials.calciumChloride) - .CEt(ClayEnergy.of(100)).duration(1).tier(8) + .CEt(ClayEnergy.of(100)) + .duration(1) + .tier(8) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.quartz) .input(OrePrefix.dust, CMaterials.industrialClay) .output(OrePrefix.ingot, CMaterials.impureSilicon) - .CEt(ClayEnergy.of(100)).duration(1).tier(8) + .CEt(ClayEnergy.of(100)) + .duration(1) + .tier(8) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayBlastFurnaceRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayBlastFurnaceRecipeLoader.kt index 9bd0d0db7..546357888 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayBlastFurnaceRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayBlastFurnaceRecipeLoader.kt @@ -14,83 +14,115 @@ object ClayBlastFurnaceRecipeLoader { fun registerRecipes() { val registry = CRecipes.CLAY_BLAST_FURNACE - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .input(OrePrefix.ingot, CMaterials.impureSilicon) .output(OrePrefix.ingot, CMaterials.silicon) - .tier(7).duration(100) + .tier(7) + .duration(100) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.industrialClay, 2) .input(OrePrefix.impureDust, CMaterials.manganese) .output(OrePrefix.ingot, CMaterials.claySteel, 2) - .tier(6).CEtFactor(5.0).duration(200) + .tier(6) + .CEtFactor(5.0) + .duration(200) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .input(OrePrefix.impureDust, CMaterials.manganese) .output(OrePrefix.ingot, CMaterials.claySteel) - .tier(7).CEtFactor(5.0).duration(5) + .tier(7) + .CEtFactor(5.0) + .duration(5) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .input(OrePrefix.dust, CMaterials.manganese) .output(OrePrefix.ingot, CMaterials.claySteel) - .tier(8).CEtFactor(5.0).duration(1) + .tier(8) + .CEtFactor(5.0) + .duration(1) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.industrialClay) .input(OrePrefix.dust, CMaterials.quartz, 8) .output(ClayiumBlocks.LASER_REFLECTOR) - .tier(7).CEtFactor(2.0).duration(100) + .tier(7) + .CEtFactor(2.0) + .duration(100) .buildAndRegister() - registry.builder() + registry + .builder() .input(Items.IRON_INGOT) .input(Items.COAL, 2) .output(OrePrefix.ingot, CMaterials.steel) - .tier(6).CEt(ClayEnergy.milli(100)).duration(500) + .tier(6) + .CEt(ClayEnergy.milli(100)) + .duration(500) .buildAndRegister() if (Mods.EnderIO.isModLoaded) { /* Electrical Steel */ - registry.builder() + registry + .builder() .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMaterials.steel) .input(OrePrefix.item, CMaterials.silicon) .output(OrePrefix.ingot, CMarkerMaterials.electricalSteel) - .tier(7).defaultCEt().duration(500) + .tier(7) + .defaultCEt() + .duration(500) .buildAndRegister() /* Dark Steel */ - registry.builder() + registry + .builder() .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMaterials.steel) .input(Blocks.OBSIDIAN) .output(OrePrefix.ingot, CMarkerMaterials.darkSteel) - .tier(7).defaultCEt().duration(500) + .tier(7) + .defaultCEt() + .duration(500) .buildAndRegister() /* Pulsating Iron */ - registry.builder() + registry + .builder() .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMaterials.iron) .input(Items.ENDER_PEARL) .output(OrePrefix.ingot, CMarkerMaterials.pulsatingIron) - .tier(6).defaultCEt().duration(500) + .tier(6) + .defaultCEt() + .duration(500) .buildAndRegister() /* Vibrant Alloy */ - registry.builder() + registry + .builder() .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMarkerMaterials.energeticAlloy) .input(Items.ENDER_PEARL) .output(OrePrefix.ingot, CMarkerMaterials.vibrantAlloy) - .tier(6).defaultCEt().duration(500) + .tier(6) + .defaultCEt() + .duration(500) .buildAndRegister() /* Soularium Ingot */ - registry.builder() + registry + .builder() .input(arrayOf(OrePrefix.ingot, OrePrefix.dust), CMaterials.gold) .input(Blocks.SOUL_SAND) .output(OrePrefix.ingot, CMarkerMaterials.soularium) - .tier(6).defaultCEt().duration(500) + .tier(6) + .defaultCEt() + .duration(500) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayReactorRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayReactorRecipeLoader.kt index b1f5820ca..8b068bad3 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayReactorRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayReactorRecipeLoader.kt @@ -17,173 +17,249 @@ object ClayReactorRecipeLoader { fun registerRecipes() { val registry = CRecipes.CLAY_REACTOR - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay, 8) .input(OrePrefix.dust, CMaterials.lithium, 4) .output(OrePrefix.dust, CMaterials.clayium, 8) - .tier(7).CEtFactor(10.0).duration(50_000) + .tier(7) + .CEtFactor(10.0) + .duration(50_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay, 8) .input(OrePrefix.dust, CMaterials.hafnium) .output(OrePrefix.dust, CMaterials.clayium, 8) - .tier(7).CEtFactor(10.0).duration(500_000) + .tier(7) + .CEtFactor(10.0) + .duration(500_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay, 8) .input(OrePrefix.dust, CMaterials.barium) .output(OrePrefix.dust, CMaterials.clayium, 8) - .tier(7).CEtFactor(3.0).duration(5_000_000) + .tier(7) + .CEtFactor(3.0) + .duration(5_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay, 8) .input(OrePrefix.dust, CMaterials.strontium) .output(OrePrefix.dust, CMaterials.clayium, 8) - .tier(7).CEtFactor(1.0).duration(50_000_000) + .tier(7) + .CEtFactor(1.0) + .duration(50_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .input(OrePrefix.ingot, CMaterials.ultimateCompound) .output(OrePrefix.ingot, CMaterials.ultimateAlloy) - .tier(8).CEtFactor(10.0).duration(1_000_000_000) + .tier(8) + .CEtFactor(10.0) + .duration(1_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.EnergizedClayDust, 8) .input(OrePrefix.dust, CMaterials.lithium) .output(MetaItemClayParts.ExcitedClayDust, 4) - .tier(7).CEtFactor(1.0).duration(2_000_000) + .tier(7) + .CEtFactor(1.0) + .duration(2_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClaySoul) .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .output(OrePrefix.dust, CMaterials.organicClay, 2) - .tier(11).CEtFactor(1.0).duration(1_000_000_000_000) + .tier(11) + .CEtFactor(1.0) + .duration(1_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.organicClay) .input(OrePrefix.dust, CMaterials.advancedIndustrialClay) .output(OrePrefix.dust, CMaterials.organicClay, 2) - .tier(10).CEtFactor(1.0).duration(100_000_000_000_000) + .tier(10) + .CEtFactor(1.0) + .duration(100_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.ingot, CMaterials.clayium) .output(MetaItemClayParts.AntimatterSeed) - .tier(9).CEtFactor(1.0).duration(200_000_000_000_000) + .tier(9) + .CEtFactor(1.0) + .duration(200_000_000_000_000) .buildAndRegister() /* Circuit Recipes */ - registry.builder() + registry + .builder() .input(MetaItemClayParts.IntegratedCircuit, 6) .input(MetaItemClayParts.ExcitedClayDust) .output(MetaItemClayParts.ClayCore) - .tier(7).CEtFactor(10.0).duration(8_000_000) + .tier(7) + .CEtFactor(10.0) + .duration(8_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClayCore, 6) .input(MetaItemClayParts.ExcitedClayDust, 12) .output(MetaItemClayParts.ClayBrain) - .tier(8).CEtFactor(10.0).duration(4_000_000_000) + .tier(8) + .CEtFactor(10.0) + .duration(4_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClayBrain, 6) .input(MetaItemClayParts.ExcitedClayDust, 32) .output(MetaItemClayParts.ClaySpirit) - .tier(9).CEtFactor(10.0).duration(10_000_000_000_000) + .tier(9) + .CEtFactor(10.0) + .duration(10_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClaySpirit, 6) .input(OrePrefix.gem, CMaterials.antimatter, 4) .output(MetaItemClayParts.ClaySoul) - .tier(10).CEtFactor(10.0).duration(10_000_000_000_000) + .tier(10) + .CEtFactor(10.0) + .duration(10_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClaySoul, 6) .input(OrePrefix.gem, CMaterials.antimatter, 16) .output(MetaItemClayParts.ClayAnima) - .tier(11).CEtFactor(30.0).duration(100_000_000_000_000) + .tier(11) + .CEtFactor(30.0) + .duration(100_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClayAnima, 6) .input(OrePrefix.gem, CMaterials.antimatter, 64) .output(MetaItemClayParts.ClayPsyche) - .tier(12).CEtFactor(90.0).duration(1_000_000_000_000_000) + .tier(12) + .CEtFactor(90.0) + .duration(1_000_000_000_000_000) .buildAndRegister() /* Clay Parts */ - registry.builder() + registry + .builder() .input(MetaItemClayParts.IntegratedCircuit) .input(OrePrefix.gem, CMaterials.pureAntimatter, 8) .output(MetaItemClayParts.TeleportationParts) - .tier(11).duration(10_00_000_000_000) + .tier(11) + .duration(10_00_000_000_000) .buildAndRegister() /* Misc Recipes */ - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.impureRedstone) .output(Items.REDSTONE) - .tier(7).CEtFactor(0.1).duration(2000) + .tier(7) + .CEtFactor(0.1) + .duration(2000) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.dust, CMaterials.impureGlowStone) .output(Items.GLOWSTONE_DUST) - .tier(7).CEtFactor(0.1).duration(2000) + .tier(7) + .CEtFactor(0.1) + .duration(2000) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.GRAVEL) .input(OrePrefix.dust, CMaterials.organicClay) .output(Blocks.DIRT) - .tier(7).CEt(ClayEnergy.of(1)).duration(100) + .tier(7) + .CEt(ClayEnergy.of(1)) + .duration(100) .buildAndRegister() /* Overclocker */ - registry.builder() + registry + .builder() .input(ClayiumBlocks.MACHINE_HULL.getItem(ClayTiers.ANTIMATTER)) .input(ClayiumBlocks.RESONATOR.getItem(BlockCaReactorCoil.BlockType.ANTIMATTER, 8)) .output(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.ANTIMATTER)) - .tier(10).CEtFactor(5.0).duration(10_000_000_000_000) + .tier(10) + .CEtFactor(5.0) + .duration(10_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumBlocks.MACHINE_HULL.getItem(ClayTiers.PURE_ANTIMATTER, 4)) - .input(ClayiumBlocks.RESONATOR.getItem(BlockCaReactorCoil.BlockType.PURE_ANTIMATTER, 16)) + .input( + ClayiumBlocks.RESONATOR.getItem(BlockCaReactorCoil.BlockType.PURE_ANTIMATTER, 16) + ) .output(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.PURE_ANTIMATTER)) - .tier(11).CEtFactor(5.0).duration(100_000_000_000_000) + .tier(11) + .CEtFactor(5.0) + .duration(100_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumBlocks.MACHINE_HULL.getItem(ClayTiers.OEC, 16)) .input(ClayiumBlocks.RESONATOR.getItem(BlockCaReactorCoil.BlockType.OEC, 32)) .output(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.OEC)) - .tier(12).CEtFactor(5.0).duration(1_000_000_000_000_000) + .tier(12) + .CEtFactor(5.0) + .duration(1_000_000_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(ClayiumBlocks.MACHINE_HULL.getItem(ClayTiers.OPA, 64)) .input(ClayiumBlocks.RESONATOR.getItem(BlockCaReactorCoil.BlockType.OPA, 64)) .output(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.OPA)) - .tier(13).CEtFactor(5.0).duration(1_000_000_000_000_000) + .tier(13) + .CEtFactor(5.0) + .duration(1_000_000_000_000_000) .buildAndRegister() if (Mods.EnderIO.isModLoaded) { /* Energetic Alloy */ - registry.builder() + registry + .builder() .input(Items.REDSTONE) .input(OrePrefix.ingot, CMaterials.gold) .output(OrePrefix.ingot, CMarkerMaterials.energeticAlloy) - .tier(8).defaultCEt().duration(1_000_000_000) + .tier(8) + .defaultCEt() + .duration(1_000_000_000) .buildAndRegister() - registry.builder() + registry + .builder() .input(Items.REDSTONE) .input(OrePrefix.dust, CMaterials.gold) .output(OrePrefix.ingot, CMarkerMaterials.energeticAlloy) - .tier(8).defaultCEt().duration(1_000_000_000) + .tier(8) + .defaultCEt() + .duration(1_000_000_000) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayWorkTableRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayWorkTableRecipeLoader.kt index dfc99b0b9..dbda3e1bd 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayWorkTableRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/ClayWorkTableRecipeLoader.kt @@ -14,7 +14,6 @@ import com.github.trc.clayium.common.recipe.CWTRecipes import net.minecraft.init.Items import net.minecraft.item.ItemStack - object ClayWorkTableRecipeLoader { fun registerRecipes() { CWTRecipes.CLAY_WORK_TABLE.register { @@ -123,4 +122,4 @@ object ClayWorkTableRecipeLoader { clicks(7) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CondenserRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CondenserRecipeLoader.kt index 990aca0e6..4af67f905 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CondenserRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CondenserRecipeLoader.kt @@ -17,27 +17,33 @@ object CondenserRecipeLoader { fun registerRecipes() { val registry = CRecipes.CONDENSER - registry.builder() + registry + .builder() .input(MetaItemClayParts.CompressedClayShard, 4) .output(OrePrefix.block, CMaterials.compressedClay) .duration(3) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.IndustrialClayShard, 4) .output(OrePrefix.block, CMaterials.industrialClay) .duration(6) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.AdvancedIndustrialClayShard, 4) .output(OrePrefix.block, CMaterials.advancedIndustrialClay) .duration(9) .buildAndRegister() for (i in 0..<(CMaterials.PURE_ANTIMATTERS.size - 1)) { - registry.builder() + registry + .builder() .input(OrePrefix.gem, CMaterials.PURE_ANTIMATTERS[i], 9) .output(OrePrefix.gem, CMaterials.PURE_ANTIMATTERS[i + 1]) - .tier(10).CEt(ClayEnergy.of(100)).duration(6) + .tier(10) + .CEt(ClayEnergy.of(100)) + .duration(6) .buildAndRegister() } } @@ -62,7 +68,9 @@ object CondenserRecipeLoader { CRecipes.CONDENSER.builder() .input(OrePrefix.dust, material, amount) .output(OrePrefix.block, material) - .tier(tier).CEt(clayEnergy).duration(5 * amount) + .tier(tier) + .CEt(clayEnergy) + .duration(5 * amount) .buildAndRegister() } @@ -70,7 +78,9 @@ object CondenserRecipeLoader { CRecipes.CONDENSER.builder() .input(OrePrefix.dust, material) .output(OrePrefix.gem, material) - .tier(tier).CEt(clayEnergy).duration(5) + .tier(tier) + .CEt(clayEnergy) + .duration(5) .buildAndRegister() } @@ -78,8 +88,10 @@ object CondenserRecipeLoader { CRecipes.CONDENSER.builder() .input(OrePrefix.dust, material) .output(OrePrefix.crystal, material) - .tier(tier).CEt(clayEnergy).duration(5) + .tier(tier) + .CEt(clayEnergy) + .duration(5) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CraftingRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CraftingRecipeLoader.kt index 1ea247c4a..d34c00241 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CraftingRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/CraftingRecipeLoader.kt @@ -20,163 +20,321 @@ object CraftingRecipeLoader { clayToolRecipes() registerClayPartsRecipes() - RecipeUtils.addShapedRecipe("clay_work_table", + RecipeUtils.addShapedRecipe( + "clay_work_table", ItemStack(ClayiumBlocks.CLAY_WORK_TABLE), - "CC", "CC", 'C', UnificationEntry(OrePrefix.block, denseClay)) + "CC", + "CC", + 'C', + UnificationEntry(OrePrefix.block, denseClay) + ) - RecipeUtils.addSmeltingRecipe(UnificationEntry(OrePrefix.ingot, CMaterials.impureSilicon), - OreDictUnifier.get(OrePrefix.ingot, CMaterials.silicone), 0.1f) + RecipeUtils.addSmeltingRecipe( + UnificationEntry(OrePrefix.ingot, CMaterials.impureSilicon), + OreDictUnifier.get(OrePrefix.ingot, CMaterials.silicone), + 0.1f + ) - RecipeUtils.addShapelessRecipe("ultimate_compound_ingot", OreDictUnifier.get(OrePrefix.ingot, CMaterials.ultimateCompound, 9), + RecipeUtils.addShapelessRecipe( + "ultimate_compound_ingot", + OreDictUnifier.get(OrePrefix.ingot, CMaterials.ultimateCompound, 9), OreDictUnifier.get(OrePrefix.ingot, CMaterials.strontium), OreDictUnifier.get(OrePrefix.ingot, CMaterials.barium), OreDictUnifier.get(OrePrefix.ingot, CMaterials.calcium), OreDictUnifier.get(OrePrefix.ingot, CMaterials.clayium), - *Array(5) { OreDictUnifier.get(OrePrefix.ingot, CMaterials.aluminum) }) + *Array(5) { OreDictUnifier.get(OrePrefix.ingot, CMaterials.aluminum) } + ) for (i in 1.. handleBlockGrinding(material) - ingot, gem, crystal, - bearing, blade, cuttingHead, cylinder, disc, - gear, grindingHead, needle, pipe, ring, spindle -> { + ingot, + gem, + crystal, + bearing, + blade, + cuttingHead, + cylinder, + disc, + gear, + grindingHead, + needle, + pipe, + ring, + spindle -> { addDefaultGrindingRecipe(prefix, material) } } @@ -101,7 +137,12 @@ object GrinderRecipeLoader { private fun handleBlockGrinding(material: IMaterial) { // skip if it's a clay block. (energy, duration) of these are special - if (material === CMaterials.clay || material === CMaterials.denseClay || material === CMaterials.industrialClay || material === CMaterials.advancedIndustrialClay) { + if ( + material === CMaterials.clay || + material === CMaterials.denseClay || + material === CMaterials.industrialClay || + material === CMaterials.advancedIndustrialClay + ) { return } addDefaultGrindingRecipe(block, material) @@ -117,7 +158,9 @@ object GrinderRecipeLoader { CRecipes.GRINDER.builder() .input(orePrefix, material) .output(OrePrefix.dust, material, amount) - .tier(tier).CEt(clayEnergy).duration(80 * durationModifier) + .tier(tier) + .CEt(clayEnergy) + .duration(80 * durationModifier) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/InscriberRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/InscriberRecipeLoader.kt index d64bdb6c7..639b77a52 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/InscriberRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/InscriberRecipeLoader.kt @@ -10,39 +10,54 @@ object InscriberRecipeLoader { fun registerRecipes() { val registry = CRecipes.INSCRIBER - registry.builder() + registry + .builder() .input(MetaItemClayParts.CeeBoard) .input(MetaItemClayParts.EnergizedClayDust, 32) .output(MetaItemClayParts.CeeCircuit) - .tier(0).CEt(ClayEnergy.micro(20)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(20)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClayCircuitBoard) .input(OrePrefix.dust, CMaterials.denseClay, 6) .output(MetaItemClayParts.ClayCircuit) - .tier(0).CEt(ClayEnergy.micro(20)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(20)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.ClayCircuitBoard) .input(MetaItemClayParts.EnergizedClayDust, 32) .output(MetaItemClayParts.BasicCircuit) - .tier(0).CEt(ClayEnergy.micro(20)).duration(20) + .tier(0) + .CEt(ClayEnergy.micro(20)) + .duration(20) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.impureSilicon) .input(MetaItemClayParts.EnergizedClayDust, 32) .output(MetaItemClayParts.AdvancedCircuit) - .tier(0).CEt(ClayEnergy.milli(1)).duration(120) + .tier(0) + .CEt(ClayEnergy.milli(1)) + .duration(120) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.silicon) .input(MetaItemClayParts.EnergizedClayDust, 32) .output(MetaItemClayParts.PrecisionCircuit) - .tier(0).CEt(ClayEnergy.milli(10)).duration(120) + .tier(0) + .CEt(ClayEnergy.milli(10)) + .duration(120) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LaserRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LaserRecipeLoader.kt index 54be01b3c..fed307af4 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LaserRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LaserRecipeLoader.kt @@ -49,4 +49,4 @@ object LaserRecipeLoader { requiredEnergy(300.0) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LatheRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LatheRecipeLoader.kt index 0d6550b02..20527d1ae 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LatheRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/LatheRecipeLoader.kt @@ -20,71 +20,103 @@ object LatheRecipeLoader { fun registerRecipes() { val registry = CRecipes.LATHE - registry.builder() + registry + .builder() .input(Items.CLAY_BALL) .output(shortStick, clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(1) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(1) .buildAndRegister() - registry.builder() + registry + .builder() .input(MetaItemClayParts.LargeClayBall) .output(cylinder, clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(4) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(4) .buildAndRegister() - registry.builder() + registry + .builder() .input(cylinder, clay) .output(needle, clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(3) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(3) .buildAndRegister() - registry.builder() + registry + .builder() .input(needle, clay) .output(stick, clay, 6) - .tier(0).CEt(ClayEnergy.micro(10)).duration(3) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(3) .buildAndRegister() - registry.builder() + registry + .builder() .input(disc, clay) .output(ring, clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(2) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(2) .buildAndRegister() - registry.builder() + registry + .builder() .input(smallDisc, clay) .output(smallRing, clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(1) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(1) .buildAndRegister() - registry.builder() + registry + .builder() .input(block, denseClay, 2) .output(cylinder, denseClay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(4) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(4) .buildAndRegister() - registry.builder() + registry + .builder() .input(cylinder, denseClay) .output(needle, denseClay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(6) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(6) .buildAndRegister() - registry.builder() + registry + .builder() .input(needle, denseClay) .output(stick, denseClay, 6) - .tier(0).CEt(ClayEnergy.micro(10)).duration(6) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(6) .buildAndRegister() - registry.builder() + registry + .builder() .input(disc, denseClay) .output(ring, denseClay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(4) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(4) .buildAndRegister() - registry.builder() + registry + .builder() .input(smallDisc, denseClay) .output(smallRing, denseClay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(2) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(2) .buildAndRegister() - } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MachineBlockRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MachineBlockRecipeLoader.kt index 2373bd943..cf3c83024 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MachineBlockRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MachineBlockRecipeLoader.kt @@ -29,132 +29,216 @@ object MachineBlockRecipeLoader { panDuplicators() val assembler = CRecipes.ASSEMBLER - //region Hulls - val mainHullMaterials = listOf( - CMaterials.clay, - CMaterials.clay, - CMaterials.denseClay, - CMaterials.industrialClay, - CMaterials.advancedIndustrialClay, - CMaterials.impureSilicon, - CMaterials.aluminum, - CMaterials.claySteel, - CMaterials.clayium, - CMaterials.ultimateAlloy, - CMaterials.antimatter, - CMaterials.pureAntimatter, - CMaterials.octupleEnergyClay, - CMaterials.octuplePureAntimatter, - ) + // region Hulls + val mainHullMaterials = + listOf( + CMaterials.clay, + CMaterials.clay, + CMaterials.denseClay, + CMaterials.industrialClay, + CMaterials.advancedIndustrialClay, + CMaterials.impureSilicon, + CMaterials.aluminum, + CMaterials.claySteel, + CMaterials.clayium, + CMaterials.ultimateAlloy, + CMaterials.antimatter, + CMaterials.pureAntimatter, + CMaterials.octupleEnergyClay, + CMaterials.octuplePureAntimatter, + ) - val circuits: List = listOf( - Unit, // not used but needed for indexing - UnificationEntry(OrePrefix.gear, CMaterials.clay), - MetaItemClayParts.ClayCircuit, - MetaItemClayParts.SimpleCircuit, - MetaItemClayParts.BasicCircuit, - MetaItemClayParts.AdvancedCircuit, - MetaItemClayParts.PrecisionCircuit, - MetaItemClayParts.IntegratedCircuit, - MetaItemClayParts.ClayCore, - MetaItemClayParts.ClayBrain, - MetaItemClayParts.ClaySpirit, - MetaItemClayParts.ClaySoul, - MetaItemClayParts.ClayAnima, - MetaItemClayParts.ClayPsyche, - ) + val circuits: List = + listOf( + Unit, // not used but needed for indexing + UnificationEntry(OrePrefix.gear, CMaterials.clay), + MetaItemClayParts.ClayCircuit, + MetaItemClayParts.SimpleCircuit, + MetaItemClayParts.BasicCircuit, + MetaItemClayParts.AdvancedCircuit, + MetaItemClayParts.PrecisionCircuit, + MetaItemClayParts.IntegratedCircuit, + MetaItemClayParts.ClayCore, + MetaItemClayParts.ClayBrain, + MetaItemClayParts.ClaySpirit, + MetaItemClayParts.ClaySoul, + MetaItemClayParts.ClayAnima, + MetaItemClayParts.ClayPsyche, + ) for (tier in ClayTiers.entries) { val hull = MACHINE_HULL val i = tier.numeric when (tier) { - DEFAULT -> RecipeUtils.addShapedRecipe("raw_clay_machine_hull", hull.getItem(tier), - "PPP", "PGP", "PPP", - 'P', UnificationEntry(OrePrefix.largePlate, CMaterials.clay), - 'G', UnificationEntry(OrePrefix.gear, CMaterials.clay)) + DEFAULT -> + RecipeUtils.addShapedRecipe( + "raw_clay_machine_hull", + hull.getItem(tier), + "PPP", + "PGP", + "PPP", + 'P', + UnificationEntry(OrePrefix.largePlate, CMaterials.clay), + 'G', + UnificationEntry(OrePrefix.gear, CMaterials.clay) + ) CLAY -> RecipeUtils.addSmeltingRecipe(hull.getItem(DEFAULT), hull.getItem(CLAY)) - DENSE_CLAY, SIMPLE -> - RecipeUtils.addShapedRecipe("machine_hull_${tier.lowerName}", hull.getItem(tier), - "PPP", "PCP", "PPP", - 'C', circuits[i], - 'P', UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) + DENSE_CLAY, + SIMPLE -> + RecipeUtils.addShapedRecipe( + "machine_hull_${tier.lowerName}", + hull.getItem(tier), + "PPP", + "PCP", + "PPP", + 'C', + circuits[i], + 'P', + UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) ) - BASIC, PRECISION, CLAY_STEEL, CLAYIUM, - ULTIMATE, ANTIMATTER, PURE_ANTIMATTER, OEC, OPA -> - RecipeUtils.addShapedRecipe("machine_hull_${tier.lowerName}", hull.getItem(tier), - "PEP", "PCP", "PPP", - 'E', MetaItemClayParts.CEE, - 'C', circuits[i], - 'P', UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) + BASIC, + PRECISION, + CLAY_STEEL, + CLAYIUM, + ULTIMATE, + ANTIMATTER, + PURE_ANTIMATTER, + OEC, + OPA -> + RecipeUtils.addShapedRecipe( + "machine_hull_${tier.lowerName}", + hull.getItem(tier), + "PEP", + "PCP", + "PPP", + 'E', + MetaItemClayParts.CEE, + 'C', + circuits[i], + 'P', + UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) ) ADVANCED -> - RecipeUtils.addShapedRecipe("machine_hull_${tier.lowerName}", hull.getItem(tier), - "PEP", "SCS", "PSP", - 'E', MetaItemClayParts.CEE, - 'C', circuits[i], - 'S', UnificationEntry(OrePrefix.largePlate, CMaterials.silicone), - 'P', UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) + RecipeUtils.addShapedRecipe( + "machine_hull_${tier.lowerName}", + hull.getItem(tier), + "PEP", + "SCS", + "PSP", + 'E', + MetaItemClayParts.CEE, + 'C', + circuits[i], + 'S', + UnificationEntry(OrePrefix.largePlate, CMaterials.silicone), + 'P', + UnificationEntry(OrePrefix.largePlate, mainHullMaterials[i]) ) - AZ91D -> CRecipes.ASSEMBLER.builder() - .input(OrePrefix.largePlate, CMaterials.az91d) - .input(MetaItemClayParts.PrecisionCircuit) - .output(hull.getItem(tier)) - .tier(4).CEt(ClayEnergy.milli(100)).duration(120) - .buildAndRegister() + AZ91D -> + CRecipes.ASSEMBLER.builder() + .input(OrePrefix.largePlate, CMaterials.az91d) + .input(MetaItemClayParts.PrecisionCircuit) + .output(hull.getItem(tier)) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(120) + .buildAndRegister() ZK60A -> - RecipeUtils.addShapedRecipe("machine_hull_${tier.lowerName}", hull.getItem(tier), - "PPP", "PCP", "PPP", - 'C', MetaItemClayParts.PrecisionCircuit, - 'P', UnificationEntry(OrePrefix.largePlate, CMaterials.zk60a) + RecipeUtils.addShapedRecipe( + "machine_hull_${tier.lowerName}", + hull.getItem(tier), + "PPP", + "PCP", + "PPP", + 'C', + MetaItemClayParts.PrecisionCircuit, + 'P', + UnificationEntry(OrePrefix.largePlate, CMaterials.zk60a) ) } } /* CA Reactor Hulls */ val antimatters = listOf(CMaterials.antimatter) + CMaterials.PURE_ANTIMATTERS - val caHullMaterials = listOf(CMaterials.rubidium, CMaterials.cerium, CMaterials.tantalum, CMaterials.praseodymium, - CMaterials.protactinium, CMaterials.neptunium, CMaterials.promethium, CMaterials.samarium, CMaterials.curium, CMaterials.europium) + val caHullMaterials = + listOf( + CMaterials.rubidium, + CMaterials.cerium, + CMaterials.tantalum, + CMaterials.praseodymium, + CMaterials.protactinium, + CMaterials.neptunium, + CMaterials.promethium, + CMaterials.samarium, + CMaterials.curium, + CMaterials.europium + ) var caHullCenter = MACHINE_HULL.getItem(ANTIMATTER) for ((i, entry) in antimatters.zip(caHullMaterials).withIndex()) { val (matter, hullMaterial) = entry val result = ItemStack(ClayiumBlocks.CA_REACTOR_HULL, 1, i) - RecipeUtils.addShapedRecipe("ca_reactor_hull_$i", result, - "MIM", "MHM", "MMM", - 'M', UnificationEntry(OrePrefix.gem, matter), - 'I', UnificationEntry(OrePrefix.ingot, hullMaterial), - 'H', caHullCenter, + RecipeUtils.addShapedRecipe( + "ca_reactor_hull_$i", + result, + "MIM", + "MHM", + "MMM", + 'M', + UnificationEntry(OrePrefix.gem, matter), + 'I', + UnificationEntry(OrePrefix.ingot, hullMaterial), + 'H', + caHullCenter, ) caHullCenter = result } - //endregion + // endregion /* Alloy Smelter */ CRecipes.ASSEMBLER.builder() .input(MetaTileEntities.SMELTER[2]) .input(MetaItemClayParts.PrecisionCircuit) .output(MetaTileEntities.ALLOY_SMELTER) - .tier(4).CEt(ClayEnergy.milli(100)).duration(40) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(40) .buildAndRegister() /* Automatic Clay Condenser */ - for ((i, tier) in listOf(ADVANCED, CLAY_STEEL).withIndex()) { + for ((i, tier) in listOf(ADVANCED, CLAY_STEEL).withIndex()) { CRecipes.ASSEMBLER.builder() .input(MetaTileEntities.CLAY_BUFFER[tier.numeric - 4]) .input(MetaItemClayParts.AdvancedCircuit) .output(MetaTileEntities.AUTO_CLAY_CONDENSER[i]) - .tier(4).CEtFactor(1.0).duration(40) + .tier(4) + .CEtFactor(1.0) + .duration(40) .buildAndRegister() } /* Ca Reactor Coils */ - for ((i, entry) in listOf(CMaterials.antimatter, CMaterials.pureAntimatter, CMaterials.octupleEnergyClay, - CMaterials.octuplePureAntimatter).zip(listOf(CMaterials.platinum, CMaterials.iridium, CMaterials.osmium, - CMaterials.rhenium)).withIndex()) { + for ((i, entry) in + listOf( + CMaterials.antimatter, + CMaterials.pureAntimatter, + CMaterials.octupleEnergyClay, + CMaterials.octuplePureAntimatter + ) + .zip( + listOf( + CMaterials.platinum, + CMaterials.iridium, + CMaterials.osmium, + CMaterials.rhenium + ) + ) + .withIndex()) { val (plateMaterial, ingotMaterial) = entry CRecipes.CLAY_REACTOR.builder() .input(OrePrefix.plate, plateMaterial, 6) .input(OrePrefix.ingot, ingotMaterial, 4.0.pow(i).toInt()) .output(ItemStack(ClayiumBlocks.CA_REACTOR_COIL, 1, i)) - .tier(10 + i).duration(min(10_000_000_000_000 * 10.0.pow(i).toLong(), 1_000_000_000_000_000)) + .tier(10 + i) + .duration(min(10_000_000_000_000 * 10.0.pow(i).toLong(), 1_000_000_000_000_000)) .CEt(ClayEnergy.of(1000 * 10.0.pow(i).toLong())) .buildAndRegister() } @@ -170,8 +254,14 @@ object MachineBlockRecipeLoader { registerMachineRecipeHull(MetaTileEntities.ENERGETIC_CLAY_CONDENSER) { input(MetaItemClayParts.CEE, 2) } - registerLowTierRecipe(MetaTileEntities.ENERGETIC_CLAY_CONDENSER, "pgp", "EHE", "pcp", - 'E', MetaItemClayParts.CEE) + registerLowTierRecipe( + MetaTileEntities.ENERGETIC_CLAY_CONDENSER, + "pgp", + "EHE", + "pcp", + 'E', + MetaItemClayParts.CEE + ) registerMachineRecipeHull(MetaTileEntities.WIRE_DRAWING_MACHINE) { input(OrePrefix.pipe, CMaterials.denseClay) } @@ -224,13 +314,17 @@ object MachineBlockRecipeLoader { .input(OrePrefix.plate, mainHullMaterials[materialIndex]) .input(circuits[materialIndex] as MetaItemClayium.MetaValueItem) .output(MetaTileEntities.CLAY_BUFFER[i], 16) - .tier(4).CEt(ClayEnergy(10.0.pow((i + 1.0)).toLong())).duration(40) + .tier(4) + .CEt(ClayEnergy(10.0.pow((i + 1.0)).toLong())) + .duration(40) .buildAndRegister() CRecipes.ASSEMBLER.builder() .input(MetaTileEntities.CLAY_BUFFER[i], 6) .input(OrePrefix.largePlate, mainHullMaterials[materialIndex]) .output(MetaTileEntities.MULTI_TRACK_BUFFER[i]) - .tier(4).CEt(ClayEnergy(10.0.pow((i + 1.0)).toLong())).duration(40) + .tier(4) + .CEt(ClayEnergy(10.0.pow((i + 1.0)).toLong())) + .duration(40) .buildAndRegister() } /* Machine Proxy */ @@ -239,7 +333,9 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(metaTileEntity.tier as ClayTiers)) .input(MetaTileEntities.CLAY_BUFFER[metaTileEntity.tier.numeric - 4]) .output(metaTileEntity.getStackForm()) - .tier(4).CEt(ClayEnergy(10.0.pow(metaTileEntity.tier.numeric - 3).toLong())).duration(40) + .tier(4) + .CEt(ClayEnergy(10.0.pow(metaTileEntity.tier.numeric - 3).toLong())) + .duration(40) .buildAndRegister() } /* Redstone Proxy */ @@ -248,7 +344,9 @@ object MachineBlockRecipeLoader { .input(MetaTileEntities.CLAY_INTERFACE[metaTileEntity.tier.numeric - 5]) .input(MetaItemClayParts.EnergizedClayDust, 16) .output(metaTileEntity.getStackForm()) - .tier(4).CEt(ClayEnergy(10.0.pow(metaTileEntity.tier.numeric - 3).toLong())).duration(40) + .tier(4) + .CEt(ClayEnergy(10.0.pow(metaTileEntity.tier.numeric - 3).toLong())) + .duration(40) .buildAndRegister() } registerMachineRecipeBuffer(MetaTileEntities.LASER_PROXY) { @@ -262,33 +360,44 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(ANTIMATTER)) .input(OrePrefix.gem, CMaterials.antimatter, 8) .output(MetaTileEntities.CA_RESONATING_COLLECTOR) - .tier(10).CEtFactor(2.0).duration(4000) + .tier(10) + .CEtFactor(2.0) + .duration(4000) .buildAndRegister() /* CA Injector */ - assembler.builder() + assembler + .builder() .input(MACHINE_HULL.getItem(ULTIMATE)) .input(MetaTileEntities.CLAY_REACTOR, 16) .output(MetaTileEntities.CA_INJECTOR[0]) - .tier(6).CEt(ClayEnergy.of(100)).duration(480) + .tier(6) + .CEt(ClayEnergy.of(100)) + .duration(480) .buildAndRegister() for (i in 1..4) { val mte = MetaTileEntities.CA_INJECTOR[i] - assembler.builder() + assembler + .builder() .input(MACHINE_HULL.getItem(mte.tier as ClayTiers)) .input(MetaTileEntities.CA_INJECTOR[i - 1], 2) .output(mte) - .tier(10).CEt(ClayEnergy.of(100 * 10.0.pow(i).toLong())).duration(480) + .tier(10) + .CEt(ClayEnergy.of(100 * 10.0.pow(i).toLong())) + .duration(480) .buildAndRegister() } caCondenser() /* Cobblestone Generator */ - for ((i, m) in listOf(CMaterials.clay, CMaterials.denseClay, CMaterials.industrialClay).withIndex()) { - assembler.builder() + for ((i, m) in + listOf(CMaterials.clay, CMaterials.denseClay, CMaterials.industrialClay).withIndex()) { + assembler + .builder() .input(OrePrefix.largePlate, m) .input(MetaItemClayParts.SimpleCircuit) .output(MetaTileEntities.COBBLESTONE_GENERATOR[i]) - .tier(4).duration(40) + .tier(4) + .duration(40) .buildAndRegister() } registerMachineRecipeBuffer(MetaTileEntities.COBBLESTONE_GENERATOR) { @@ -300,92 +409,129 @@ object MachineBlockRecipeLoader { } /* Storage Container */ - assembler.builder() + assembler + .builder() .input(MACHINE_HULL.getItem(AZ91D, 4)) .input(MetaTileEntities.CLAY_INTERFACE[0]) .output(MetaTileEntities.STORAGE_CONTAINER, 4) - .tier(4).CEt(ClayEnergy.milli(100)).duration(120) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(120) .buildAndRegister() - RecipeUtils.addShapelessRecipe("upgrade_storage_container", MetaTileEntities.STORAGE_CONTAINER_UPGRADED.getStackForm(), - MetaTileEntities.STORAGE_CONTAINER, MetaItemClayParts.ClayCore) + RecipeUtils.addShapelessRecipe( + "upgrade_storage_container", + MetaTileEntities.STORAGE_CONTAINER_UPGRADED.getStackForm(), + MetaTileEntities.STORAGE_CONTAINER, + MetaItemClayParts.ClayCore + ) /* Distributor */ for (i in 0..<3) { val buffer = MetaTileEntities.CLAY_BUFFER[i + 3] val hull = MACHINE_HULL.getItem(ClayTiers.entries[i + 7]) - assembler.builder() + assembler + .builder() .input(buffer) .input(hull) .output(MetaTileEntities.DISTRIBUTOR[i]) - .tier(6).CEt(ClayEnergy.of(1 * 10.0.pow(i).toLong())).duration(120) + .tier(6) + .CEt(ClayEnergy.of(1 * 10.0.pow(i).toLong())) + .duration(120) .buildAndRegister() } /* Clay Blast Furnace */ - assembler.builder() + assembler + .builder() .input(MetaTileEntities.SMELTER[2]) .input(MetaTileEntities.CLAY_INTERFACE[1]) .output(MetaTileEntities.CLAY_BLAST_FURNACE) - .tier(4).CEt(ClayEnergy.milli(100)).duration(120) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(120) .buildAndRegister() /* Clay Reactor */ - assembler.builder() + assembler + .builder() .input(MACHINE_HULL.getItem(CLAY_STEEL)) .input(MetaTileEntities.LASER_PROXY[0]) .output(MetaTileEntities.CLAY_REACTOR) - .tier(6).CEt(ClayEnergy.of(1)).duration(1200) + .tier(6) + .CEt(ClayEnergy.of(1)) + .duration(1200) .buildAndRegister() /* Waterwheel */ val wheelHulls = listOf(MACHINE_HULL.getItem(CLAY), MACHINE_HULL.getItem(DENSE_CLAY)) - val wheels = listOf(UnificationEntry(OrePrefix.wheel, CMaterials.clay), UnificationEntry(OrePrefix.wheel, CMaterials.denseClay)) + val wheels = + listOf( + UnificationEntry(OrePrefix.wheel, CMaterials.clay), + UnificationEntry(OrePrefix.wheel, CMaterials.denseClay) + ) for ((i, e) in wheelHulls.zip(wheels).withIndex()) { val (block, item) = e - RecipeUtils.addShapelessRecipe("$MOD_ID.waterwheel_$i", - MetaTileEntities.WATERWHEEL[i].getStackForm(), block, item) + RecipeUtils.addShapelessRecipe( + "$MOD_ID.waterwheel_$i", + MetaTileEntities.WATERWHEEL[i].getStackForm(), + block, + item + ) } /* Chemical Metal Separator */ - assembler.builder() + assembler + .builder() .input(MetaTileEntities.CHEMICAL_REACTOR[1]) .input(MetaTileEntities.SMELTER[2]) .output(MetaTileEntities.CHEMICAL_METAL_SEPARATOR) - .tier(4).CEt(ClayEnergy.milli(100)).duration(40) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(40) .buildAndRegister() /* Electrolysis Reactor */ for (mte in MetaTileEntities.ELECTROLYSIS_REACTOR) { - assembler.builder() + assembler + .builder() .input(MetaTileEntities.CHEMICAL_REACTOR[1]) .input(circuits[mte.tier.numeric] as MetaItemClayium.MetaValueItem) .output(mte) - .tier(4).CEt(ClayEnergy.milli(100)).duration(40) + .tier(4) + .CEt(ClayEnergy.milli(100)) + .duration(40) .buildAndRegister() } /* Matter Transformer */ for ((i, mte) in MetaTileEntities.MATTER_TRANSFORMER.withIndex()) { if (i in 0..2) { - assembler.builder() + assembler + .builder() .input(MetaTileEntities.CLAY_REACTOR) .input(MetaTileEntities.ELECTROLYSIS_REACTOR[i + 1]) .output(mte) .tier(6) - .CEt(ClayEnergy.of(10.0.pow(i).toLong())).duration(120) + .CEt(ClayEnergy.of(10.0.pow(i).toLong())) + .duration(120) .buildAndRegister() } else { - assembler.builder() + assembler + .builder() .input(MetaTileEntities.CLAY_REACTOR) .input(MetaTileEntities.CA_INJECTOR[i - 2]) .output(mte) .tier(6) - .CEt(ClayEnergy.of(10.0.pow(i).toLong())).duration(120) + .CEt(ClayEnergy.of(10.0.pow(i).toLong())) + .duration(120) .buildAndRegister() } } /* Inscriber */ for ((a, i) in MetaTileEntities.ASSEMBLER.take(2).zip(MetaTileEntities.INSCRIBER)) { - assembler.builder() + assembler + .builder() .input(a) .input(MetaItemClayParts.BasicCircuit) .output(i) - .tier(4).CEt(ClayEnergy.micro(100)).duration(40) + .tier(4) + .CEt(ClayEnergy.micro(100)) + .duration(40) .buildAndRegister() } /* CA Reactor */ @@ -394,7 +540,8 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(ClayTiers.entries[i + 10])) .input(MetaTileEntities.CLAY_REACTOR, 16) .output(MetaTileEntities.CA_REACTOR[i]) - .tier(10).duration(120) + .tier(10) + .duration(120) .CEt(ClayEnergy.of(1_000 * 10.0.pow(i).toLong())) .buildAndRegister() } @@ -404,19 +551,25 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(CLAYIUM)) .input(MetaTileEntities.SOLAR_CLAY_FABRICATOR[2]) .output(MetaTileEntities.CLAY_FABRICATOR[0]) - .tier(8).CEt(ClayEnergy.of(30)).duration(100_000_000) + .tier(8) + .CEt(ClayEnergy.of(30)) + .duration(100_000_000) .buildAndRegister() CRecipes.CLAY_REACTOR.builder() .input(MACHINE_HULL.getItem(ULTIMATE)) .input(MetaTileEntities.SOLAR_CLAY_FABRICATOR[2]) .output(MetaTileEntities.CLAY_FABRICATOR[1]) - .tier(9).CEt(ClayEnergy.of(300)).duration(100_000_000_000) + .tier(9) + .CEt(ClayEnergy.of(300)) + .duration(100_000_000_000) .buildAndRegister() CRecipes.CLAY_REACTOR.builder() .input(MetaTileEntities.CLAY_FABRICATOR[1], 64) .input(ClayiumBlocks.OVERCLOCKER.getItem(BlockCaReactorCoil.BlockType.OPA, 16)) .output(MetaTileEntities.CLAY_FABRICATOR[2]) - .tier(13).CEt(ClayEnergy.of(10_000_000)).duration(100_000_000_000_000_000) + .tier(13) + .CEt(ClayEnergy.of(10_000_000)) + .duration(100_000_000_000_000_000) .buildAndRegister() /* PAN Core */ @@ -424,7 +577,8 @@ object MachineBlockRecipeLoader { .input(MetaTileEntities.PAN_ADAPTER[0], 4) .input(MetaItemClayParts.ClaySoul) .output(MetaTileEntities.PAN_CORE) - .tier(11).CEt(ClayEnergy.of(10_000)) + .tier(11) + .CEt(ClayEnergy.of(10_000)) .duration(100_000_000_000_000) .buildAndRegister() @@ -434,7 +588,9 @@ object MachineBlockRecipeLoader { .input(ClayiumBlocks.RESONATOR.getItem(type)) .input(ClayiumBlocks.PAN_CABLE, 6) .output(MetaTileEntities.PAN_ADAPTER[i]) - .tier(10).CEt(ClayEnergy(10.0.pow((i + 9.0)).toLong())).duration(60) + .tier(10) + .CEt(ClayEnergy(10.0.pow((i + 9.0)).toLong())) + .duration(60) .buildAndRegister() } @@ -446,7 +602,8 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(ClayTiers.entries[t])) .input(MetaTileEntities.REDSTONE_PROXY[max(0, t - 5)]) .output(MetaTileEntities.ENERGY_CONVERTER[i]) - .tier(4).duration(120) + .tier(4) + .duration(120) .CEt(ClayEnergy.of(1) * ConfigCore.feGen.cePerTick[i]) .buildAndRegister() } @@ -457,7 +614,9 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(AZ91D)) .input(MetaItemClayParts.PrecisionCircuit) .output(MetaTileEntities.BLOCK_BREAKER) - .tier(6).CEt(ClayEnergy.milli(100)).duration(60) + .tier(6) + .CEt(ClayEnergy.milli(100)) + .duration(60) .buildAndRegister() /* Ranged Miner */ @@ -465,29 +624,40 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(ZK60A)) .input(MetaItemClayParts.ClayCore, 64) .output(MetaTileEntities.RANGED_MINER) - .tier(6).CEt(ClayEnergy.of(10)).duration(6000) + .tier(6) + .CEt(ClayEnergy.of(10)) + .duration(6000) .buildAndRegister() /* Advanced Ranged Miner */ CRecipes.ASSEMBLER.builder() .input(MetaTileEntities.RANGED_MINER) .input(MetaItemClayParts.ClayBrain, 64) - .tier(6).CEt(ClayEnergy.of(100)).duration(6000) + .tier(6) + .CEt(ClayEnergy.of(100)) + .duration(6000) .output(MetaTileEntities.ADV_RANGED_MINER) .buildAndRegister() /* Chunk Loader */ - RecipeUtils.addShapedRecipe("chunk_loader", ItemStack(ClayiumBlocks.CHUNK_LOADER), - "cCc", "CHC", "cCc", - 'c', MetaItemClayParts.AdvancedCircuit, - 'C', MetaItemClayParts.PrecisionCircuit, - 'H', MACHINE_HULL.getItem(ZK60A)) + RecipeUtils.addShapedRecipe( + "chunk_loader", + ItemStack(ClayiumBlocks.CHUNK_LOADER), + "cCc", + "CHC", + "cCc", + 'c', + MetaItemClayParts.AdvancedCircuit, + 'C', + MetaItemClayParts.PrecisionCircuit, + 'H', + MACHINE_HULL.getItem(ZK60A) + ) } /** - * Register workbench recipes for tier <= 4 machines. - * Clay is [CMaterials.clay] if tier is 1, [CMaterials.denseClay] otherwise. - * Some characters are available for recipes by default: + * Register workbench recipes for tier <= 4 machines. Clay is [CMaterials.clay] if tier is 1, + * [CMaterials.denseClay] otherwise. Some characters are available for recipes by default: * - 'H' for machine hull * - 'p' for plate and 'P' for large plate * - 'G' for grinding head and 'g' for gear @@ -497,23 +667,40 @@ object MachineBlockRecipeLoader { * - 'O' for pipe and 'I' for cylinder */ private fun registerLowTierRecipe(metaTileEntities: List, vararg recipe: Any) { - val circuits: List = listOf( - Unit, // not used but needed for indexing - UnificationEntry(OrePrefix.gear, CMaterials.clay), MetaItemClayParts.ClayCircuit, MetaItemClayParts.SimpleCircuit, MetaItemClayParts.BasicCircuit, - MetaItemClayParts.AdvancedCircuit, MetaItemClayParts.PrecisionCircuit, MetaItemClayParts.IntegratedCircuit, MetaItemClayParts.ClayCore, - MetaItemClayParts.ClayBrain, MetaItemClayParts.ClaySpirit, MetaItemClayParts.ClaySoul, MetaItemClayParts.ClayAnima, MetaItemClayParts.ClayPsyche, - ) + val circuits: List = + listOf( + Unit, // not used but needed for indexing + UnificationEntry(OrePrefix.gear, CMaterials.clay), + MetaItemClayParts.ClayCircuit, + MetaItemClayParts.SimpleCircuit, + MetaItemClayParts.BasicCircuit, + MetaItemClayParts.AdvancedCircuit, + MetaItemClayParts.PrecisionCircuit, + MetaItemClayParts.IntegratedCircuit, + MetaItemClayParts.ClayCore, + MetaItemClayParts.ClayBrain, + MetaItemClayParts.ClaySpirit, + MetaItemClayParts.ClaySoul, + MetaItemClayParts.ClayAnima, + MetaItemClayParts.ClayPsyche, + ) for (mte in metaTileEntities) { if (mte.tier.numeric > 4 || mte.tier !is ClayTiers) continue val clay = if (mte.tier.numeric == 1) CMaterials.clay else CMaterials.denseClay - val ingMap = mutableMapOf( - 'p' to UnificationEntry(OrePrefix.plate, clay), 'P' to UnificationEntry(OrePrefix.largePlate, clay), - 'g' to UnificationEntry(OrePrefix.gear, clay), 'G' to UnificationEntry(OrePrefix.cuttingHead, clay), - 's' to UnificationEntry(OrePrefix.stick, clay), 'S' to UnificationEntry(OrePrefix.stick, clay), - 'M' to UnificationEntry(OrePrefix.spindle, clay), - 'c' to circuits[mte.tier.numeric], 'C' to UnificationEntry(OrePrefix.cuttingHead, clay), - 'O' to UnificationEntry(OrePrefix.pipe, clay), 'I' to UnificationEntry(OrePrefix.cylinder, clay), - ) + val ingMap = + mutableMapOf( + 'p' to UnificationEntry(OrePrefix.plate, clay), + 'P' to UnificationEntry(OrePrefix.largePlate, clay), + 'g' to UnificationEntry(OrePrefix.gear, clay), + 'G' to UnificationEntry(OrePrefix.cuttingHead, clay), + 's' to UnificationEntry(OrePrefix.stick, clay), + 'S' to UnificationEntry(OrePrefix.stick, clay), + 'M' to UnificationEntry(OrePrefix.spindle, clay), + 'c' to circuits[mte.tier.numeric], + 'C' to UnificationEntry(OrePrefix.cuttingHead, clay), + 'O' to UnificationEntry(OrePrefix.pipe, clay), + 'I' to UnificationEntry(OrePrefix.cylinder, clay), + ) val recipeExtra = mutableListOf() for (row in recipe) { if (row !is String) continue @@ -525,37 +712,53 @@ object MachineBlockRecipeLoader { } } } - RecipeUtils.addShapedRecipe("${mte.metaTileEntityId}.workbench", mte.getStackForm(), + RecipeUtils.addShapedRecipe( + "${mte.metaTileEntityId}.workbench", + mte.getStackForm(), *recipe, - 'H', MACHINE_HULL.getItem(mte.tier), + 'H', + MACHINE_HULL.getItem(mte.tier), *recipeExtra.toTypedArray() ) } } - private fun registerMachineRecipeHull(metaTileEntities: List, inputProvider: RecipeBuilder<*>.(index: Int) -> RecipeBuilder<*>) { + private fun registerMachineRecipeHull( + metaTileEntities: List, + inputProvider: RecipeBuilder<*>.(index: Int) -> RecipeBuilder<*> + ) { for ((i, mte) in metaTileEntities.withIndex()) { if (mte.tier !is ClayTiers) { - CLog.warn("MetaTileEntity ${mte.metaTileEntityId}'s tier is not a instance of ClayTiers. Cannot register recipe.") + CLog.warn( + "MetaTileEntity ${mte.metaTileEntityId}'s tier is not a instance of ClayTiers. Cannot register recipe." + ) continue } CRecipes.ASSEMBLER.builder() .input(MACHINE_HULL.getItem(mte.tier)) .output(mte.getStackForm()) - .tier(4).CEtFactor(1.0).duration(60) + .tier(4) + .CEtFactor(1.0) + .duration(60) .inputProvider(i) .buildAndRegister() } } - private fun registerMachineRecipeBuffer(metaTileEntities: List, inputProvider: RecipeBuilder<*>.() -> RecipeBuilder<*>) { + private fun registerMachineRecipeBuffer( + metaTileEntities: List, + inputProvider: RecipeBuilder<*>.() -> RecipeBuilder<*> + ) { for (mte in metaTileEntities) { - if (!(mte.tier is ClayTiers && mte.tier.numeric >= 4 && mte.tier.numeric <= 13)) continue + if (!(mte.tier is ClayTiers && mte.tier.numeric >= 4 && mte.tier.numeric <= 13)) + continue val i = mte.tier.numeric - 4 CRecipes.ASSEMBLER.builder() .input(MetaTileEntities.CLAY_BUFFER[i]) .output(mte.getStackForm()) - .tier(4).CEtFactor(1.0).duration(60) + .tier(4) + .CEtFactor(1.0) + .duration(60) .inputProvider() .buildAndRegister() } @@ -584,18 +787,39 @@ object MachineBlockRecipeLoader { .input(MACHINE_HULL.getItem(BASIC)) .input(ClayiumBlocks.PAN_CABLE, 4) .output(MetaTileEntities.PAN_DUPLICATOR[0]) - .tier(10).CEt(ClayEnergy.of(1000)).duration(20) + .tier(10) + .CEt(ClayEnergy.of(1000)) + .duration(20) .buildAndRegister() - val ingotMaterials = listOf(CMaterials.rubidium, CMaterials.lanthanum, CMaterials.caesium, CMaterials.francium, - CMaterials.radium, CMaterials.tantalum, CMaterials.bismuth, CMaterials.actinium, CMaterials.vanadium) + val ingotMaterials = + listOf( + CMaterials.rubidium, + CMaterials.lanthanum, + CMaterials.caesium, + CMaterials.francium, + CMaterials.radium, + CMaterials.tantalum, + CMaterials.bismuth, + CMaterials.actinium, + CMaterials.vanadium + ) for ((i, duplicator) in MetaTileEntities.PAN_DUPLICATOR.slice(1..9).withIndex()) { - RecipeUtils.addShapedRecipe("pan_duplicator_rank${i + 1}", duplicator.getStackForm(), - "PIP", "DHD", "PIP", - 'P', UnificationEntry(OrePrefix.gem, CMaterials.PURE_ANTIMATTERS[i]), - 'I', UnificationEntry(OrePrefix.ingot, ingotMaterials[i]), - 'D', MetaTileEntities.PAN_DUPLICATOR[i].getStackForm(), - 'H', MACHINE_HULL.getItem(ClayTiers.entries[i + 5])) + RecipeUtils.addShapedRecipe( + "pan_duplicator_rank${i + 1}", + duplicator.getStackForm(), + "PIP", + "DHD", + "PIP", + 'P', + UnificationEntry(OrePrefix.gem, CMaterials.PURE_ANTIMATTERS[i]), + 'I', + UnificationEntry(OrePrefix.ingot, ingotMaterials[i]), + 'D', + MetaTileEntities.PAN_DUPLICATOR[i].getStackForm(), + 'H', + MACHINE_HULL.getItem(ClayTiers.entries[i + 5]) + ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MatterTransformerRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MatterTransformerRecipeLoader.kt index 1bc9ef818..c508283c2 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MatterTransformerRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MatterTransformerRecipeLoader.kt @@ -49,14 +49,20 @@ object MatterTransformerRecipeLoader { } } - registry.builder() - .tier(7).CEt(ClayEnergy.of(1)).duration(10) + registry + .builder() + .tier(7) + .CEt(ClayEnergy.of(1)) + .duration(10) .input(Blocks.GRAVEL) .output(Items.FLINT) .buildAndRegister() - registry.builder() - .tier(7).CEt(ClayEnergy.of(1)).duration(20) + registry + .builder() + .tier(7) + .CEt(ClayEnergy.of(1)) + .duration(20) .input(Blocks.DIRT) .output(VBlocks.PODZOL) .chain(Blocks.GRASS) @@ -64,8 +70,11 @@ object MatterTransformerRecipeLoader { .chain(Blocks.SOUL_SAND) .buildAndRegister() - registry.builder() - .tier(7).CEt(ClayEnergy.of(1)).duration(20) + registry + .builder() + .tier(7) + .CEt(ClayEnergy.of(1)) + .duration(20) .input(VBlocks.DANDELION) .output(VBlocks.POPPY) .chain(VBlocks.BLUE_ORCHID) @@ -84,66 +93,98 @@ object MatterTransformerRecipeLoader { .chain(VBlocks.PEONY) .buildAndRegister() - registry.builder() - .tier(8).CEt(ClayEnergy.of(10)).duration(100) + registry + .builder() + .tier(8) + .CEt(ClayEnergy.of(10)) + .duration(100) .input(Items.SLIME_BALL) .output(Items.EGG) .chain(VItems.INK_SAC) .chain(Items.SPIDER_EYE) .chain(Items.GHAST_TEAR) - .tier(10).CEt(ClayEnergy.of(1000)).duration(100) + .tier(10) + .CEt(ClayEnergy.of(1000)) + .duration(100) .buildAndRegister() - registry.builder() + registry + .builder() .input(Blocks.VINE) .output(Blocks.WATERLILY) - .tier(9).CEt(ClayEnergy.of(20)).duration(100) + .tier(9) + .CEt(ClayEnergy.of(20)) + .duration(100) .buildAndRegister() - registry.builder() - .tier(9).CEt(ClayEnergy.of(100)).duration(20) + registry + .builder() + .tier(9) + .CEt(ClayEnergy.of(100)) + .duration(20) .input(Blocks.COBBLESTONE) .output(Blocks.NETHERRACK) .buildAndRegister() - registry.builder() - .tier(9).CEt(ClayEnergy.of(100)).duration(80) + registry + .builder() + .tier(9) + .CEt(ClayEnergy.of(100)) + .duration(80) .input(Items.LEATHER) .output(Blocks.WOOL, 4) .buildAndRegister() - registry.builder() - .tier(9).CEt(ClayEnergy.of(100)).duration(80) + registry + .builder() + .tier(9) + .CEt(ClayEnergy.of(100)) + .duration(80) .input(Blocks.WOOL) .output(Items.FEATHER, 4) .buildAndRegister() - registry.builder() - .tier(9).CEt(ClayEnergy.of(100)).duration(80) + registry + .builder() + .tier(9) + .CEt(ClayEnergy.of(100)) + .duration(80) .input(Items.BONE, 64) .output(Items.BLAZE_ROD) .buildAndRegister() - registry.builder() - .tier(9).CEt(ClayEnergy.of(100)).duration(80) + registry + .builder() + .tier(9) + .CEt(ClayEnergy.of(100)) + .duration(80) .input(Items.BLAZE_ROD, 4) .output(Items.ENDER_PEARL) .buildAndRegister() - registry.builder() - .tier(11).CEt(ClayEnergy.of(1500)).duration(200) + registry + .builder() + .tier(11) + .CEt(ClayEnergy.of(1500)) + .duration(200) .input(Items.DIAMOND) .output(Items.EMERALD) .buildAndRegister() - registry.builder() - .tier(12).CEt(ClayEnergy.of(100_000)).duration(200) + registry + .builder() + .tier(12) + .CEt(ClayEnergy.of(100_000)) + .duration(200) .input(Items.ENDER_PEARL, 16) .output(Items.NETHER_STAR) .buildAndRegister() - registry.builder() - .tier(12).CEt(ClayEnergy.of(100_000)).duration(200) + registry + .builder() + .tier(12) + .CEt(ClayEnergy.of(100_000)) + .duration(200) .input(Items.NETHER_STAR, 64) .output(Blocks.DRAGON_EGG) .buildAndRegister() @@ -151,17 +192,21 @@ object MatterTransformerRecipeLoader { registerMaterialTransformations() if (Mods.AE2.isModLoaded) { - registry.builder() + registry + .builder() .input(Items.QUARTZ) .output(OrePrefix.crystal, CMarkerMaterials.certusQuartz) - .tier(10).defaultCEt().duration(60) + .tier(10) + .defaultCEt() + .duration(60) .buildAndRegister() } } private fun getLeaveStack(type: BlockPlanks.EnumType): ItemStack { val meta = type.metadata - val block = if (type in BlockOldLeaf.VARIANT.allowedValues) Blocks.LEAVES else Blocks.LEAVES2 + val block = + if (type in BlockOldLeaf.VARIANT.allowedValues) Blocks.LEAVES else Blocks.LEAVES2 val actualMeta = if (type in BlockOldLeaf.VARIANT.allowedValues) meta else meta - 4 return ItemStack(block, 1, actualMeta) } @@ -178,104 +223,182 @@ object MatterTransformerRecipeLoader { .defaultPrefix(OrePrefix.ingot) .input(CMaterials.lithium) .output(CMaterials.sodium) - .tier(7).CEtFactor(10.0).duration(200) - - .chain(CMaterials.potassium).CEtFactor(30.0) - .chain(CMaterials.rubidium).tier(8).CEtFactor(10.0) - .chain(CMaterials.caesium).CEtFactor(20.0) - .chain(CMaterials.francium).CEtFactor(30.0) - .chain(CMaterials.radium).CEtFactor(50.0) - .chain(CMaterials.actinium).tier(9).CEtFactor(10.0) - .chain(CMaterials.thorium).CEtFactor(20.0) - .chain(CMaterials.protactinium).CEtFactor(30.0) - .chain(CMaterials.uranium).CEtFactor(50.0) - .chain(CMaterials.neptunium).CEtFactor(80.0) - .chain(CMaterials.plutonium).tier(10).CEtFactor(20.0) - .chain(CMaterials.americium).tier(11).CEtFactor(30.0) - .chain(CMaterials.curium).tier(12).CEtFactor(50.0) + .tier(7) + .CEtFactor(10.0) + .duration(200) + .chain(CMaterials.potassium) + .CEtFactor(30.0) + .chain(CMaterials.rubidium) + .tier(8) + .CEtFactor(10.0) + .chain(CMaterials.caesium) + .CEtFactor(20.0) + .chain(CMaterials.francium) + .CEtFactor(30.0) + .chain(CMaterials.radium) + .CEtFactor(50.0) + .chain(CMaterials.actinium) + .tier(9) + .CEtFactor(10.0) + .chain(CMaterials.thorium) + .CEtFactor(20.0) + .chain(CMaterials.protactinium) + .CEtFactor(30.0) + .chain(CMaterials.uranium) + .CEtFactor(50.0) + .chain(CMaterials.neptunium) + .CEtFactor(80.0) + .chain(CMaterials.plutonium) + .tier(10) + .CEtFactor(20.0) + .chain(CMaterials.americium) + .tier(11) + .CEtFactor(30.0) + .chain(CMaterials.curium) + .tier(12) + .CEtFactor(50.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.beryllium) .output(CMaterials.magnesium) - .tier(7).CEtFactor(10.0).duration(200) - - .chain(CMaterials.calcium).CEtFactor(20.0) - .chain(CMaterials.strontium).CEtFactor(30.0) - .chain(CMaterials.barium).CEtFactor(50.0) - .chain(CMaterials.lanthanum).tier(8).CEtFactor(10.0) - .chain(CMaterials.cerium).CEtFactor(30.0) - .chain(CMaterials.praseodymium).CEtFactor(90.0) - .chain(CMaterials.neodymium).tier(9).CEtFactor(20.0) - .chain(CMaterials.promethium).tier(10).CEtFactor(10.0) - .chain(CMaterials.samarium).tier(11).CEtFactor(20.0) - .chain(CMaterials.europium).tier(12).CEtFactor(60.0) + .tier(7) + .CEtFactor(10.0) + .duration(200) + .chain(CMaterials.calcium) + .CEtFactor(20.0) + .chain(CMaterials.strontium) + .CEtFactor(30.0) + .chain(CMaterials.barium) + .CEtFactor(50.0) + .chain(CMaterials.lanthanum) + .tier(8) + .CEtFactor(10.0) + .chain(CMaterials.cerium) + .CEtFactor(30.0) + .chain(CMaterials.praseodymium) + .CEtFactor(90.0) + .chain(CMaterials.neodymium) + .tier(9) + .CEtFactor(20.0) + .chain(CMaterials.promethium) + .tier(10) + .CEtFactor(10.0) + .chain(CMaterials.samarium) + .tier(11) + .CEtFactor(20.0) + .chain(CMaterials.europium) + .tier(12) + .CEtFactor(60.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.zirconium) .output(CMaterials.titanium) - .tier(8).CEtFactor(60.0).duration(200) - .chain(CMaterials.vanadium).tier(9).CEtFactor(60.0) + .tier(8) + .CEtFactor(60.0) + .duration(200) + .chain(CMaterials.vanadium) + .tier(9) + .CEtFactor(60.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.manganese) .output(CMaterials.iron) - .tier(7).CEtFactor(90.0).duration(200) - .chain(CMaterials.cobalt).tier(8).CEtFactor(30.0) - .chain(CMaterials.nickel).CEtFactor(80.0) - .chain(CMaterials.palladium).tier(9).CEtFactor(40.0) + .tier(7) + .CEtFactor(90.0) + .duration(200) + .chain(CMaterials.cobalt) + .tier(8) + .CEtFactor(30.0) + .chain(CMaterials.nickel) + .CEtFactor(80.0) + .chain(CMaterials.palladium) + .tier(9) + .CEtFactor(40.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.zinc) .output(CMaterials.copper) - .tier(8).CEtFactor(20.0).duration(200) - .chain(CMaterials.silver).tier(9).CEtFactor(10.0) - .chain(CMaterials.gold).tier(9).CEtFactor(50.0) - .chain(CMaterials.palladium).tier(10).CEtFactor(30.0) - .chain(CMaterials.iridium).tier(11).CEtFactor(10.0) - .chain(CMaterials.osmium).tier(11).CEtFactor(30.0) - .chain(CMaterials.rhenium).tier(12).CEtFactor(10.0) + .tier(8) + .CEtFactor(20.0) + .duration(200) + .chain(CMaterials.silver) + .tier(9) + .CEtFactor(10.0) + .chain(CMaterials.gold) + .tier(9) + .CEtFactor(50.0) + .chain(CMaterials.palladium) + .tier(10) + .CEtFactor(30.0) + .chain(CMaterials.iridium) + .tier(11) + .CEtFactor(10.0) + .chain(CMaterials.osmium) + .tier(11) + .CEtFactor(30.0) + .chain(CMaterials.rhenium) + .tier(12) + .CEtFactor(10.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.hafnium) .output(CMaterials.tantalum) - .tier(8).CEtFactor(70.0).duration(200) - .chain(CMaterials.tungsten).tier(9).CEtFactor(40.0) - .chain(CMaterials.molybdenum).tier(10).CEtFactor(20.0) - .chain(CMaterials.chromium).tier(11).CEtFactor(10.0) + .tier(8) + .CEtFactor(70.0) + .duration(200) + .chain(CMaterials.tungsten) + .tier(9) + .CEtFactor(40.0) + .chain(CMaterials.molybdenum) + .tier(10) + .CEtFactor(20.0) + .chain(CMaterials.chromium) + .tier(11) + .CEtFactor(10.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.ingot) .input(CMaterials.lead) .output(CMaterials.tin) - .tier(7).CEtFactor(50.0).duration(200) - .chain(CMaterials.antimony).tier(8).CEtFactor(20.0) - .chain(CMaterials.bismuth).tier(9).CEtFactor(10.0) + .tier(7) + .CEtFactor(50.0) + .duration(200) + .chain(CMaterials.antimony) + .tier(8) + .CEtFactor(20.0) + .chain(CMaterials.bismuth) + .tier(9) + .CEtFactor(10.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.dust) .input(CMaterials.silicon) .output(CMaterials.phosphorus) - .tier(7).CEtFactor(10.0).duration(200) - .chain(CMaterials.sulfur).CEtFactor(30.0) + .tier(7) + .CEtFactor(10.0) + .duration(200) + .chain(CMaterials.sulfur) + .CEtFactor(30.0) .buildAndRegister() CRecipes.MATTER_TRANSFORMER.builder() .defaultPrefix(OrePrefix.dust) .input(CMaterials.industrialClay) .output(CMaterials.carbon) - .CEt(ClayEnergy.of(1)).tier(7) + .CEt(ClayEnergy.of(1)) + .tier(7) .duration(200) .chain(CMaterials.graphite) .chain(CMaterials.charcoal) @@ -283,4 +406,4 @@ object MatterTransformerRecipeLoader { .chain(CMaterials.lapis) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MillingMachineRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MillingMachineRecipeLoader.kt index db504de6a..56dcbad1a 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MillingMachineRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/MillingMachineRecipeLoader.kt @@ -10,22 +10,31 @@ object MillingMachineRecipeLoader { fun registerRecipes() { val registry = CRecipes.MILLING_MACHINE - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.denseClay) .output(MetaItemClayParts.ClayCircuitBoard) - .tier(0).CEtByTier(0).duration(32) + .tier(0) + .CEtByTier(0) + .duration(32) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.industrialClay) .output(MetaItemClayParts.ClayCircuitBoard) - .tier(0).CEtByTier(0).duration(1) + .tier(0) + .CEtByTier(0) + .duration(1) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.plate, CMaterials.advancedIndustrialClay) .output(MetaItemClayParts.CeeBoard) - .tier(3).CEt(ClayEnergy.micro(20)).duration(32) + .tier(3) + .CEt(ClayEnergy.micro(20)) + .duration(32) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/PipeDrawingRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/PipeDrawingRecipeLoader.kt index b14689dc3..dd49aab31 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/PipeDrawingRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/PipeDrawingRecipeLoader.kt @@ -11,8 +11,10 @@ object PipeDrawingRecipeLoader { CRecipes.PIPE_DRAWING_MACHINE.builder() .input(OrePrefix.cylinder, material) .output(OrePrefix.pipe, material, 2) - .tier(0).CEt(ClayEnergy.micro(10)).duration(3) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(3) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/SolarClayFabricatorRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/SolarClayFabricatorRecipeLoader.kt index 1d56e9d39..fb5239541 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/SolarClayFabricatorRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/SolarClayFabricatorRecipeLoader.kt @@ -8,8 +8,14 @@ object SolarClayFabricatorRecipeLoader { fun registerRecipes() { val block = OrePrefix.block - val clays = mutableListOf(CMaterials.clay, CMaterials.denseClay, CMaterials.compressedClay, - CMaterials.industrialClay, CMaterials.advancedIndustrialClay) + val clays = + mutableListOf( + CMaterials.clay, + CMaterials.denseClay, + CMaterials.compressedClay, + CMaterials.industrialClay, + CMaterials.advancedIndustrialClay + ) for (clay in clays) CRecipes.SOLAR_1.register { clayInput(block, clay).tier(5) } @@ -26,7 +32,8 @@ object SolarClayFabricatorRecipeLoader { CRecipes.SOLAR_3.builder() .input(OrePrefix.ingot, CMaterials.lithium) .output(OrePrefix.block, CMaterials.compressedEnergeticClay4) - .tier(7).duration(16699) + .tier(7) + .duration(16699) .buildAndRegister() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/WireDrawingRecipeLoader.kt b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/WireDrawingRecipeLoader.kt index 5a374d528..3f664b817 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/WireDrawingRecipeLoader.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/loaders/recipe/WireDrawingRecipeLoader.kt @@ -11,30 +11,42 @@ object WireDrawingRecipeLoader { fun registerRecipes() { val registry = CRecipes.WIRE_DRAWING_MACHINE - registry.builder() + registry + .builder() .input(Items.CLAY_BALL) .output(OrePrefix.stick, CMaterials.clay) - .tier(0).CEt(ClayEnergy.micro(10)).duration(1) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(1) .buildAndRegister() for ((i, material) in listOf(CMaterials.clay, CMaterials.denseClay).withIndex()) { - registry.builder() + registry + .builder() .input(OrePrefix.smallDisc, material) .output(OrePrefix.stick, material) - .tier(0).CEt(ClayEnergy.micro(10)).duration(1 * (i + 1)) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(1 * (i + 1)) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.pipe, material) .output(OrePrefix.stick, material, 4) - .tier(0).CEt(ClayEnergy.micro(10)).duration(1 * (i + 1)) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(1 * (i + 1)) .buildAndRegister() - registry.builder() + registry + .builder() .input(OrePrefix.cylinder, material) .output(OrePrefix.stick, material, 8) - .tier(0).CEt(ClayEnergy.micro(10)).duration(3 * (i + 1)) + .tier(0) + .CEt(ClayEnergy.micro(10)) + .duration(3 * (i + 1)) .buildAndRegister() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AdvancedRangedMinerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AdvancedRangedMinerMetaTileEntity.kt index 377197265..70c7b7761 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AdvancedRangedMinerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AdvancedRangedMinerMetaTileEntity.kt @@ -25,27 +25,31 @@ import net.minecraft.world.World import net.minecraft.world.WorldServer import net.minecraftforge.common.util.FakePlayerFactory -class AdvancedRangedMinerMetaTileEntity( - metaTileEntityId: ResourceLocation, - tier: ITier -) : RangedMinerMetaTileEntity(metaTileEntityId, tier, "advanced_ranged_miner") { +class AdvancedRangedMinerMetaTileEntity(metaTileEntityId: ResourceLocation, tier: ITier) : + RangedMinerMetaTileEntity(metaTileEntityId, tier, "advanced_ranged_miner") { override val faceTexture: ResourceLocation = clayiumId("blocks/adv_miner") private val extraFilters = ClayiumItemStackHandler(this, 2) - private val fortuneFilter get() = extraFilters.getStackInSlot(0).getCapability(ClayiumCapabilities.ITEM_FILTER) - private val silkTouchFilter get() = extraFilters.getStackInSlot(1).getCapability(ClayiumCapabilities.ITEM_FILTER) + private val fortuneFilter + get() = extraFilters.getStackInSlot(0).getCapability(ClayiumCapabilities.ITEM_FILTER) + + private val silkTouchFilter + get() = extraFilters.getStackInSlot(1).getCapability(ClayiumCapabilities.ITEM_FILTER) override fun mine(world: World, pos: BlockPos, state: IBlockState): Boolean { val silkFilter = silkTouchFilter val fortuneFilter = fortuneFilter val drops = NonNullList.create() - if (silkFilter != null && silkFilter.test(state.toItemStack()) - && world is WorldServer - && state.block.canSilkHarvest(world, pos, state, FakePlayerFactory.getMinecraft(world))) - { + if ( + silkFilter != null && + silkFilter.test(state.toItemStack()) && + world is WorldServer && + state.block.canSilkHarvest(world, pos, state, FakePlayerFactory.getMinecraft(world)) + ) { drops.add(BlockReflect.getSilkTouchDrop(state.block, state)) } else { - val fortune = if (fortuneFilter != null && fortuneFilter.test(state.toItemStack())) 3 else 0 + val fortune = + if (fortuneFilter != null && fortuneFilter.test(state.toItemStack())) 3 else 0 state.block.getDrops(drops, world, pos, state, fortune) } if (!TransferUtils.insertToHandler(itemInventory, drops, true)) return false @@ -56,15 +60,29 @@ class AdvancedRangedMinerMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(extraFilters, 0).filter { it.hasCapability(ClayiumCapabilities.ITEM_FILTER) }) - .background(ClayGuiTextures.FILTER_SLOT) - .top(12 + 18 + 2).right(24) - .tooltipBuilder { it.addLine(IKey.lang("enchantment.lootBonusDigger")) } + .child( + ItemSlot() + .slot( + SyncHandlers.phantomItemSlot(extraFilters, 0).filter { + it.hasCapability(ClayiumCapabilities.ITEM_FILTER) + } + ) + .background(ClayGuiTextures.FILTER_SLOT) + .top(12 + 18 + 2) + .right(24) + .tooltipBuilder { it.addLine(IKey.lang("enchantment.lootBonusDigger")) } ) - .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(extraFilters, 1).filter { it.hasCapability(ClayiumCapabilities.ITEM_FILTER) }) - .background(ClayGuiTextures.FILTER_SLOT) - .top(12 + 18 * 2 + 2 * 2).right(24) - .tooltipBuilder { it.addLine(IKey.lang("enchantment.untouching")) } + .child( + ItemSlot() + .slot( + SyncHandlers.phantomItemSlot(extraFilters, 1).filter { + it.hasCapability(ClayiumCapabilities.ITEM_FILTER) + } + ) + .background(ClayGuiTextures.FILTER_SLOT) + .top(12 + 18 * 2 + 2 * 2) + .right(24) + .tooltipBuilder { it.addLine(IKey.lang("enchantment.untouching")) } ) } @@ -79,4 +97,4 @@ class AdvancedRangedMinerMetaTileEntity( super.readFromNBT(data) extraFilters.deserializeNBT(data.getCompoundTag("extraFilters")) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AutoClayCondenserMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AutoClayCondenserMetaTileEntity.kt index ffd1e41f2..8697e32e5 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AutoClayCondenserMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/AutoClayCondenserMetaTileEntity.kt @@ -43,24 +43,33 @@ private const val EXPOSED_INV_SIZE = (ROWS - 1) * COLS class AutoClayCondenserMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, validInputModesLists[1], validOutputModesLists[1], name = "auto_clay_condenser") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModesLists[1], + validOutputModesLists[1], + name = "auto_clay_condenser" + ) { override val faceTexture = clayiumId("blocks/auto_clay_condenser") - override val itemInventory = object : NotifiableItemStackHandler(this, ROWS * COLS, this, isExport = false) { - override fun isItemValid(slot: Int, stack: ItemStack): Boolean { - return getMaterial(stack)?.getPropOrNull(CPropertyKey.CLAY) != null + override val itemInventory = + object : NotifiableItemStackHandler(this, ROWS * COLS, this, isExport = false) { + override fun isItemValid(slot: Int, stack: ItemStack): Boolean { + return getMaterial(stack)?.getPropOrNull(CPropertyKey.CLAY) != null + } } - } override val importItems = RangedItemHandlerProxy(itemInventory, 0..EXPOSED_INV_SIZE) override val exportItems = itemInventory @Suppress("Unused") private val ioHandler = AutoIoHandler.Combined(this) - private val maxCompressedClay = object : ClayiumItemStackHandler(this, 1) { - override fun isItemValid(slot: Int, stack: ItemStack): Boolean { - return getMaterial(stack)?.getPropOrNull(CPropertyKey.CLAY) != null + private val maxCompressedClay = + object : ClayiumItemStackHandler(this, 1) { + override fun isItemValid(slot: Int, stack: ItemStack): Boolean { + return getMaterial(stack)?.getPropOrNull(CPropertyKey.CLAY) != null + } } - } override fun update() { super.update() @@ -78,24 +87,51 @@ class AutoClayCondenserMetaTileEntity( override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { syncManager.registerSlotGroup("compressor_inventory", 4) val matrix = (0..= maxCompress || clay == null || compressed == null) + if ( + m == null || + m.tier == null || + m.tier.numeric >= maxCompress || + clay == null || + compressed == null + ) continue val compressedStack = OreDictUnifier.get(OrePrefix.block, compressed, amount = 1) itemInventory.extractItem(i, 9, false) @@ -157,14 +201,22 @@ class AutoClayCondenserMetaTileEntity( } private fun compressClayMk2() { - val maxCompress = getMaterial(maxCompressedClay.getStackInSlot(0))?.tier?.numeric ?: Int.MAX_VALUE - val storedItems = (0..= maxCompress || clay == null || compressed == null) { + if ( + m == null || + m.tier == null || + m.tier.numeric >= maxCompress || + clay == null || + compressed == null + ) { ItemHandlerHelper.insertItem(itemInventory, stack, false) continue } @@ -179,7 +231,11 @@ class AutoClayCondenserMetaTileEntity( val remain0 = ItemHandlerHelper.insertItem(itemInventory, compressedStack, true) // simulate is set to true above, // so grow(64) to virtually reproduce the (simulate = false) situation - val stack1 = stack.copy().apply { shrink(compressedAmount * 9); grow(64) } + val stack1 = + stack.copy().apply { + shrink(compressedAmount * 9) + grow(64) + } val remain1 = ItemHandlerHelper.insertItem(itemInventory, stack1, true) if (remain0.isEmpty && remain1.isEmpty) { ItemHandlerHelper.insertItem(itemInventory, compressedStack, false) @@ -193,20 +249,29 @@ class AutoClayCondenserMetaTileEntity( override fun getCapability(capability: Capability, facing: EnumFacing?): T? { if (capability === CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (facing == null) return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) + if (facing == null) + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemInventory) val i = facing.index - val inputSlots = when (inputModes[i]) { - ALL -> createFilteredItemHandler(importItems, facing) - else -> null - } - val outputSlots = when (outputModes[i]) { - ALL -> createFilteredItemHandler(FilteredItemHandler(exportItems) { itemStack -> - val maxCompress = maxCompressedClay.getStackInSlot(0) - maxCompress.isEmpty || maxCompress.canStackWith(itemStack) - }, facing) - else -> null - } - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(ItemHandlerProxy(inputSlots, outputSlots)) + val inputSlots = + when (inputModes[i]) { + ALL -> createFilteredItemHandler(importItems, facing) + else -> null + } + val outputSlots = + when (outputModes[i]) { + ALL -> + createFilteredItemHandler( + FilteredItemHandler(exportItems) { itemStack -> + val maxCompress = maxCompressedClay.getStackInSlot(0) + maxCompress.isEmpty || maxCompress.canStackWith(itemStack) + }, + facing + ) + else -> null + } + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast( + ItemHandlerProxy(inputSlots, outputSlots) + ) } return super.getCapability(capability, facing) } @@ -220,4 +285,4 @@ class AutoClayCondenserMetaTileEntity( super.readFromNBT(data) maxCompressedClay.deserializeNBT(data.getCompoundTag("maxCompressedClay")) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/BlockBreakerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/BlockBreakerMetaTileEntity.kt index dd55d749c..315f4a699 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/BlockBreakerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/BlockBreakerMetaTileEntity.kt @@ -13,25 +13,23 @@ import net.minecraft.util.ResourceLocation import net.minecraft.util.math.BlockPos import net.minecraftforge.common.property.IExtendedBlockState -class BlockBreakerMetaTileEntity( - metaTileEntityId: ResourceLocation, - tier: ITier -) : AbstractMinerMetaTileEntity(metaTileEntityId, tier, "block_breaker") { +class BlockBreakerMetaTileEntity(metaTileEntityId: ResourceLocation, tier: ITier) : + AbstractMinerMetaTileEntity(metaTileEntityId, tier, "block_breaker") { override val faceTexture: ResourceLocation = clayiumId("blocks/miner") - @Suppress("unused") - val ioHandler = AutoIoHandler.Exporter(this) + @Suppress("unused") val ioHandler = AutoIoHandler.Exporter(this) override val maxBlocksPerTick: Int = 1 private val backingRange = Cuboid6() private val backingBlockPos = BlockPos.MutableBlockPos() - override val rangeRelative: Cuboid6 get() { - backingBlockPos.setPos(BlockPos.ORIGIN) - backingBlockPos.move(this.frontFacing.opposite) - return backingRange.set(backingBlockPos, backingBlockPos.add(1, 1, 1)) - } + override val rangeRelative: Cuboid6 + get() { + backingBlockPos.setPos(BlockPos.ORIGIN) + backingBlockPos.move(this.frontFacing.opposite) + return backingRange.set(backingBlockPos, backingBlockPos.add(1, 1, 1)) + } override fun drawEnergy(accelerationRate: Double): Boolean { // no energy required @@ -50,11 +48,16 @@ class BlockBreakerMetaTileEntity( return BlockBreakerMetaTileEntity(metaTileEntityId, tier) } - override fun overlayQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun overlayQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { super.overlayQuads(quads, state, side, rand) if (state == null || side == null || state !is IExtendedBlockState) return if (side == this.frontFacing.opposite) { quads.add(MINER_BACK[side.index]) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaCondenserMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaCondenserMetaTileEntity.kt index 92396e1d0..71ccfdf6d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaCondenserMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaCondenserMetaTileEntity.kt @@ -20,11 +20,12 @@ class CaCondenserMetaTileEntity( val energyHolder = ClayEnergyHolder(this) val resonanceManager = ResonanceManager(this, 2) - private val craftTimeMultiplier = when (tier.numeric) { - 10 -> 10 - 11 -> 100 - else -> 1 - } + private val craftTimeMultiplier = + when (tier.numeric) { + 10 -> 10 + 11 -> 100 + else -> 1 + } override val faceTexture = clayiumId("blocks/ca_condenser") @@ -34,13 +35,18 @@ class CaCondenserMetaTileEntity( return CaCondenserMetaTileEntity(metaTileEntityId, tier) } - private inner class RecipeLogicCaCondenser : RecipeLogicEnergy(this@CaCondenserMetaTileEntity, recipeRegistry, energyHolder) { - //todo 生成される量を加工開始時にも考慮するべきか否か + private inner class RecipeLogicCaCondenser : + RecipeLogicEnergy(this@CaCondenserMetaTileEntity, recipeRegistry, energyHolder) { + // todo 生成される量を加工開始時にも考慮するべきか否か override fun completeWork() { currentProgress = 0 - TransferUtils.insertToHandler(metaTileEntity.exportItems, itemOutputs.map { it.apply { - count = (ln(resonanceManager.resonance).toInt() + 1).coerceIn(1..64) - } } + TransferUtils.insertToHandler( + metaTileEntity.exportItems, + itemOutputs.map { + it.apply { + count = (ln(resonanceManager.resonance).toInt() + 1).coerceIn(1..64) + } + } ) } @@ -48,4 +54,4 @@ class CaCondenserMetaTileEntity( return craftTimeMultiplier.toLong() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaInjectorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaInjectorMetaTileEntity.kt index b9d1b3fa6..a9fd4723f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaInjectorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CaInjectorMetaTileEntity.kt @@ -15,7 +15,8 @@ class CaInjectorMetaTileEntity( ) : WorkableMetaTileEntity(metaTileEntityId, tier, CRecipes.CA_INJECTOR) { val resonanceManager = ResonanceManager(this, 2) override val faceTexture = clayiumId("blocks/ca_injector") - override val workable = RecipeLogicCaInjector(this, recipeRegistry, clayEnergyHolder, resonanceManager) + override val workable = + RecipeLogicCaInjector(this, recipeRegistry, clayEnergyHolder, resonanceManager) override fun createMetaTileEntity(): MetaTileEntity { return CaInjectorMetaTileEntity(metaTileEntityId, tier) @@ -23,14 +24,12 @@ class CaInjectorMetaTileEntity( companion object { /** - * Required Antimatter amounts: - * 1->2: 1, 2->3: 2, 3->4: 2, 4->5: 3, - * 5->6: 4, 6->7: 5, 7->8: 8, 8->9: 10, - * 9->10: 13, 10->11: 17, 11->12: 23, 12->13: 30 + * Required Antimatter amounts: 1->2: 1, 2->3: 2, 3->4: 2, 4->5: 3, 5->6: 4, 6->7: 5, 7->8: + * 8, 8->9: 10, 9->10: 13, 10->11: 17, 11->12: 23, 12->13: 30 */ val ANTIMATTER_AMOUNTS = intArrayOf(1, 2, 2, 3, 4, 5, 8, 10, 13, 17, 23, 30) const val DURATION = 4000 const val CE_FACTOR = 3.0 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CentrifugeMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CentrifugeMetaTileEntity.kt index dd976ae22..3f92b21d8 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CentrifugeMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CentrifugeMetaTileEntity.kt @@ -31,61 +31,94 @@ class CentrifugeMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, outputSize: Int, -) : WorkableMetaTileEntity(metaTileEntityId, tier, validInputModesLists[1], validOutputModesLists[1], CRecipes.CENTRIFUGE, outputSize = outputSize) { +) : + WorkableMetaTileEntity( + metaTileEntityId, + tier, + validInputModesLists[1], + validOutputModesLists[1], + CRecipes.CENTRIFUGE, + outputSize = outputSize + ) { @Suppress("Unused") private val ioHandler = AutoIoHandler.Combined(this) override val faceTexture = clayiumId("blocks/centrifuge") - override val workable = RecipeLogicEnergy(this, recipeRegistry, clayEnergyHolder) - .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) - .setEnergyConsumingMultiplier(ConfigTierBalance.crafting::getConsumingEnergyMultiplier) + override val workable = + RecipeLogicEnergy(this, recipeRegistry, clayEnergyHolder) + .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) + .setEnergyConsumingMultiplier(ConfigTierBalance.crafting::getConsumingEnergyMultiplier) override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - return ModularPanel.defaultPanel(this.metaTileEntityId.toString(), GUI_DEFAULT_WIDTH, 104 + ((outputSize + 1) * 9 + 46)) - .columnWithPlayerInv { - child(buildMainParentWidget(syncManager)) - } + return ModularPanel.defaultPanel( + this.metaTileEntityId.toString(), + GUI_DEFAULT_WIDTH, + 104 + ((outputSize + 1) * 9 + 46) + ) + .columnWithPlayerInv { child(buildMainParentWidget(syncManager)) } } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - val slotsAndProgressBar = Row() - .widthRel(0.7f).height(26) - .align(Alignment.Center) - .top(30) - .child(workable.getProgressBar(syncManager).align(Alignment.Center)) + val slotsAndProgressBar = + Row() + .widthRel(0.7f) + .height(26) + .align(Alignment.Center) + .top(30) + .child(workable.getProgressBar(syncManager).align(Alignment.Center)) - slotsAndProgressBar.child(largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) - .align(Alignment.CenterLeft)) - slotsAndProgressBar.child(SlotGroupWidget.builder() - .matrix(*(0.. Long -) : MetaTileEntity(metaTileEntityId, tier, bufferValidInputModes, validOutputModesLists[1], name = "clay_fabricator") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + bufferValidInputModes, + validOutputModesLists[1], + name = "clay_fabricator" + ) { override val faceTexture = clayiumId("blocks/clay_fabricator") override val importItems = NotifiableItemStackHandler(this, 1, this, isExport = false) @@ -60,25 +67,47 @@ class ClayFabricatorMetaTileEntity( } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - syncManager.syncValue("clay_energy", SyncHandlers.longNumber({ workable.currentCe.energy }, { workable.currentCe = ClayEnergy(it) })) - val slotsAndProgressBar = Row().widthRel(0.7f).height(26) - .child(largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) - .align(Alignment.CenterLeft)) - .child(workable.getProgressBar(syncManager).align(Alignment.Center)) - .child(largeSlot(SyncHandlers.itemSlot(exportItems, 0).accessibility(false, true)) - .align(Alignment.CenterRight)) + syncManager.syncValue( + "clay_energy", + SyncHandlers.longNumber( + { workable.currentCe.energy }, + { workable.currentCe = ClayEnergy(it) } + ) + ) + val slotsAndProgressBar = + Row() + .widthRel(0.7f) + .height(26) + .child( + largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) + .align(Alignment.CenterLeft) + ) + .child(workable.getProgressBar(syncManager).align(Alignment.Center)) + .child( + largeSlot(SyncHandlers.itemSlot(exportItems, 0).accessibility(false, true)) + .align(Alignment.CenterRight) + ) return super.buildMainParentWidget(syncManager) .child(slotsAndProgressBar.align(Alignment.Center)) - .child(IKey.dynamic { workable.currentCe.format() }.asWidgetResizing() - .left(0).bottom(10)) + .child( + IKey.dynamic { workable.currentCe.format() }.asWidgetResizing().left(0).bottom(10) + ) } - override fun createMetaTileEntity() = ClayFabricatorMetaTileEntity(metaTileEntityId, tier, maxClayCompressionLevel, craftTimeLogic) + override fun createMetaTileEntity() = + ClayFabricatorMetaTileEntity( + metaTileEntityId, + tier, + maxClayCompressionLevel, + craftTimeLogic + ) - private inner class ClayFabricatorRecipeLogic : AbstractWorkable(this@ClayFabricatorMetaTileEntity) { + private inner class ClayFabricatorRecipeLogic : + AbstractWorkable(this@ClayFabricatorMetaTileEntity) { private var cePerTick = ClayEnergy.ZERO var currentCe = ClayEnergy.ZERO + override fun trySearchNewRecipe() { val inputStack = importItems.getStackInSlot(0) if (inputStack.isEmpty) return invalidateInput() @@ -92,7 +121,8 @@ class ClayFabricatorMetaTileEntity( if (inputItem is ItemBlockMaterial) { val material = inputItem.blockMaterial.getCMaterial(inputStack) val clayProperty = material.getPropOrNull(CPropertyKey.CLAY) - if (clayProperty == null || clayProperty.compressionLevel > maxClayCompressionLevel) return invalidateInput() + if (clayProperty == null || clayProperty.compressionLevel > maxClayCompressionLevel) + return invalidateInput() prepareCMaterialClay(material, clayProperty, inputStack.count) } } @@ -115,10 +145,14 @@ class ClayFabricatorMetaTileEntity( return } this.itemOutputs = outputs - this.requiredProgress = (craftTimeLogic(clayProperty.compressionLevel, count) / overclockHandler.compensatedFactor).toLong() + this.requiredProgress = + (craftTimeLogic(clayProperty.compressionLevel, count) / + overclockHandler.compensatedFactor) + .toLong() this.currentProgress = 1 if (clayProperty.energy != null) { - this.cePerTick = ClayEnergy((clayProperty.energy * count).energy / this.requiredProgress) + this.cePerTick = + ClayEnergy((clayProperty.energy * count).energy / this.requiredProgress) } } @@ -151,11 +185,20 @@ class ClayFabricatorMetaTileEntity( cePerTick = ClayEnergy(data.getLong("cePerTick")) } - override fun addProbeInfo(mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { super.addProbeInfo(mode, probeInfo, player, world, state, hitData) if (isWorking) { val cet = cePerTick * overclockHandler.accelerationFactor - probeInfo.text("Generating ${TextFormatting.GREEN}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t") + probeInfo.text( + "Generating ${TextFormatting.GREEN}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t" + ) } } } @@ -165,20 +208,53 @@ class ClayFabricatorMetaTileEntity( * craft time functions * calculation logic is same as original. you can find that on the japanese wiki page: https://clayium.wiki.fc2.com/wiki/%E6%A9%9F%E6%A2%B0 */ - private fun getCraftTime(compLevel: Int, stackCount: Int, maxCompLevel: Int, compMitigationFactor: Double, countMitigationFactor: Double, eff: Double): Long { - return (64 * 10.0.pow(maxCompLevel) * (stackCount.toDouble() / 64.0).pow(countMitigationFactor) * compMitigationFactor.pow(compLevel - maxCompLevel) * 20.0 / eff).toLong() + private fun getCraftTime( + compLevel: Int, + stackCount: Int, + maxCompLevel: Int, + compMitigationFactor: Double, + countMitigationFactor: Double, + eff: Double + ): Long { + return (64 * + 10.0.pow(maxCompLevel) * + (stackCount.toDouble() / 64.0).pow(countMitigationFactor) * + compMitigationFactor.pow(compLevel - maxCompLevel) * + 20.0 / eff) + .toLong() } fun mk1(compLevel: Int, stackCount: Int): Long { - return getCraftTime(compLevel, stackCount, maxCompLevel = 11, compMitigationFactor = 5.0, countMitigationFactor = 0.85, eff = 4.5*10.0.pow(7)) + return getCraftTime( + compLevel, + stackCount, + maxCompLevel = 11, + compMitigationFactor = 5.0, + countMitigationFactor = 0.85, + eff = 4.5 * 10.0.pow(7) + ) } fun mk2(compLevel: Int, stackCount: Int): Long { - return getCraftTime(compLevel, stackCount, maxCompLevel = 13, compMitigationFactor = 2.0, countMitigationFactor = 0.3, eff = 10.0.pow(9)) + return getCraftTime( + compLevel, + stackCount, + maxCompLevel = 13, + compMitigationFactor = 2.0, + countMitigationFactor = 0.3, + eff = 10.0.pow(9) + ) } fun mk3(compLevel: Int, stackCount: Int): Long { - return getCraftTime(compLevel, stackCount, maxCompLevel = 13, compMitigationFactor = 1.3, countMitigationFactor = 0.06, eff = 10.0.pow(12)) + return getCraftTime( + compLevel, + stackCount, + maxCompLevel = 13, + compMitigationFactor = 1.3, + countMitigationFactor = 0.06, + eff = 10.0.pow(12) + ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CobblestoneGeneratorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CobblestoneGeneratorMetaTileEntity.kt index fe496723e..7317182dd 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CobblestoneGeneratorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/CobblestoneGeneratorMetaTileEntity.kt @@ -13,26 +13,30 @@ import net.minecraft.util.ResourceLocation class CobblestoneGeneratorMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : AbstractItemGeneratorMetaTileEntity( - metaTileEntityId, tier, - validInputModes = onlyNoneList, validOutputModes = validOutputModesLists[1], - "cobblestone_generator", -) { +) : + AbstractItemGeneratorMetaTileEntity( + metaTileEntityId, + tier, + validInputModes = onlyNoneList, + validOutputModes = validOutputModesLists[1], + "cobblestone_generator", + ) { override val faceTexture = clayiumId("blocks/cobblestone_generator") override val generatingItem: ItemStack = ItemStack(Blocks.COBBLESTONE) override val progressPerItem = 100 - override val progressPerTick = when (tier.numeric) { - 1 -> 2 - 2 -> 5 - 3 -> 15 - 4 -> 50 - 5 -> 200 - 6 -> 1000 - 7 -> 8000 - else -> 1 - } + override val progressPerTick = + when (tier.numeric) { + 1 -> 2 + 2 -> 5 + 3 -> 15 + 4 -> 50 + 5 -> 200 + 6 -> 1000 + 7 -> 8000 + else -> 1 + } override fun createMetaTileEntity(): MetaTileEntity { return CobblestoneGeneratorMetaTileEntity(this.metaTileEntityId, this.tier) @@ -50,4 +54,4 @@ class CobblestoneGeneratorMetaTileEntity( } return false } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/DistributorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/DistributorMetaTileEntity.kt index 72a89d7b6..cf70e6083 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/DistributorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/DistributorMetaTileEntity.kt @@ -46,17 +46,29 @@ import kotlin.math.min class DistributorMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, bufferValidInputModes, validOutputModesLists[1], "distributor") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + bufferValidInputModes, + validOutputModesLists[1], + "distributor" + ) { - private val groupX = when (tier.numeric) { - 7, 8, 9 -> tier.numeric - 5 - else -> 1 - } - private val groupY = when (tier.numeric) { - 7, 8 -> 2 - 9 -> 3 - else -> 1 - } + private val groupX = + when (tier.numeric) { + 7, + 8, + 9 -> tier.numeric - 5 + else -> 1 + } + private val groupY = + when (tier.numeric) { + 7, + 8 -> 2 + 9 -> 3 + else -> 1 + } private val groups = List(groupX * groupY) { ClayiumItemStackHandler(this, 4) } @@ -66,9 +78,7 @@ class DistributorMetaTileEntity( private var groupIndex = 0 - @Suppress("unused") - @VisibleForTesting - val ioHandler = DistributorIoHandler() + @Suppress("unused") @VisibleForTesting val ioHandler = DistributorIoHandler() override fun onPlacement() { for (side in EnumFacing.entries) { @@ -82,39 +92,36 @@ class DistributorMetaTileEntity( } override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - val height = GUI_DEFAULT_HEIGHT - 50 + (18*2 * groupY + 2 * (groupY - 1)) + val height = GUI_DEFAULT_HEIGHT - 50 + (18 * 2 * groupY + 2 * (groupY - 1)) return ModularPanel.defaultPanel(translationKey, GUI_DEFAULT_WIDTH, height) - .columnWithPlayerInv { - child(buildMainParentWidget(syncManager)) - } + .columnWithPlayerInv { child(buildMainParentWidget(syncManager)) } } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - val groups = groups.mapIndexed { i, handler -> - syncManager.registerSlotGroup("group$i", 2) - val group = SlotGroupWidget.builder() - .matrix("II", "II") - .key('I') { j -> - ItemSlot().slot(SyncHandlers.itemSlot(handler, j).slotGroup("group$i")) - } - .build() - group - } - val slotGroupRows = groups.windowed(this.groupX, this.groupX).map { slotGroupList -> - val row = Row() - .size((18 * 2) * this.groupX + 2 * (this.groupX - 1), 18 * 2) - slotGroupList.forEachIndexed { i, g -> - row.child(g.marginLeft(2 * min(i, 1))) + val groups = + groups.mapIndexed { i, handler -> + syncManager.registerSlotGroup("group$i", 2) + val group = + SlotGroupWidget.builder() + .matrix("II", "II") + .key('I') { j -> + ItemSlot().slot(SyncHandlers.itemSlot(handler, j).slotGroup("group$i")) + } + .build() + group } - row - } - val column = Column() - .width(18 * 2 * this.groupX + 2 * (this.groupX - 1)) - .height(18 * 2 * this.groupY + 2 * (this.groupY - 1)) + val slotGroupRows = + groups.windowed(this.groupX, this.groupX).map { slotGroupList -> + val row = Row().size((18 * 2) * this.groupX + 2 * (this.groupX - 1), 18 * 2) + slotGroupList.forEachIndexed { i, g -> row.child(g.marginLeft(2 * min(i, 1))) } + row + } + val column = + Column() + .width(18 * 2 * this.groupX + 2 * (this.groupX - 1)) + .height(18 * 2 * this.groupY + 2 * (this.groupY - 1)) val w = super.buildMainParentWidget(syncManager) - slotGroupRows.forEachIndexed { i, row -> - column.child(row.marginTop(2 * min(i, 1))) - } + slotGroupRows.forEachIndexed { i, row -> column.child(row.marginTop(2 * min(i, 1))) } return w.child(column.align(Alignment.Center)) } @@ -127,31 +134,48 @@ class DistributorMetaTileEntity( } @SideOnly(Side.CLIENT) - override fun bakeQuads(getter: Function, faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val sprite = getter.apply(clayiumId("blocks/distributor")) distributorQuads = EnumFacing.entries.map { ModelTextures.createQuad(it, sprite) } } @SideOnly(Side.CLIENT) - override fun getQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun getQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { super.getQuads(quads, state, side, rand) if (state == null || side == null || state !is IExtendedBlockState) return quads.add(distributorQuads[side.index]) } - override fun onReplace(world: World, pos: BlockPos, newMetaTileEntity: MetaTileEntity, oldMteData: NBTTagCompound) { - CNbtUtils.handleInvSizeDifference(world, pos, oldMteData, IMPORT_INVENTORY, newMetaTileEntity.itemInventory) + override fun onReplace( + world: World, + pos: BlockPos, + newMetaTileEntity: MetaTileEntity, + oldMteData: NBTTagCompound + ) { + CNbtUtils.handleInvSizeDifference( + world, + pos, + oldMteData, + IMPORT_INVENTORY, + newMetaTileEntity.itemInventory + ) } override fun createMetaTileEntity(): MetaTileEntity { return DistributorMetaTileEntity(this.metaTileEntityId, this.tier) } - /** - * imported or exported -> pointer++ - * if the exportation is one lap behind, stop importing - */ - inner class DistributorIoHandler : AutoIoHandler.Combined(this@DistributorMetaTileEntity, isBuffer = true) { + /** imported or exported -> pointer++ if the exportation is one lap behind, stop importing */ + inner class DistributorIoHandler : + AutoIoHandler.Combined(this@DistributorMetaTileEntity, isBuffer = true) { private var oneLapBehind = false private var importPtr = 0 set(value) { @@ -159,12 +183,14 @@ class DistributorMetaTileEntity( if (field >= groups.size) field = 0 this.oneLapBehind = (field == exportPtr) } + private var exportPtr = 0 set(value) { field = value if (field >= groups.size) field = 0 this.oneLapBehind = false } + private var lastDirection = EnumFacing.DOWN override fun serializeNBT(): NBTTagCompound { @@ -190,33 +216,43 @@ class DistributorMetaTileEntity( val importItems = groups[importPtr] for (side in EnumFacing.entries) { if (!(remainingImport > 0 && isImporting(side))) continue - remainingImport = transferItemStack( - from = metaTileEntity.getNeighbor(side)?.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) ?: continue, - to = importItems, - amount = remainingImport, - ) + remainingImport = + transferItemStack( + from = + metaTileEntity + .getNeighbor(side) + ?.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) ?: continue, + to = importItems, + amount = remainingImport, + ) } if (remainingImport != amountPerAction) importPtr++ } override fun exportToNeighbors() { - val neighborMap = EnumFacing.entries.enumMapNotNull { side -> - if (!isExporting(side)) return@enumMapNotNull null - getNeighbor(side)?.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.opposite) - } - @Suppress("UsePropertyAccessSyntax") //synthetic properties + val neighborMap = + EnumFacing.entries.enumMapNotNull { side -> + if (!isExporting(side)) return@enumMapNotNull null + getNeighbor(side) + ?.getCapability( + CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + side.opposite + ) + } + @Suppress("UsePropertyAccessSyntax") // synthetic properties if (neighborMap.isEmpty()) return val currentInv = groups[exportPtr] if (distribute(currentInv, neighborMap)) exportPtr++ } - /** - * @return true if insertion was proceeded, false if no insertion was proceeded - */ + /** @return true if insertion was proceeded, false if no insertion was proceeded */ @VisibleForTesting fun distribute(source: IItemHandler, neighborMap: Map): Boolean { - //todo CLEANUP? + // todo CLEANUP? var remainingExport = amountPerAction for (exportSlot in 0.. = generateSequence(lastDirection.next()) { current -> - @Suppress("UsePropertyAccessSyntax") //synthetic properties - if (neighbors.isEmpty()) { - return@generateSequence null - } - else { - for (i in 0..<6) { - val next = current.next() - if (neighbors.containsKey(next)) return@generateSequence next + val nextNeighbor: Iterator = + generateSequence(lastDirection.next()) { current -> + @Suppress("UsePropertyAccessSyntax") // synthetic properties + if (neighbors.isEmpty()) { + return@generateSequence null + } else { + for (i in 0..<6) { + val next = current.next() + if (neighbors.containsKey(next)) return@generateSequence next + } + return@generateSequence null + } } - return@generateSequence null - } - }.iterator() + .iterator() notInserted += exportedCount % neighbors.size val toInsertCount1 = exported.copyWithSize(1) @@ -287,4 +324,4 @@ class DistributorMetaTileEntity( companion object { private lateinit var distributorQuads: List } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/EnergyConverterMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/EnergyConverterMetaTileEntity.kt index 3132ee974..bbad4b4a9 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/EnergyConverterMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/EnergyConverterMetaTileEntity.kt @@ -41,7 +41,9 @@ class EnergyConverterMetaTileEntity( override val useFaceForAllSides: Boolean = true init { - require(tier.numeric in 4..13) { "EnergyConverterMetaTileEntity can only be created with a tier between 4 and 13" } + require(tier.numeric in 4..13) { + "EnergyConverterMetaTileEntity can only be created with a tier between 4 and 13" + } } override val importItems = EmptyItemStackHandler @@ -49,25 +51,33 @@ class EnergyConverterMetaTileEntity( override val itemInventory = EmptyItemStackHandler private val clayEnergyHolder = ClayEnergyHolder(this) - private val feStorage = EnergyStorageSerializable(ConfigCore.feGen.feStorageSize[tier.numeric - 4]) + private val feStorage = + EnergyStorageSerializable(ConfigCore.feGen.feStorageSize[tier.numeric - 4]) private val exposedFeStorage = EnergyStorageExportOnly(feStorage) private val rawFePerTick = ConfigCore.feGen.fePerTick[tier.numeric - 4] - private val fePerTick: Int get() = (rawFePerTick * overclock).toInt() - private val rawCePerTick: ClayEnergy = ClayEnergy.of(1) * ConfigCore.feGen.cePerTick[tier.numeric - 4] - private val cePerTick: ClayEnergy get() = (rawCePerTick * overclock) + private val fePerTick: Int + get() = (rawFePerTick * overclock).toInt() + + private val rawCePerTick: ClayEnergy = + ClayEnergy.of(1) * ConfigCore.feGen.cePerTick[tier.numeric - 4] + private val cePerTick: ClayEnergy + get() = (rawCePerTick * overclock) override fun update() { super.update() if (isRemote) return - if (feStorage.receiveEnergy(fePerTick, true) == fePerTick - && clayEnergyHolder.drawEnergy(cePerTick, false)) { + if ( + feStorage.receiveEnergy(fePerTick, true) == fePerTick && + clayEnergyHolder.drawEnergy(cePerTick, false) + ) { feStorage.receiveEnergy(fePerTick, false) } - //todo: control output allowed sides + // todo: control output allowed sides for (side in EnumFacing.entries) { - val receiver = this.getNeighbor(side)?.getCapability(CapabilityEnergy.ENERGY, side.opposite) + val receiver = + this.getNeighbor(side)?.getCapability(CapabilityEnergy.ENERGY, side.opposite) if (receiver != null && feStorage.energyStored > 0) { val maxTransfer = feStorage.extractEnergy(fePerTick, true) val actualTransfer = receiver.receiveEnergy(maxTransfer, false) @@ -83,25 +93,52 @@ class EnergyConverterMetaTileEntity( override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { return ModularPanel.defaultPanel(translationKey, GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT + 10) - .columnWithPlayerInv { - child(buildMainParentWidget(syncManager)) - } + .columnWithPlayerInv { child(buildMainParentWidget(syncManager)) } } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - syncManager.syncValue("feStorage", SyncHandlers.intNumber(feStorage::getEnergyStored, feStorage::setEnergy)) + syncManager.syncValue( + "feStorage", + SyncHandlers.intNumber(feStorage::getEnergyStored, feStorage::setEnergy) + ) return super.buildMainParentWidget(syncManager) - .child(clayEnergyHolder.createSlotWidget() - .align(Alignment.BottomRight)) - .child(clayEnergyHolder.createCeTextWidget(syncManager) - .left(0).bottom(10)) - .child(Column().widthRel(1f).height(8 * 3 + 3 * 2 + 10).align(Alignment.Center) - .child(IKey.dynamic { I18n.format("gui.clayium.energy_converter.storage", feStorage.energyStored, feStorage.maxEnergyStored) } - .asWidget().widthRel(1f)) - .child(IKey.dynamic { I18n.format("gui.clayium.energy_converter.rate", cePerTick.format(), fePerTick) } - .asWidget().widthRel(1f).margin(0, 3)) - .child(IKey.dynamic { I18n.format("gui.clayium.energy_converter.output", fePerTick) } - .asWidget().widthRel(1f)) + .child(clayEnergyHolder.createSlotWidget().align(Alignment.BottomRight)) + .child(clayEnergyHolder.createCeTextWidget(syncManager).left(0).bottom(10)) + .child( + Column() + .widthRel(1f) + .height(8 * 3 + 3 * 2 + 10) + .align(Alignment.Center) + .child( + IKey.dynamic { + I18n.format( + "gui.clayium.energy_converter.storage", + feStorage.energyStored, + feStorage.maxEnergyStored + ) + } + .asWidget() + .widthRel(1f) + ) + .child( + IKey.dynamic { + I18n.format( + "gui.clayium.energy_converter.rate", + cePerTick.format(), + fePerTick + ) + } + .asWidget() + .widthRel(1f) + .margin(0, 3) + ) + .child( + IKey.dynamic { + I18n.format("gui.clayium.energy_converter.output", fePerTick) + } + .asWidget() + .widthRel(1f) + ) ) } @@ -122,9 +159,20 @@ class EnergyConverterMetaTileEntity( } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) - tooltip.add(I18n.format("machine.clayium.energy_converter.tooltip.rate", cePerTick.format(), fePerTick)) + tooltip.add( + I18n.format( + "machine.clayium.energy_converter.tooltip.rate", + cePerTick.format(), + fePerTick + ) + ) tooltip.add(I18n.format("machine.clayium.energy_converter.tooltip.output", fePerTick)) } @@ -137,4 +185,4 @@ class EnergyConverterMetaTileEntity( super.readFromNBT(data) feStorage.deserializeNBT(data.getCompoundTag("feStorage")) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/MetaTileEntities.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/MetaTileEntities.kt index 48ef6e1c5..1fed66b88 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/MetaTileEntities.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/MetaTileEntities.kt @@ -27,225 +27,446 @@ object MetaTileEntities { private val _mteLists = mutableListOf>() /** - * for [com.github.trc.clayium.common.loaders.recipe.CaInjectorRecipeLoader] only - * doesn't include all MetaTileEntity lists + * for [com.github.trc.clayium.common.loaders.recipe.CaInjectorRecipeLoader] only doesn't + * include all MetaTileEntity lists */ - val mteLists: List> get() = _mteLists + val mteLists: List> + get() = _mteLists /* Logistics 1-200 */ - val CLAY_BUFFER = registerMetaTileEntities(1, (4..13)) { //+10 - ClayBufferMetaTileEntity(clayiumId("clay_buffer.${it.lowerName}"), it) - } - - val MULTI_TRACK_BUFFER = registerMetaTileEntities(11, (4..13)) { //+10 - MultiTrackBufferMetaTileEntity(clayiumId("multi_track_buffer.${it.lowerName}"), it) - } + val CLAY_BUFFER = + registerMetaTileEntities(1, (4..13)) { // +10 + ClayBufferMetaTileEntity(clayiumId("clay_buffer.${it.lowerName}"), it) + } - val STORAGE_CONTAINER = registerMetaTileEntity(101, StorageContainerMetaTileEntity(clayiumId("storage_container"), ClayTiers.AZ91D, false)) - val STORAGE_CONTAINER_UPGRADED = registerMetaTileEntity(102, StorageContainerMetaTileEntity(clayiumId("storage_container_upgraded"), ClayTiers.AZ91D, true)) - val VOID_CONTAINER = registerMetaTileEntity(103, VoidContainerMetaTileEntity(clayiumId("void_container"), ClayTiers.AZ91D)) + val MULTI_TRACK_BUFFER = + registerMetaTileEntities(11, (4..13)) { // +10 + MultiTrackBufferMetaTileEntity(clayiumId("multi_track_buffer.${it.lowerName}"), it) + } - val DISTRIBUTOR = registerMetaTileEntities(104, (7..9)) { //+3 - DistributorMetaTileEntity(clayiumId("distributor.${it.lowerName}"), it) - } + val STORAGE_CONTAINER = + registerMetaTileEntity( + 101, + StorageContainerMetaTileEntity(clayiumId("storage_container"), ClayTiers.AZ91D, false) + ) + val STORAGE_CONTAINER_UPGRADED = + registerMetaTileEntity( + 102, + StorageContainerMetaTileEntity( + clayiumId("storage_container_upgraded"), + ClayTiers.AZ91D, + true + ) + ) + val VOID_CONTAINER = + registerMetaTileEntity( + 103, + VoidContainerMetaTileEntity(clayiumId("void_container"), ClayTiers.AZ91D) + ) + + val DISTRIBUTOR = + registerMetaTileEntities(104, (7..9)) { // +3 + DistributorMetaTileEntity(clayiumId("distributor.${it.lowerName}"), it) + } /* Singleblock Item Processing Machines 201-500 */ - val ALLOY_SMELTER = registerMetaTileEntity(201, SimpleMachineMetaTileEntity(clayiumId("alloy_smelter"), ClayTiers.PRECISION, CRecipes.ALLOY_SMELTER)) - - val ASSEMBLER = registerMetaTileEntities(202, intArrayOf(3, 4, 6, 10)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("assembler.${it.lowerName}"), it, CRecipes.ASSEMBLER) - } - - val AUTO_CLAY_CONDENSER = registerMetaTileEntities(206, intArrayOf(5, 7)) { //+2 - AutoClayCondenserMetaTileEntity(clayiumId("auto_clay_condenser.${it.lowerName}"), it) - } - - val BENDING_MACHINE = registerMetaTileEntities(208, intArrayOf(1, 2, 3, 4, 5, 6, 7, 9)) { //+8 - SimpleMachineMetaTileEntity(clayiumId("bending_machine.${it.lowerName}"), it, CRecipes.BENDING) - } - - val CA_INJECTOR = registerMetaTileEntities(216, (9..13)) { //+5 - CaInjectorMetaTileEntity(clayiumId("ca_injector.${it.lowerName}"), it) - } + val ALLOY_SMELTER = + registerMetaTileEntity( + 201, + SimpleMachineMetaTileEntity( + clayiumId("alloy_smelter"), + ClayTiers.PRECISION, + CRecipes.ALLOY_SMELTER + ) + ) + + val ASSEMBLER = + registerMetaTileEntities(202, intArrayOf(3, 4, 6, 10)) { // +4 + SimpleMachineMetaTileEntity( + clayiumId("assembler.${it.lowerName}"), + it, + CRecipes.ASSEMBLER + ) + } - val CA_CONDENSER = registerMetaTileEntities(221, (9..11)) { //+3 - CaCondenserMetaTileEntity(clayiumId("ca_condenser.${it.lowerName}"), it) - } + val AUTO_CLAY_CONDENSER = + registerMetaTileEntities(206, intArrayOf(5, 7)) { // +2 + AutoClayCondenserMetaTileEntity(clayiumId("auto_clay_condenser.${it.lowerName}"), it) + } - val CENTRIFUGE = registerMetaTileEntities(224, (3..6)) { //+4 - CentrifugeMetaTileEntity(clayiumId("centrifuge.${it.lowerName}"), it, it.numeric - 2) - } + val BENDING_MACHINE = + registerMetaTileEntities(208, intArrayOf(1, 2, 3, 4, 5, 6, 7, 9)) { // +8 + SimpleMachineMetaTileEntity( + clayiumId("bending_machine.${it.lowerName}"), + it, + CRecipes.BENDING + ) + } - val CHEMICAL_METAL_SEPARATOR = registerMetaTileEntity(228, ChemicalMetalSeparatorMetaTileEntity(clayiumId("chemical_metal_separator"), ClayTiers.PRECISION)) + val CA_INJECTOR = + registerMetaTileEntities(216, (9..13)) { // +5 + CaInjectorMetaTileEntity(clayiumId("ca_injector.${it.lowerName}"), it) + } - val CHEMICAL_REACTOR = registerMetaTileEntities(229, intArrayOf(4, 5, 8)) { //+3 - SimpleMachineMetaTileEntity(clayiumId("chemical_reactor.${it.lowerName}"), it, CRecipes.CHEMICAL_REACTOR) - } + val CA_CONDENSER = + registerMetaTileEntities(221, (9..11)) { // +3 + CaCondenserMetaTileEntity(clayiumId("ca_condenser.${it.lowerName}"), it) + } - val CONDENSER = registerMetaTileEntities(232, intArrayOf(2, 3, 4, 5, 10)) { //+5 - SimpleMachineMetaTileEntity(clayiumId("condenser.${it.lowerName}"), it, CRecipes.CONDENSER) { mte, reg, ceHolder -> - RecipeLogicEnergy(mte, reg, ceHolder) - .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) - .setEnergyConsumingMultiplier(ConfigTierBalance.crafting::getConsumingEnergyMultiplier) + val CENTRIFUGE = + registerMetaTileEntities(224, (3..6)) { // +4 + CentrifugeMetaTileEntity(clayiumId("centrifuge.${it.lowerName}"), it, it.numeric - 2) } - } - val CUTTING_MACHINE = registerMetaTileEntities(237, (1..4)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("cutting_machine.${it.lowerName}"), it, CRecipes.CUTTING_MACHINE) - } + val CHEMICAL_METAL_SEPARATOR = + registerMetaTileEntity( + 228, + ChemicalMetalSeparatorMetaTileEntity( + clayiumId("chemical_metal_separator"), + ClayTiers.PRECISION + ) + ) + + val CHEMICAL_REACTOR = + registerMetaTileEntities(229, intArrayOf(4, 5, 8)) { // +3 + SimpleMachineMetaTileEntity( + clayiumId("chemical_reactor.${it.lowerName}"), + it, + CRecipes.CHEMICAL_REACTOR + ) + } - val DECOMPOSER = registerMetaTileEntities(241, (2..4)) { //+3 - SimpleMachineMetaTileEntity(clayiumId("decomposer.${it.lowerName}"), it, CRecipes.DECOMPOSER) - } + val CONDENSER = + registerMetaTileEntities(232, intArrayOf(2, 3, 4, 5, 10)) { // +5 + SimpleMachineMetaTileEntity( + clayiumId("condenser.${it.lowerName}"), + it, + CRecipes.CONDENSER + ) { mte, reg, ceHolder -> + RecipeLogicEnergy(mte, reg, ceHolder) + .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) + .setEnergyConsumingMultiplier( + ConfigTierBalance.crafting::getConsumingEnergyMultiplier + ) + } + } - val ELECTROLYSIS_REACTOR = registerMetaTileEntities(244, (6..9)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("electrolysis_reactor.${it.lowerName}"), it, CRecipes.ELECTROLYSIS_REACTOR) - } + val CUTTING_MACHINE = + registerMetaTileEntities(237, (1..4)) { // +4 + SimpleMachineMetaTileEntity( + clayiumId("cutting_machine.${it.lowerName}"), + it, + CRecipes.CUTTING_MACHINE + ) + } - val ENERGETIC_CLAY_CONDENSER = registerMetaTileEntities(248, (3..4)) { //+2 - SimpleMachineMetaTileEntity(clayiumId("energetic_clay_condenser.${it.lowerName}"), it, CRecipes.ENERGETIC_CLAY_CONDENSER) - } + val DECOMPOSER = + registerMetaTileEntities(241, (2..4)) { // +3 + SimpleMachineMetaTileEntity( + clayiumId("decomposer.${it.lowerName}"), + it, + CRecipes.DECOMPOSER + ) + } - // val ENERGETIC_CLAY_DECOMPOSE = registerMetaTileEntity(249, SimpleMachineMetaTileEntity(clayiumId("energetic_clay_decompose"), ClayTiers.OPA, CRecipes.ENERGETIC_CLAY_DECOMPOSE)) + val ELECTROLYSIS_REACTOR = + registerMetaTileEntities(244, (6..9)) { // +4 + SimpleMachineMetaTileEntity( + clayiumId("electrolysis_reactor.${it.lowerName}"), + it, + CRecipes.ELECTROLYSIS_REACTOR + ) + } - val GRINDER = registerMetaTileEntities(251, intArrayOf(2, 3, 4, 5, 6, 10)) { //+6 - SimpleMachineMetaTileEntity(clayiumId("grinder.${it.lowerName}"), it, CRecipes.GRINDER) { mte, reg, ceHolder -> - RecipeLogicEnergy(mte, reg, ceHolder) - .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) - .setEnergyConsumingMultiplier(ConfigTierBalance.crafting::getConsumingEnergyMultiplier) + val ENERGETIC_CLAY_CONDENSER = + registerMetaTileEntities(248, (3..4)) { // +2 + SimpleMachineMetaTileEntity( + clayiumId("energetic_clay_condenser.${it.lowerName}"), + it, + CRecipes.ENERGETIC_CLAY_CONDENSER + ) } - } - val INSCRIBER = registerMetaTileEntities(257, (3..4)) { //+2 - SimpleMachineMetaTileEntity(clayiumId("inscriber.${it.lowerName}"), it, CRecipes.INSCRIBER) - } + // val ENERGETIC_CLAY_DECOMPOSE = registerMetaTileEntity(249, + // SimpleMachineMetaTileEntity(clayiumId("energetic_clay_decompose"), ClayTiers.OPA, + // CRecipes.ENERGETIC_CLAY_DECOMPOSE)) + + val GRINDER = + registerMetaTileEntities(251, intArrayOf(2, 3, 4, 5, 6, 10)) { // +6 + SimpleMachineMetaTileEntity( + clayiumId("grinder.${it.lowerName}"), + it, + CRecipes.GRINDER + ) { mte, reg, ceHolder -> + RecipeLogicEnergy(mte, reg, ceHolder) + .setDurationMultiplier(ConfigTierBalance.crafting::getCraftTimeMultiplier) + .setEnergyConsumingMultiplier( + ConfigTierBalance.crafting::getConsumingEnergyMultiplier + ) + } + } - val LATHE = registerMetaTileEntities(259, (1..4)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("lathe.${it.lowerName}"), it, CRecipes.LATHE) - } + val INSCRIBER = + registerMetaTileEntities(257, (3..4)) { // +2 + SimpleMachineMetaTileEntity( + clayiumId("inscriber.${it.lowerName}"), + it, + CRecipes.INSCRIBER + ) + } - val MATTER_TRANSFORMER = registerMetaTileEntities(263, (7..12)) { //+6 - SimpleMachineMetaTileEntity(clayiumId("matter_transformer.${it.lowerName}"), it, CRecipes.MATTER_TRANSFORMER) - } + val LATHE = + registerMetaTileEntities(259, (1..4)) { // +4 + SimpleMachineMetaTileEntity(clayiumId("lathe.${it.lowerName}"), it, CRecipes.LATHE) + } - val MILLING_MACHINE = registerMetaTileEntities(269, intArrayOf(1, 3, 4)) { //+3 - SimpleMachineMetaTileEntity(clayiumId("milling_machine.${it.lowerName}"), it, CRecipes.MILLING_MACHINE) - } + val MATTER_TRANSFORMER = + registerMetaTileEntities(263, (7..12)) { // +6 + SimpleMachineMetaTileEntity( + clayiumId("matter_transformer.${it.lowerName}"), + it, + CRecipes.MATTER_TRANSFORMER + ) + } - val PIPE_DRAWING_MACHINE = registerMetaTileEntities(272, (1..4)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("pipe_drawing_machine.${it.lowerName}"), it, CRecipes.PIPE_DRAWING_MACHINE) - } + val MILLING_MACHINE = + registerMetaTileEntities(269, intArrayOf(1, 3, 4)) { // +3 + SimpleMachineMetaTileEntity( + clayiumId("milling_machine.${it.lowerName}"), + it, + CRecipes.MILLING_MACHINE + ) + } - val SMELTER = registerMetaTileEntities(276, (4..9)) { //+6 - SimpleMachineMetaTileEntity(clayiumId("smelter.${it.lowerName}"), it, CRecipes.SMELTER, ::RecipeLogicClayFurnace) - } + val PIPE_DRAWING_MACHINE = + registerMetaTileEntities(272, (1..4)) { // +4 + SimpleMachineMetaTileEntity( + clayiumId("pipe_drawing_machine.${it.lowerName}"), + it, + CRecipes.PIPE_DRAWING_MACHINE + ) + } - val WIRE_DRAWING_MACHINE = registerMetaTileEntities(282, (1..4)) { //+4 - SimpleMachineMetaTileEntity(clayiumId("wire_drawing_machine.${it.lowerName}"), it, CRecipes.WIRE_DRAWING_MACHINE) - } + val SMELTER = + registerMetaTileEntities(276, (4..9)) { // +6 + SimpleMachineMetaTileEntity( + clayiumId("smelter.${it.lowerName}"), + it, + CRecipes.SMELTER, + ::RecipeLogicClayFurnace + ) + } + val WIRE_DRAWING_MACHINE = + registerMetaTileEntities(282, (1..4)) { // +4 + SimpleMachineMetaTileEntity( + clayiumId("wire_drawing_machine.${it.lowerName}"), + it, + CRecipes.WIRE_DRAWING_MACHINE + ) + } /* Item Generators 501-600 */ - val CA_RESONATING_COLLECTOR = registerMetaTileEntity(501, ResonatingCollectorMetaTileEntity(clayiumId("resonating_collector"), ClayTiers.ANTIMATTER)) - - val COBBLESTONE_GENERATOR = registerMetaTileEntities(502, (1..7)) { //+7 - CobblestoneGeneratorMetaTileEntity(clayiumId("cobblestone_generator.${it.lowerName}"), it) - } + val CA_RESONATING_COLLECTOR = + registerMetaTileEntity( + 501, + ResonatingCollectorMetaTileEntity( + clayiumId("resonating_collector"), + ClayTiers.ANTIMATTER + ) + ) + + val COBBLESTONE_GENERATOR = + registerMetaTileEntities(502, (1..7)) { // +7 + CobblestoneGeneratorMetaTileEntity( + clayiumId("cobblestone_generator.${it.lowerName}"), + it + ) + } - val SALT_EXTRACTOR = registerMetaTileEntities(509, (4..7)) { //+4 - SaltExtractorMetaTileEntity(clayiumId("salt_extractor.${it.lowerName}"), it) - } + val SALT_EXTRACTOR = + registerMetaTileEntities(509, (4..7)) { // +4 + SaltExtractorMetaTileEntity(clayiumId("salt_extractor.${it.lowerName}"), it) + } /* Multiblock Machines & Proxies 600-700 */ - val CLAY_INTERFACE = registerMetaTileEntities(600, (5..13), caInjector = false) { //+9 - ClayInterfaceMetaTileEntity(clayiumId("clay_interface.${it.lowerName}"), it) - } - - val REDSTONE_PROXY = registerMetaTileEntities(609, (5..13), caInjector = false) { //+9 - RedstoneProxyMetaTileEntity(clayiumId("redstone_proxy.${it.lowerName}"), it) - } - - val LASER_PROXY = registerMetaTileEntities(618, (7..13), caInjector = false) { //+7 - LaserProxyMetaTileEntity(clayiumId("laser_proxy.${it.lowerName}"), it) - } + val CLAY_INTERFACE = + registerMetaTileEntities(600, (5..13), caInjector = false) { // +9 + ClayInterfaceMetaTileEntity(clayiumId("clay_interface.${it.lowerName}"), it) + } - val CLAY_BLAST_FURNACE = registerMetaTileEntity(625, - ClayBlastFurnaceMetaTileEntity(clayiumId("clay_blast_furnace"), ClayTiers.PRECISION) - ) + val REDSTONE_PROXY = + registerMetaTileEntities(609, (5..13), caInjector = false) { // +9 + RedstoneProxyMetaTileEntity(clayiumId("redstone_proxy.${it.lowerName}"), it) + } - val CLAY_REACTOR = registerMetaTileEntity(626, - ClayReactorMetaTileEntity(clayiumId("clay_reactor"), ClayTiers.CLAY_STEEL) - ) + val LASER_PROXY = + registerMetaTileEntities(618, (7..13), caInjector = false) { // +7 + LaserProxyMetaTileEntity(clayiumId("laser_proxy.${it.lowerName}"), it) + } - val CA_REACTOR = registerMetaTileEntities(627, (10..13)) { CaReactorMetaTileEntity(clayiumId("ca_reactor.${it.lowerName}"), it) } + val CLAY_BLAST_FURNACE = + registerMetaTileEntity( + 625, + ClayBlastFurnaceMetaTileEntity(clayiumId("clay_blast_furnace"), ClayTiers.PRECISION) + ) + + val CLAY_REACTOR = + registerMetaTileEntity( + 626, + ClayReactorMetaTileEntity(clayiumId("clay_reactor"), ClayTiers.CLAY_STEEL) + ) + + val CA_REACTOR = + registerMetaTileEntities(627, (10..13)) { + CaReactorMetaTileEntity(clayiumId("ca_reactor.${it.lowerName}"), it) + } /* Clay Fabrication Machines 701-800 */ - val WATERWHEEL = registerMetaTileEntities(701, (1..2)){ //+2 - WaterwheelMetaTileEntity(clayiumId("waterwheel.${it.lowerName}"), it) - } + val WATERWHEEL = + registerMetaTileEntities(701, (1..2)) { // +2 + WaterwheelMetaTileEntity(clayiumId("waterwheel.${it.lowerName}"), it) + } - val SOLAR_CLAY_FABRICATOR = registerMetaTileEntities(703, (5..7)) { //+3 - when (it) { - ClayTiers.ADVANCED -> - SolarClayFabricatorMetaTileEntity(clayiumId("solar_clay_fabricator.${it.lowerName}"), it, CRecipes.SOLAR_1) - ClayTiers.PRECISION -> - SolarClayFabricatorMetaTileEntity(clayiumId("solar_clay_fabricator.${it.lowerName}"), it, CRecipes.SOLAR_2) - ClayTiers.CLAY_STEEL -> - SolarClayFabricatorMetaTileEntity(clayiumId("solar_clay_fabricator.${it.lowerName}"), it, CRecipes.SOLAR_3) - else -> throw IllegalArgumentException() + val SOLAR_CLAY_FABRICATOR = + registerMetaTileEntities(703, (5..7)) { // +3 + when (it) { + ClayTiers.ADVANCED -> + SolarClayFabricatorMetaTileEntity( + clayiumId("solar_clay_fabricator.${it.lowerName}"), + it, + CRecipes.SOLAR_1 + ) + ClayTiers.PRECISION -> + SolarClayFabricatorMetaTileEntity( + clayiumId("solar_clay_fabricator.${it.lowerName}"), + it, + CRecipes.SOLAR_2 + ) + ClayTiers.CLAY_STEEL -> + SolarClayFabricatorMetaTileEntity( + clayiumId("solar_clay_fabricator.${it.lowerName}"), + it, + CRecipes.SOLAR_3 + ) + else -> throw IllegalArgumentException() + } } - } - val CLAY_FABRICATOR = registerMetaTileEntities(706, intArrayOf(8, 9, 13), caInjector = false) { - when (it) { - ClayTiers.CLAYIUM -> - ClayFabricatorMetaTileEntity(clayiumId("clay_fabricator.${it.lowerName}"), it, 11, ClayFabricatorMetaTileEntity::mk1) - ClayTiers.ULTIMATE -> - ClayFabricatorMetaTileEntity(clayiumId("clay_fabricator.${it.lowerName}"), it, 13, ClayFabricatorMetaTileEntity::mk2) - ClayTiers.OPA -> - ClayFabricatorMetaTileEntity(clayiumId("clay_fabricator.${it.lowerName}"), it, 15, ClayFabricatorMetaTileEntity::mk3) - else -> throw IllegalArgumentException() + val CLAY_FABRICATOR = + registerMetaTileEntities(706, intArrayOf(8, 9, 13), caInjector = false) { + when (it) { + ClayTiers.CLAYIUM -> + ClayFabricatorMetaTileEntity( + clayiumId("clay_fabricator.${it.lowerName}"), + it, + 11, + ClayFabricatorMetaTileEntity::mk1 + ) + ClayTiers.ULTIMATE -> + ClayFabricatorMetaTileEntity( + clayiumId("clay_fabricator.${it.lowerName}"), + it, + 13, + ClayFabricatorMetaTileEntity::mk2 + ) + ClayTiers.OPA -> + ClayFabricatorMetaTileEntity( + clayiumId("clay_fabricator.${it.lowerName}"), + it, + 15, + ClayFabricatorMetaTileEntity::mk3 + ) + else -> throw IllegalArgumentException() + } } - } /* Special Machines 801-1000 */ - val CLAY_LASER = registerMetaTileEntities(801, (7..10)) { //+4 - when (it) { - ClayTiers.CLAY_STEEL -> ClayLaserMetaTileEntity(clayiumId("clay_laser.${it.lowerName}"), it, laserBlue = 1) - ClayTiers.CLAYIUM -> ClayLaserMetaTileEntity(clayiumId("clay_laser.${it.lowerName}"), it, laserGreen = 1) - ClayTiers.ULTIMATE -> ClayLaserMetaTileEntity(clayiumId("clay_laser.${it.lowerName}"), it, laserRed = 1) - ClayTiers.ANTIMATTER -> ClayLaserMetaTileEntity(clayiumId("clay_laser.${it.lowerName}"), it, 3, 3, 3) - else -> throw IllegalArgumentException("Invalid tier for Clay laser: (${it.lowerName}, ${it.numeric})") + val CLAY_LASER = + registerMetaTileEntities(801, (7..10)) { // +4 + when (it) { + ClayTiers.CLAY_STEEL -> + ClayLaserMetaTileEntity( + clayiumId("clay_laser.${it.lowerName}"), + it, + laserBlue = 1 + ) + ClayTiers.CLAYIUM -> + ClayLaserMetaTileEntity( + clayiumId("clay_laser.${it.lowerName}"), + it, + laserGreen = 1 + ) + ClayTiers.ULTIMATE -> + ClayLaserMetaTileEntity( + clayiumId("clay_laser.${it.lowerName}"), + it, + laserRed = 1 + ) + ClayTiers.ANTIMATTER -> + ClayLaserMetaTileEntity(clayiumId("clay_laser.${it.lowerName}"), it, 3, 3, 3) + else -> + throw IllegalArgumentException( + "Invalid tier for Clay laser: (${it.lowerName}, ${it.numeric})" + ) + } } - } - val PAN_CORE = registerMetaTileEntity(805, PanCoreMetaTileEntity(clayiumId("pan_core"), ClayTiers.PURE_ANTIMATTER)) + val PAN_CORE = + registerMetaTileEntity( + 805, + PanCoreMetaTileEntity(clayiumId("pan_core"), ClayTiers.PURE_ANTIMATTER) + ) - val PAN_ADAPTER = registerMetaTileEntities(806, (10..13)) { //+4 - PanAdapterMetaTileEntity(clayiumId("pan_adapter.${it.lowerName}"), it) - } + val PAN_ADAPTER = + registerMetaTileEntities(806, (10..13)) { // +4 + PanAdapterMetaTileEntity(clayiumId("pan_adapter.${it.lowerName}"), it) + } - val PAN_DUPLICATOR = (1..10).mapIndexed { i, rank -> //+10 - registerMetaTileEntity(810 + i, PanDuplicatorMetaTileEntity(clayiumId("pan_duplicator.${rank}"), ClayTiers.PURE_ANTIMATTER, rank)) - } + val PAN_DUPLICATOR = + (1..10).mapIndexed { i, rank -> // +10 + registerMetaTileEntity( + 810 + i, + PanDuplicatorMetaTileEntity( + clayiumId("pan_duplicator.${rank}"), + ClayTiers.PURE_ANTIMATTER, + rank + ) + ) + } - val ENERGY_CONVERTER = registerMetaTileEntities(820, (4..13), caInjector = false) { // +10 - EnergyConverterMetaTileEntity(clayiumId("energy_converter.${it.lowerName}"), it) - } + val ENERGY_CONVERTER = + registerMetaTileEntities(820, (4..13), caInjector = false) { // +10 + EnergyConverterMetaTileEntity(clayiumId("energy_converter.${it.lowerName}"), it) + } /* Builder Machines 1001-1100 */ - val BLOCK_BREAKER = registerMetaTileEntity(1001, - BlockBreakerMetaTileEntity(clayiumId("block_breaker"), ClayTiers.AZ91D)) - val RANGED_MINER = registerMetaTileEntity(1002, - RangedMinerMetaTileEntity(clayiumId("ranged_miner"), ClayTiers.ZK60A)) - val ADV_RANGED_MINER = registerMetaTileEntity(1003, - AdvancedRangedMinerMetaTileEntity(clayiumId("adv_ranged_miner"), ClayTiers.ZK60A)) + val BLOCK_BREAKER = + registerMetaTileEntity( + 1001, + BlockBreakerMetaTileEntity(clayiumId("block_breaker"), ClayTiers.AZ91D) + ) + val RANGED_MINER = + registerMetaTileEntity( + 1002, + RangedMinerMetaTileEntity(clayiumId("ranged_miner"), ClayTiers.ZK60A) + ) + val ADV_RANGED_MINER = + registerMetaTileEntity( + 1003, + AdvancedRangedMinerMetaTileEntity(clayiumId("adv_ranged_miner"), ClayTiers.ZK60A) + ) /** * @param tiers corresponding to the main material tiers (Clay, DenseClay...OPA) * @param provider tier -> MetaTileEntity */ - fun registerMetaTileEntities(startId: Int, tiers: IntRange, caInjector: Boolean = true, provider: (ITier) -> T): List { + fun registerMetaTileEntities( + startId: Int, + tiers: IntRange, + caInjector: Boolean = true, + provider: (ITier) -> T + ): List { return registerMetaTileEntities(startId, tiers.toList().toIntArray(), caInjector, provider) } @@ -253,13 +474,19 @@ object MetaTileEntities { * @param tiers corresponding to the main material tiers (Clay, DenseClay...OPA) * @param provider tier -> MetaTileEntity */ - fun registerMetaTileEntities(startId: Int, tiers: IntArray, caInjector: Boolean = true, provider: (ClayTiers) -> T): List { - val mteList = tiers.mapIndexed { i, tierNumeric -> - val id = startId + i - val iTier = ClayTiers.entries[tierNumeric] - val metaTileEntity = provider(iTier) - registerMetaTileEntity(id, metaTileEntity) - } + fun registerMetaTileEntities( + startId: Int, + tiers: IntArray, + caInjector: Boolean = true, + provider: (ClayTiers) -> T + ): List { + val mteList = + tiers.mapIndexed { i, tierNumeric -> + val id = startId + i + val iTier = ClayTiers.entries[tierNumeric] + val metaTileEntity = provider(iTier) + registerMetaTileEntity(id, metaTileEntity) + } if (caInjector) { _mteLists.add(mteList) } @@ -279,8 +506,11 @@ object MetaTileEntities { fun registerItemModels() { for (registry in ClayiumApi.mteManager.allRegistries()) { for (metaTileEntity in registry) { - metaTileEntity.registerItemModel(metaTileEntity.itemBlockMachine, registry.getIdByKey(metaTileEntity.metaTileEntityId)) + metaTileEntity.registerItemModel( + metaTileEntity.itemBlockMachine, + registry.getIdByKey(metaTileEntity.metaTileEntityId) + ) } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanAdapterMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanAdapterMetaTileEntity.kt index f2ea9027e..038d79501 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanAdapterMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanAdapterMetaTileEntity.kt @@ -57,19 +57,21 @@ class PanAdapterMetaTileEntity( tier: ITier, ) : MetaTileEntity(metaTileEntityId, tier, onlyNoneList, onlyNoneList, "pan_adapter"), IPanAdapter { - override val requiredTextures get() = listOf(clayiumId("blocks/pan_adapter")) + override val requiredTextures + get() = listOf(clayiumId("blocks/pan_adapter")) override val importItems = EmptyItemStackHandler override val exportItems = EmptyItemStackHandler override val itemInventory = EmptyItemStackHandler - private val pageNum = when (tier.numeric) { - 10 -> 1 - 11 -> 2 - 12 -> 4 - 13 -> 8 - else -> 1 - } + private val pageNum = + when (tier.numeric) { + 10 -> 1 + 11 -> 2 + 12 -> 4 + 13 -> 8 + else -> 1 + } private val recipeInventories = List(pageNum) { ListeningItemStackHandler(9, ::onSlotChanged) } private val resultInventories = List(pageNum) { ItemStackHandler(9) } @@ -81,15 +83,13 @@ class PanAdapterMetaTileEntity( refreshEntries() } - /** - * @return LaserEnergy, EnergyCost/t - */ + /** @return LaserEnergy, EnergyCost/t */ private fun calculateLaserEnergy(): Pair { val laserRgb = IntArray(3) var energyCost = ClayEnergy.ZERO for (i in 0.. - factory.getEntry(world, pos.offset(side), stacks, laserEnergy, cet) - } + entry = + ClayiumApi.PAN_RECIPE_FACTORIES.firstNotNullOfOrNull { factory -> + factory.getEntry(world, pos.offset(side), stacks, laserEnergy, cet) + } if (entry != null) break } if (entry == null) { @@ -182,65 +183,111 @@ class PanAdapterMetaTileEntity( override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { val tabController = PagedWidget.Controller() - val buttons = Grid.mapToMatrix(2, resultInventories) { index, handler -> - ParentWidget().size(16) - .child(PageButton(index, tabController) - .background(false, GuiTextures.MC_BUTTON) - .background(true, ClayGuiTextures.BUTTON_PRESSED) - .disableHoverBackground() - .size(16, 16)) - .child(DynamicDrawable { ItemDrawable(handler.getStackInSlot(0)) }.asWidget().size(16) - .tooltip { it.addLine(IKey.dynamic { if (handler.getStackInSlot(0).isEmpty) "" else handler.getStackInSlot(0).displayName }) } - ) - } - val pages = recipeInventories.zip(resultInventories).map{ (pattern, result) -> - val slots = SlotGroupWidget.builder() - .matrix("III", "III", "III") - .key('I') { ItemSlot().slot(SyncHandlers.phantomItemSlot(pattern, it)) - .background(ClayGuiTextures.FILTER_SLOT) } - .build() - val resultSlots = SlotGroupWidget.builder() - .matrix("III", "III", "III") - .key('I') { ItemSlot().slot(SyncHandlers.itemSlot(result, it).accessibility(false, false)) } - .build() - Row().widthRel(1f).height(64) - .child(Grid().width(32).heightRel(1f).align(Alignment.TopLeft) - .minElementMargin(0, 0) - .matrix(buttons) - ) - .child(slots.left(32 + 8)) - .child(resultSlots.align(Alignment.TopRight)) - } - return ModularPanel.defaultPanel("pan_adapter", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT + 32) - .columnWithPlayerInv { - child(buildMainParentWidget(syncManager) - .child(PagedWidget().margin(0, 9).widthRel(1f).height(16*4) - .controller(tabController) - .apply { for (page in pages) addPage(page) } + val buttons = + Grid.mapToMatrix(2, resultInventories) { index, handler -> + ParentWidget() + .size(16) + .child( + PageButton(index, tabController) + .background(false, GuiTextures.MC_BUTTON) + .background(true, ClayGuiTextures.BUTTON_PRESSED) + .disableHoverBackground() + .size(16, 16) ) - .child(SlotGroupWidget.builder() - .row("I".repeat(9)) - .key('I') { index -> - ItemSlot().slot(ModularSlot(laserInventory, index)) - .tooltip { it.addLine(IKey.lang("machine.clayium.pan_adapter.laser_slot_tooltip")) } + .child( + DynamicDrawable { ItemDrawable(handler.getStackInSlot(0)) } + .asWidget() + .size(16) + .tooltip { + it.addLine( + IKey.dynamic { + if (handler.getStackInSlot(0).isEmpty) "" + else handler.getStackInSlot(0).displayName + } + ) + } + ) + } + val pages = + recipeInventories.zip(resultInventories).map { (pattern, result) -> + val slots = + SlotGroupWidget.builder() + .matrix("III", "III", "III") + .key('I') { + ItemSlot() + .slot(SyncHandlers.phantomItemSlot(pattern, it)) + .background(ClayGuiTextures.FILTER_SLOT) + } + .build() + val resultSlots = + SlotGroupWidget.builder() + .matrix("III", "III", "III") + .key('I') { + ItemSlot() + .slot(SyncHandlers.itemSlot(result, it).accessibility(false, false)) } .build() - .bottom(10) + Row() + .widthRel(1f) + .height(64) + .child( + Grid() + .width(32) + .heightRel(1f) + .align(Alignment.TopLeft) + .minElementMargin(0, 0) + .matrix(buttons) ) + .child(slots.left(32 + 8)) + .child(resultSlots.align(Alignment.TopRight)) + } + return ModularPanel.defaultPanel("pan_adapter", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT + 32) + .columnWithPlayerInv { + child( + buildMainParentWidget(syncManager) + .child( + PagedWidget() + .margin(0, 9) + .widthRel(1f) + .height(16 * 4) + .controller(tabController) + .apply { for (page in pages) addPage(page) } + ) + .child( + SlotGroupWidget.builder() + .row("I".repeat(9)) + .key('I') { index -> + ItemSlot().slot(ModularSlot(laserInventory, index)).tooltip { + it.addLine( + IKey.lang( + "machine.clayium.pan_adapter.laser_slot_tooltip" + ) + ) + } + } + .build() + .bottom(10) + ) ) } } @SideOnly(Side.CLIENT) - override fun bakeQuads(getter: Function, faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val sprite = getter.apply(clayiumId("blocks/pan_adapter")) - adapterQuads = EnumFacing.entries.map { - ModelTextures.createQuad(it, sprite) - } + adapterQuads = EnumFacing.entries.map { ModelTextures.createQuad(it, sprite) } } @SideOnly(Side.CLIENT) - override fun overlayQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun overlayQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (state == null || side == null) return quads.add(adapterQuads[side.index]) } @@ -248,4 +295,4 @@ class PanAdapterMetaTileEntity( companion object { private lateinit var adapterQuads: List } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanCoreMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanCoreMetaTileEntity.kt index 322fa4aa6..ad6d34335 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanCoreMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanCoreMetaTileEntity.kt @@ -73,7 +73,8 @@ class PanCoreMetaTileEntity( private val duplicationEntries = mutableMapOf() override fun getDuplicationEntries(): Map { - return duplicationEntries.asSequence() + return duplicationEntries + .asSequence() .filter { (_, e) -> e.isAllowedToDuplicate } .map { (k, v) -> k to v.ce } .toMap() @@ -131,7 +132,8 @@ class PanCoreMetaTileEntity( defaultDuplicationEntries.keys.forEach { result2Dependants[it] = mutableListOf() } // add results that gathered from pan adapters as a key to the trees - // keys (ItemAndMetas) that added here are duplicatable if tree roots are default duplication entries. + // keys (ItemAndMetas) that added here are duplicatable if tree roots are default + // duplication entries. for (recipe in panRecipes) { for (result in recipe.results) { val key = ItemAndMeta(result) @@ -143,7 +145,9 @@ class PanCoreMetaTileEntity( for (ingredient in recipe.ingredients) { val keys = ingredient.stacks.map { ItemAndMeta(it) } keys.forEach { - result2Dependants[it]?.apply { if (recipeInternal !in this) this.add(recipeInternal) } + result2Dependants[it]?.apply { + if (recipeInternal !in this) this.add(recipeInternal) + } } } } @@ -177,7 +181,9 @@ class PanCoreMetaTileEntity( val panRecipe = childRecipe.panRecipe for (result in panRecipe.results.map(::ItemAndMeta)) { duplicatablesQueue.add(result) - val cost = (totalCost / panRecipe.results.sumOf { it.count }) + panRecipe.requiredClayEnergy + val cost = + (totalCost / panRecipe.results.sumOf { it.count }) + + panRecipe.requiredClayEnergy duplicationEntries[result] = PanDuplicationEntry(cost) } } @@ -233,13 +239,21 @@ class PanCoreMetaTileEntity( } @SideOnly(Side.CLIENT) - override fun bakeQuads(getter: Function, faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val tex = getter.apply(clayiumId("blocks/pan_core")) panCoreQuads = EnumFacing.entries.map { ModelTextures.createQuad(it, tex) }.toMutableList() } @SideOnly(Side.CLIENT) - override fun getQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun getQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (state == null || side == null) return quads.add(panCoreQuads[side.index]) } @@ -248,97 +262,146 @@ class PanCoreMetaTileEntity( if (!isRemote) { refreshNetworkAndThenEntries() } - val displayItems = Grid.mapToMatrix(9, duplicationEntries.toList()) { index, (itemAndMeta, entry) -> - val stack = itemAndMeta.asStack() - ItemDrawable(stack).asWidget().size(16) - .tooltip { tooltip -> - if (isRemote) { - val flag = if (Minecraft.getMinecraft().gameSettings.advancedItemTooltips) ITooltipFlag.TooltipFlags.ADVANCED else ITooltipFlag.TooltipFlags.NORMAL - tooltip.addStringLines(stack.getTooltip(data.player, flag)) + val displayItems = + Grid.mapToMatrix(9, duplicationEntries.toList()) { index, (itemAndMeta, entry) -> + val stack = itemAndMeta.asStack() + ItemDrawable(stack) + .asWidget() + .size(16) + .tooltip { tooltip -> + if (isRemote) { + val flag = + if (Minecraft.getMinecraft().gameSettings.advancedItemTooltips) + ITooltipFlag.TooltipFlags.ADVANCED + else ITooltipFlag.TooltipFlags.NORMAL + tooltip.addStringLines(stack.getTooltip(data.player, flag)) + } + tooltip.addLine(entry.ce.format()) } - tooltip.addLine(entry.ce.format()) - } - .also { - if (!entry.isAllowedToDuplicate) { - it.background(Rectangle().setColor(0xFF5E1E0E.toInt())) + .also { + if (!entry.isAllowedToDuplicate) { + it.background(Rectangle().setColor(0xFF5E1E0E.toInt())) + } } - } - } + } val panDisplayMargin = 4 val panDisplayWidth = 16 * 9 + 0 return ModularPanel.defaultPanel("pan_core", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT + 50) - .child(Column().margin(7) - .child(ParentWidget().widthRel(1f).expanded().marginBottom(2) - .child(IKey.lang(this.translationKey, IKey.lang(tier.prefixTranslationKey)).asWidget() - .align(Alignment.TopLeft)) - .child(IKey.lang("container.inventory").asWidget() - .align(Alignment.BottomLeft)) - .child(ParentWidget().width(panDisplayWidth + panDisplayMargin * 2).heightRel(1f) - .align(Alignment.TopCenter).margin(0, 2) - .child(Rectangle().setColor(Color.rgb(0, 0x1E, 0)).asWidget() - .width(panDisplayWidth + panDisplayMargin * 2).heightRel(1f).margin(0, 9)) - .child(Grid().width(panDisplayWidth).heightRel(1f).margin(panDisplayMargin, 13) - .minElementMargin(0, 0) - .matrix(displayItems) - .scrollable(VerticalScrollData()) - .background(Rectangle().setColor(Color.rgb(0, 0x1E, 0)))) + .child( + Column() + .margin(7) + .child( + ParentWidget() + .widthRel(1f) + .expanded() + .marginBottom(2) + .child( + IKey.lang(this.translationKey, IKey.lang(tier.prefixTranslationKey)) + .asWidget() + .align(Alignment.TopLeft) + ) + .child( + IKey.lang("container.inventory") + .asWidget() + .align(Alignment.BottomLeft) + ) + .child( + ParentWidget() + .width(panDisplayWidth + panDisplayMargin * 2) + .heightRel(1f) + .align(Alignment.TopCenter) + .margin(0, 2) + .child( + Rectangle() + .setColor(Color.rgb(0, 0x1E, 0)) + .asWidget() + .width(panDisplayWidth + panDisplayMargin * 2) + .heightRel(1f) + .margin(0, 9) + ) + .child( + Grid() + .width(panDisplayWidth) + .heightRel(1f) + .margin(panDisplayMargin, 13) + .minElementMargin(0, 0) + .matrix(displayItems) + .scrollable(VerticalScrollData()) + .background(Rectangle().setColor(Color.rgb(0, 0x1E, 0))) + ) + ) ) - ) - .child(SlotGroupWidget.playerInventory(0))) + .child(SlotGroupWidget.playerInventory(0)) + ) } class PanDuplicationEntry( val ce: ClayEnergy, val isAllowedToDuplicate: Boolean = true, ) + private class PanIngredient( val ingredient: CRecipeInput, val cost: ClayEnergy = ClayEnergy.MAX, var verified: Boolean = false, ) + private class PanRecipeInternal(val panRecipe: IPanRecipe) { val ingsWithFlag = panRecipe.ingredients.map(::PanIngredient) } companion object { const val REFRESH_RATE_TICKS = 200 - private val defaultDuplicationEntries: Map by lazy { mutableMapOf().apply { - put(ItemAndMeta(Blocks.COBBLESTONE), PanDuplicationEntry(ClayEnergy.micro(10))) - put(ItemAndMeta(Blocks.LOG), PanDuplicationEntry(ClayEnergy.micro(10))) - put(ItemAndMeta(Blocks.CLAY), PanDuplicationEntry(ClayEnergy.micro(10), false)) - ClayiumBlocks.COMPRESSED_CLAY_BLOCKS.forEach { block -> - block.blockState.validStates.forEach { state -> + private val defaultDuplicationEntries: Map by lazy { + mutableMapOf() + .apply { + put(ItemAndMeta(Blocks.COBBLESTONE), PanDuplicationEntry(ClayEnergy.micro(10))) + put(ItemAndMeta(Blocks.LOG), PanDuplicationEntry(ClayEnergy.micro(10))) + put(ItemAndMeta(Blocks.CLAY), PanDuplicationEntry(ClayEnergy.micro(10), false)) + ClayiumBlocks.COMPRESSED_CLAY_BLOCKS.forEach { block -> + block.blockState.validStates.forEach { state -> + put( + ItemAndMeta( + OreDictUnifier.get(OrePrefix.block, block.getCMaterial(state)) + ), + PanDuplicationEntry(ClayEnergy.micro(10), false) + ) + } + } + ClayiumBlocks.ENERGIZED_CLAY_BLOCKS.forEach { block -> + block.blockState.validStates.forEach { state -> + val material = block.getCMaterial(state) + val ce = material.getProperty(CPropertyKey.CLAY).energy!! + put( + ItemAndMeta(OrePrefix.block, material), + PanDuplicationEntry(ce, false) + ) + } + } + // impure dusts from Chemical Metal Separator + for (recipe in CRecipes.CHEMICAL_METAL_SEPARATOR.getAllRecipes()) { + if (recipe.chancedOutputs == null) continue + val totalWeight: Double = + recipe.chancedOutputs.map { it.chance }.sum().toDouble() + val baseCeCost = recipe.cePerTick * recipe.duration + for (chanced in recipe.chancedOutputs) { + val rate = chanced.chance.toDouble() / totalWeight + // rarer -> higher CE cost + put(ItemAndMeta(chanced.result), PanDuplicationEntry(baseCeCost / rate)) + } + } put( - ItemAndMeta(OreDictUnifier.get(OrePrefix.block, block.getCMaterial(state))), - PanDuplicationEntry(ClayEnergy.micro(10), false) + ItemAndMeta(OrePrefix.dust, CMaterials.salt), + PanDuplicationEntry(ClayEnergy.milli(5), true) ) - } - } - ClayiumBlocks.ENERGIZED_CLAY_BLOCKS.forEach { block -> - block.blockState.validStates.forEach { state -> - val material = block.getCMaterial(state) - val ce = material.getProperty(CPropertyKey.CLAY).energy!! put( - ItemAndMeta(OrePrefix.block, material), - PanDuplicationEntry(ce, false) + ItemAndMeta(OrePrefix.gem, CMaterials.antimatter), + PanDuplicationEntry(ClayEnergy.of(1), false) ) } - } - // impure dusts from Chemical Metal Separator - for (recipe in CRecipes.CHEMICAL_METAL_SEPARATOR.getAllRecipes()) { - if (recipe.chancedOutputs == null) continue - val totalWeight: Double = recipe.chancedOutputs.map { it.chance }.sum().toDouble() - val baseCeCost = recipe.cePerTick * recipe.duration - for (chanced in recipe.chancedOutputs) { - val rate = chanced.chance.toDouble() / totalWeight - // rarer -> higher CE cost - put(ItemAndMeta(chanced.result), PanDuplicationEntry(baseCeCost / rate)) - } - } - put(ItemAndMeta(OrePrefix.dust, CMaterials.salt), PanDuplicationEntry(ClayEnergy.milli(5), true)) - put(ItemAndMeta(OrePrefix.gem, CMaterials.antimatter), PanDuplicationEntry(ClayEnergy.of(1), false)) - }.toMap() } + .toMap() + } private lateinit var panCoreQuads: MutableList } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanDuplicatorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanDuplicatorMetaTileEntity.kt index b39ccc7d1..4fc25aee7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanDuplicatorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/PanDuplicatorMetaTileEntity.kt @@ -60,7 +60,15 @@ class PanDuplicatorMetaTileEntity( tier: ITier, private val duplicatorRank: Int, private val machineHullTier: ITier = ClayTiers.entries[duplicatorRank + 3] -) : MetaTileEntity(metaTileEntityId, tier, validInputModesLists[2], validOutputModesLists[1], "pan_duplicator"), IPanUser { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModesLists[2], + validOutputModesLists[1], + "pan_duplicator" + ), + IPanUser { override val faceTexture = clayiumId("blocks/pan_duplicator") @@ -105,27 +113,52 @@ class PanDuplicatorMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(clayEnergyHolder.createCeTextWidget(syncManager) - .bottom(12).left(0)) - .child(clayEnergyHolder.createSlotWidget() - .align(Alignment.BottomRight)) - .child(Row().widthRel(0.7f).height(26).align(Alignment.Center) - .child(SlotGroupWidget.builder() - .row("AD") - .key('A', ItemSlot().slot(SyncHandlers.itemSlot(antimatterSlot, 0).singletonSlotGroup()) - .background(ClayGuiTextures.IMPORT_1_SLOT)) - .key('D', ItemSlot().slot(SyncHandlers.itemSlot(duplicationTargetSlot, 0).singletonSlotGroup()) - .background(ClayGuiTextures.IMPORT_2_SLOT)) - .build() - .align(Alignment.CenterLeft) - ) - .child(largeSlot(SyncHandlers.itemSlot(exportItems, 0).singletonSlotGroup().accessibility(false, true)) - .align(Alignment.CenterRight)) - .child(ProgressWidget() - .progress(0.0) - .size(22, 17).align(Alignment.Center) - .texture(ClayGuiTextures.PROGRESS_BAR, 22) - ) + .child(clayEnergyHolder.createCeTextWidget(syncManager).bottom(12).left(0)) + .child(clayEnergyHolder.createSlotWidget().align(Alignment.BottomRight)) + .child( + Row() + .widthRel(0.7f) + .height(26) + .align(Alignment.Center) + .child( + SlotGroupWidget.builder() + .row("AD") + .key( + 'A', + ItemSlot() + .slot( + SyncHandlers.itemSlot(antimatterSlot, 0) + .singletonSlotGroup() + ) + .background(ClayGuiTextures.IMPORT_1_SLOT) + ) + .key( + 'D', + ItemSlot() + .slot( + SyncHandlers.itemSlot(duplicationTargetSlot, 0) + .singletonSlotGroup() + ) + .background(ClayGuiTextures.IMPORT_2_SLOT) + ) + .build() + .align(Alignment.CenterLeft) + ) + .child( + largeSlot( + SyncHandlers.itemSlot(exportItems, 0) + .singletonSlotGroup() + .accessibility(false, true) + ) + .align(Alignment.CenterRight) + ) + .child( + ProgressWidget() + .progress(0.0) + .size(22, 17) + .align(Alignment.Center) + .texture(ClayGuiTextures.PROGRESS_BAR, 22) + ) ) } @@ -139,8 +172,11 @@ class PanDuplicatorMetaTileEntity( @SideOnly(Side.CLIENT) override fun registerItemModel(item: Item, meta: Int) { - ModelLoader.setCustomModelResourceLocation(item, meta, - ModelResourceLocation(clayiumId("machines/pan_duplicator"), "rank=$duplicatorRank")) + ModelLoader.setCustomModelResourceLocation( + item, + meta, + ModelResourceLocation(clayiumId("machines/pan_duplicator"), "rank=$duplicatorRank") + ) } @SideOnly(Side.CLIENT) @@ -149,17 +185,30 @@ class PanDuplicatorMetaTileEntity( } @SideOnly(Side.CLIENT) - override fun addInformation(stack: ItemStack, worldIn: World?, tooltip: MutableList, flagIn: ITooltipFlag) { + override fun addInformation( + stack: ItemStack, + worldIn: World?, + tooltip: MutableList, + flagIn: ITooltipFlag + ) { super.addInformation(stack, worldIn, tooltip, flagIn) tooltip.add("CE Consumption Rate: ${ceConsumption.format()}/t") } - override fun bakeQuads(getter: Function, faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val sprite = getter.apply(clayiumId("blocks/pan_casing")) panCasingQuads = EnumFacing.entries.map { ModelTextures.createQuad(it, sprite) } } - override fun getQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun getQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (state == null || side == null || state !is IExtendedBlockState) return quads.add(ModelTextures.getHullQuads(this.machineHullTier)?.get(side) ?: return) if (side != this.frontFacing) quads.add(panCasingQuads[side.index]) @@ -167,8 +216,10 @@ class PanDuplicatorMetaTileEntity( private inner class PanRecipeProvider : IRecipeProvider { override val jeiCategory = null + override fun searchRecipe(machineTier: Int, inputs: List): Recipe? { - if (!antimatterInput.testItemStackAndAmount(antimatterSlot.getStackInSlot(0))) return null + if (!antimatterInput.testItemStackAndAmount(antimatterSlot.getStackInSlot(0))) + return null val targetStack = duplicationTargetSlot.getStackInSlot(0) if (targetStack.isEmpty) return null val dupTarget = duplicationTargetSlot.getStackInSlot(0).copyWithSize(1) @@ -178,7 +229,9 @@ class PanDuplicatorMetaTileEntity( .inputs(antimatterInput) .notConsumable(dupTarget) .output(dupTarget) - .tier(0).CEt(ceConsumption).duration(duration) + .tier(0) + .CEt(ceConsumption) + .duration(duration) .build() } } @@ -188,4 +241,4 @@ class PanDuplicatorMetaTileEntity( private lateinit var panCasingQuads: List } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/RangedMinerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/RangedMinerMetaTileEntity.kt index e2d529834..cb8033407 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/RangedMinerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/RangedMinerMetaTileEntity.kt @@ -27,8 +27,7 @@ open class RangedMinerMetaTileEntity( override val faceTexture: ResourceLocation = clayiumId("blocks/miner") private val clayMarkerHandler = ClayMarkerHandler(this) - @Suppress("unused") - val ioHandler = AutoIoHandler.Exporter(this) + @Suppress("unused") val ioHandler = AutoIoHandler.Exporter(this) val clayEnergyHolder = ClayEnergyHolder(this) override val maxBlocksPerTick: Int = ConfigCore.misc.rangedMinerMaxBlocksPerTick @@ -61,10 +60,8 @@ open class RangedMinerMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(clayEnergyHolder.createCeTextWidget(syncManager) - .left(0).bottom(12)) - .child(clayEnergyHolder.createSlotWidget() - .align(Alignment.BottomRight)) + .child(clayEnergyHolder.createCeTextWidget(syncManager).left(0).bottom(12)) + .child(clayEnergyHolder.createSlotWidget().align(Alignment.BottomRight)) } override fun onPlacement() { @@ -85,4 +82,4 @@ open class RangedMinerMetaTileEntity( companion object { val CE_CONSUMPTION = ClayEnergy.milli(10) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/ResonatingCollectorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/ResonatingCollectorMetaTileEntity.kt index 374fdc70f..976ff4ff7 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/ResonatingCollectorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/ResonatingCollectorMetaTileEntity.kt @@ -31,12 +31,16 @@ class ResonatingCollectorMetaTileEntity( override val faceTexture = clayiumId("blocks/ca_resonating_collector") // these are used in superclass to create itemHandler, so they have a custom getter - override val inventoryColumnSize get() = 3 - override val inventoryRowSize get() = 3 + override val inventoryColumnSize + get() = 3 + + override val inventoryRowSize + get() = 3 override val progressPerItem = 10_000 override val progressPerTick: Int get() = (resonanceManager.resonance - 1.0).coerceAtMost(Int.MAX_VALUE.toDouble()).toInt() + override val generatingItem by lazy { OreDictUnifier.get(OrePrefix.gem, CMaterials.antimatter) } override fun isTerrainValid() = true @@ -52,15 +56,28 @@ class ResonatingCollectorMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { resonanceManager.sync(syncManager) return super.buildMainParentWidget(syncManager) - .child(IKey.dynamic { - I18n.format("gui.$MOD_ID.resonance", NumberFormat.formatWithMaxDigits(resonanceManager.resonance)) - }.asWidgetResizing() - .align(Alignment.BottomRight)) - .child(SlotGroupWidget.builder() - .matrix("III", "III", "III") - .key('I') { i -> - ItemSlot().slot(SyncHandlers.itemSlot(itemInventory, i) - .slotGroup("machine_inventory")) - }.build().align(Alignment.Center)) + .child( + IKey.dynamic { + I18n.format( + "gui.$MOD_ID.resonance", + NumberFormat.formatWithMaxDigits(resonanceManager.resonance) + ) + } + .asWidgetResizing() + .align(Alignment.BottomRight) + ) + .child( + SlotGroupWidget.builder() + .matrix("III", "III", "III") + .key('I') { i -> + ItemSlot() + .slot( + SyncHandlers.itemSlot(itemInventory, i) + .slotGroup("machine_inventory") + ) + } + .build() + .align(Alignment.Center) + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SaltExtractorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SaltExtractorMetaTileEntity.kt index c131eb418..eeed42f17 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SaltExtractorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SaltExtractorMetaTileEntity.kt @@ -16,22 +16,26 @@ import net.minecraft.util.ResourceLocation class SaltExtractorMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : AbstractItemGeneratorMetaTileEntity( - metaTileEntityId, tier, - validInputModes = energyAndNone, validOutputModes = validOutputModesLists[1], - name = "salt_extractor", -) { +) : + AbstractItemGeneratorMetaTileEntity( + metaTileEntityId, + tier, + validInputModes = energyAndNone, + validOutputModes = validOutputModesLists[1], + name = "salt_extractor", + ) { override val faceTexture = clayiumId("blocks/salt_extractor") override val progressPerItem: Int = 100 - override val progressPerTick = when (tier.numeric) { - 4 -> 50 - 5 -> 200 - 6 -> 1000 - 7 -> 8000 - else -> 1 - } + override val progressPerTick = + when (tier.numeric) { + 4 -> 50 + 5 -> 200 + 6 -> 1000 + 7 -> 8000 + else -> 1 + } // wait for oreDict registration override val generatingItem by lazy { OreDictUnifier.get(OrePrefix.dust, CMaterials.salt) } @@ -61,6 +65,7 @@ class SaltExtractorMetaTileEntity( } override fun canProgress(): Boolean { - return super.canProgress() && this.clayEnergyHolder.drawEnergy(energyPerProgress, simulate = false) + return super.canProgress() && + this.clayEnergyHolder.drawEnergy(energyPerProgress, simulate = false) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SolarClayFabricatorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SolarClayFabricatorMetaTileEntity.kt index 75c1323cd..22e5b9305 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SolarClayFabricatorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/SolarClayFabricatorMetaTileEntity.kt @@ -34,12 +34,21 @@ class SolarClayFabricatorMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, val registry: RecipeRegistry -) : MetaTileEntity(metaTileEntityId, tier, validInputModes, validOutputModesLists[1], "solar_clay_fabricator") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + validInputModes, + validOutputModesLists[1], + "solar_clay_fabricator" + ) { override val faceTexture: ResourceLocation = clayiumId("blocks/solar") - override val importItems: IItemHandlerModifiable = NotifiableItemStackHandler(this, 1, this, false) - override val exportItems: IItemHandlerModifiable = NotifiableItemStackHandler(this, 1, this, true) + override val importItems: IItemHandlerModifiable = + NotifiableItemStackHandler(this, 1, this, false) + override val exportItems: IItemHandlerModifiable = + NotifiableItemStackHandler(this, 1, this, true) override val itemInventory: IItemHandler = ItemHandlerProxy(importItems, exportItems) val autoIoHandler: AutoIoHandler = AutoIoHandler.Combined(this) @@ -60,19 +69,30 @@ class SolarClayFabricatorMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(Row().widthRel(0.7f).height(26).align(Alignment.Center) - .child(largeSlot(SyncHandlers.itemSlot(importItems, 0) - .singletonSlotGroup(2)).align(Alignment.CenterLeft)) - .child(workable.getProgressBar(syncManager).align(Alignment.Center)) - .child(largeSlot(SyncHandlers.itemSlot(exportItems, 0) - .accessibility(false, true) - .singletonSlotGroup(0)).align(Alignment.CenterRight)) + .child( + Row() + .widthRel(0.7f) + .height(26) + .align(Alignment.Center) + .child( + largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup(2)) + .align(Alignment.CenterLeft) + ) + .child(workable.getProgressBar(syncManager).align(Alignment.Center)) + .child( + largeSlot( + SyncHandlers.itemSlot(exportItems, 0) + .accessibility(false, true) + .singletonSlotGroup(0) + ) + .align(Alignment.CenterRight) + ) ) - .child(workable.createCeTextWidget(syncManager) - .bottom(12).left(0).widthRel(0.5f)) + .child(workable.createCeTextWidget(syncManager).bottom(12).left(0).widthRel(0.5f)) } - private inner class SolarClayFabricatorRecipeLogic : AbstractRecipeLogic(this@SolarClayFabricatorMetaTileEntity, registry) { + private inner class SolarClayFabricatorRecipeLogic : + AbstractRecipeLogic(this@SolarClayFabricatorMetaTileEntity, registry) { private var clayEnergy = ClayEnergy.ZERO override fun drawEnergy(ce: ClayEnergy, simulate: Boolean): Boolean { @@ -91,19 +111,28 @@ class SolarClayFabricatorMetaTileEntity( } fun createCeTextWidget(syncManager: GuiSyncManager): TextWidget { - syncManager.syncValue("clayEnergy", SyncHandlers.longNumber( - { clayEnergy.energy }, - { clayEnergy = ClayEnergy(it) } - )) + syncManager.syncValue( + "clayEnergy", + SyncHandlers.longNumber({ clayEnergy.energy }, { clayEnergy = ClayEnergy(it) }) + ) return IKey.dynamic { clayEnergy.format() }.asWidget() } - override fun addProbeInfo(mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { super.addProbeInfo(mode, probeInfo, player, world, state, hitData) if (this.isWorking) { val cet = recipeCEt * overclockHandler.accelerationFactor - probeInfo.text("Generating ${TextFormatting.GREEN}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t") + probeInfo.text( + "Generating ${TextFormatting.GREEN}${cet.formatWithoutUnit()}${TextFormatting.WHITE} CE/t" + ) } } } @@ -111,4 +140,4 @@ class SolarClayFabricatorMetaTileEntity( companion object { private val validInputModes = listOf(MachineIoMode.NONE, MachineIoMode.ALL) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/StorageContainerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/StorageContainerMetaTileEntity.kt index 4aa0fda97..17c51b538 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/StorageContainerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/StorageContainerMetaTileEntity.kt @@ -58,32 +58,44 @@ class StorageContainerMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, isUpgraded: Boolean, -) : MetaTileEntity(metaTileEntityId, tier, bufferValidInputModes, validOutputModesLists[1], "storage_container") { +) : + MetaTileEntity( + metaTileEntityId, + tier, + bufferValidInputModes, + validOutputModesLists[1], + "storage_container" + ) { override val faceTexture = clayiumId("blocks/storage_container") - override val requiredTextures get() = listOf( - faceTexture, - clayiumId("blocks/storage_container_side_composed"), clayiumId("blocks/storage_container_side_upgraded"), - clayiumId("blocks/storage_container_top_composed"), clayiumId("blocks/storage_container_top_upgraded"), - clayiumId("blocks/storage_container_upgraded_base") - ) + override val requiredTextures + get() = + listOf( + faceTexture, + clayiumId("blocks/storage_container_side_composed"), + clayiumId("blocks/storage_container_side_upgraded"), + clayiumId("blocks/storage_container_top_composed"), + clayiumId("blocks/storage_container_top_upgraded"), + clayiumId("blocks/storage_container_upgraded_base") + ) override val pipeConnectionLogic: IPipeConnectionLogic = IPipeConnectionLogic.ItemPipe override val itemInventory: IItemHandler = StorageContainerItemHandler() override val exportItems: IItemHandlerModifiable = StorageContainerExportItems() - override val importItems: IItemHandlerModifiable = object : ClayiumItemStackHandler(this, 1) { - override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean): ItemStack { - if (!isItemValid(slot, stack)) return stack - return itemInventory.insertItem(slot, stack, simulate) - } + override val importItems: IItemHandlerModifiable = + object : ClayiumItemStackHandler(this, 1) { + override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean): ItemStack { + if (!isItemValid(slot, stack)) return stack + return itemInventory.insertItem(slot, stack, simulate) + } - override fun isItemValid(slot: Int, stack: ItemStack): Boolean { - return filterSlot.getStackInSlot(0).canActuallyStack(stack) - && currentInsertedStack.canActuallyStack(stack) - && exportItems.getStackInSlot(0).canActuallyStack(stack) + override fun isItemValid(slot: Int, stack: ItemStack): Boolean { + return filterSlot.getStackInSlot(0).canActuallyStack(stack) && + currentInsertedStack.canActuallyStack(stack) && + exportItems.getStackInSlot(0).canActuallyStack(stack) + } } - } val autoIoHandler: AutoIoHandler = AutoIoHandler.Combined(this) private val filterSlot = ItemStackHandler(1) @@ -96,12 +108,18 @@ class StorageContainerMetaTileEntity( markDirty() if (syncFlag) writeCustomData(UPDATE_MAX_ITEMS_STORED) { writeVarInt(value) } } - val isUpgraded get() = maxStoredItems == UPGRADED_MAX_AMOUNT + + val isUpgraded + get() = maxStoredItems == UPGRADED_MAX_AMOUNT private var itemsStored = 0 - set(value) { field = value; markDirty() } + set(value) { + field = value + markDirty() + } private var previousStoredItems = 0 + override fun update() { super.update() if (isRemote) return @@ -119,17 +137,36 @@ class StorageContainerMetaTileEntity( } } - override fun onRightClick(player: EntityPlayer, hand: EnumHand, clickedSide: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean { + override fun onRightClick( + player: EntityPlayer, + hand: EnumHand, + clickedSide: EnumFacing, + hitX: Float, + hitY: Float, + hitZ: Float + ): Boolean { val stack = player.getHeldItem(hand) val clayCore = MetaItemClayParts.ClayCore.getStackForm() - //todo use capability - if (stack.isItemEqual(clayCore) && stack.metadata == clayCore.metadata && maxStoredItems == INITIAL_MAX_AMOUNT) { + // todo use capability + if ( + stack.isItemEqual(clayCore) && + stack.metadata == clayCore.metadata && + maxStoredItems == INITIAL_MAX_AMOUNT + ) { val world = this.world val pos = this.pos if (!(world == null || pos == null)) { - val upgradedStorageContainerStack = MetaTileEntities.STORAGE_CONTAINER_UPGRADED.getStackForm() - upgradedStorageContainerStack.tagCompound = NBTTagCompound().apply { writeItemStackNbt(this) } - this.blockMachine.onBlockPlacedBy(world, pos, world.getBlockState(pos), player, upgradedStorageContainerStack) + val upgradedStorageContainerStack = + MetaTileEntities.STORAGE_CONTAINER_UPGRADED.getStackForm() + upgradedStorageContainerStack.tagCompound = + NBTTagCompound().apply { writeItemStackNbt(this) } + this.blockMachine.onBlockPlacedBy( + world, + pos, + world.getBlockState(pos), + player, + upgradedStorageContainerStack + ) stack.shrink(1) return true } @@ -144,14 +181,22 @@ class StorageContainerMetaTileEntity( return super.getCapability(capability, facing) } - override fun canBeReplacedTo(world: World, pos: BlockPos, sampleMetaTileEntity: MetaTileEntity): Boolean { + override fun canBeReplacedTo( + world: World, + pos: BlockPos, + sampleMetaTileEntity: MetaTileEntity + ): Boolean { if (sampleMetaTileEntity !is StorageContainerMetaTileEntity) return false if (this.isUpgraded && !sampleMetaTileEntity.isUpgraded) return false return super.canBeReplacedTo(world, pos, sampleMetaTileEntity) } override fun createMetaTileEntity(): MetaTileEntity { - return StorageContainerMetaTileEntity(this.metaTileEntityId, this.tier, maxStoredItems == UPGRADED_MAX_AMOUNT) + return StorageContainerMetaTileEntity( + this.metaTileEntityId, + this.tier, + maxStoredItems == UPGRADED_MAX_AMOUNT + ) } override fun receiveCustomData(discriminator: Int, buf: PacketBuffer) { @@ -204,10 +249,18 @@ class StorageContainerMetaTileEntity( override fun readFromNBT(data: NBTTagCompound) { super.readFromNBT(data) - if (data.hasKey("maxStoredItems", Constants.NBT.TAG_INT)) { maxStoredItems = data.getInteger("maxStoredItems") } - if (data.hasKey("itemsStored", Constants.NBT.TAG_INT)) { itemsStored = data.getInteger("itemsStored") } - if (data.hasKey("storedStack", Constants.NBT.TAG_COMPOUND)) { currentInsertedStack = ItemStack(data.getCompoundTag("storedStack")) } - if (data.hasKey("filterSlot", Constants.NBT.TAG_COMPOUND)) { filterSlot.deserializeNBT(data.getCompoundTag("filterSlot")) } + if (data.hasKey("maxStoredItems", Constants.NBT.TAG_INT)) { + maxStoredItems = data.getInteger("maxStoredItems") + } + if (data.hasKey("itemsStored", Constants.NBT.TAG_INT)) { + itemsStored = data.getInteger("itemsStored") + } + if (data.hasKey("storedStack", Constants.NBT.TAG_COMPOUND)) { + currentInsertedStack = ItemStack(data.getCompoundTag("storedStack")) + } + if (data.hasKey("filterSlot", Constants.NBT.TAG_COMPOUND)) { + filterSlot.deserializeNBT(data.getCompoundTag("filterSlot")) + } } override fun writeItemStackNbt(data: NBTTagCompound) { @@ -233,53 +286,106 @@ class StorageContainerMetaTileEntity( @SideOnly(Side.CLIENT) override fun registerItemModel(item: Item, meta: Int) { - ModelLoader.setCustomModelResourceLocation(item, meta, ModelResourceLocation(this.metaTileEntityId, "inventory")) + ModelLoader.setCustomModelResourceLocation( + item, + meta, + ModelResourceLocation(this.metaTileEntityId, "inventory") + ) } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(IKey.dynamic { "$itemsStored / $maxStoredItems" }.asWidget() - .widthRel(0.5f).align(Alignment.BottomRight)) - .child(Column().widthRel(0.6f).height(26) - .child(largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) - .align(Alignment.CenterLeft)) - .child(largeSlot(SyncHandlers.itemSlot(exportItems, 0).accessibility(/* canPut = */ false, /* canTake = */ true)) - .align(Alignment.CenterRight)) - .align(Alignment.Center)) - .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(filterSlot, 0)) - .right(10).top(15)) + .child( + IKey.dynamic { "$itemsStored / $maxStoredItems" } + .asWidget() + .widthRel(0.5f) + .align(Alignment.BottomRight) + ) + .child( + Column() + .widthRel(0.6f) + .height(26) + .child( + largeSlot(SyncHandlers.itemSlot(importItems, 0).singletonSlotGroup()) + .align(Alignment.CenterLeft) + ) + .child( + largeSlot( + SyncHandlers.itemSlot(exportItems, 0) + .accessibility(/* canPut= */ false, /* canTake= */ true) + ) + .align(Alignment.CenterRight) + ) + .align(Alignment.Center) + ) + .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(filterSlot, 0)).right(10).top(15)) } @SideOnly(Side.CLIENT) - override fun bakeQuads(getter: java.util.function.Function, faceBakery: FaceBakery) { - sideQuads = EnumFacing.HORIZONTALS.associateWith { - ModelTextures.createQuad(it, getter.apply(clayiumId("blocks/storage_container_side_composed"))) - } - sideQuadsUpgraded = EnumFacing.entries.map { - when (it) { - EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.EAST, EnumFacing.WEST - -> ModelTextures.createQuad(it, getter.apply(clayiumId("blocks/storage_container_side_upgraded"))) - EnumFacing.UP - -> ModelTextures.createQuad(it, getter.apply(clayiumId("blocks/storage_container_top_upgraded"))) - EnumFacing.DOWN - -> ModelTextures.createQuad(it, getter.apply(clayiumId("blocks/storage_container_upgraded_base"))) + override fun bakeQuads( + getter: java.util.function.Function, + faceBakery: FaceBakery + ) { + sideQuads = + EnumFacing.HORIZONTALS.associateWith { + ModelTextures.createQuad( + it, + getter.apply(clayiumId("blocks/storage_container_side_composed")) + ) } - } - upQuad = ModelTextures.createQuad(EnumFacing.UP, getter.apply(clayiumId("blocks/storage_container_top_composed"))) - downQuad = ModelTextures.createQuad(EnumFacing.DOWN, getter.apply(clayiumId("blocks/storage_container_top_composed")), - uv = floatArrayOf(16f, 16f, 0f, 0f)) + sideQuadsUpgraded = + EnumFacing.entries.map { + when (it) { + EnumFacing.NORTH, + EnumFacing.SOUTH, + EnumFacing.EAST, + EnumFacing.WEST -> + ModelTextures.createQuad( + it, + getter.apply(clayiumId("blocks/storage_container_side_upgraded")) + ) + EnumFacing.UP -> + ModelTextures.createQuad( + it, + getter.apply(clayiumId("blocks/storage_container_top_upgraded")) + ) + EnumFacing.DOWN -> + ModelTextures.createQuad( + it, + getter.apply(clayiumId("blocks/storage_container_upgraded_base")) + ) + } + } + upQuad = + ModelTextures.createQuad( + EnumFacing.UP, + getter.apply(clayiumId("blocks/storage_container_top_composed")) + ) + downQuad = + ModelTextures.createQuad( + EnumFacing.DOWN, + getter.apply(clayiumId("blocks/storage_container_top_composed")), + uv = floatArrayOf(16f, 16f, 0f, 0f) + ) } @SideOnly(Side.CLIENT) - override fun getQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun getQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { if (state == null || side == null) return val isUpgraded = this.maxStoredItems == UPGRADED_MAX_AMOUNT if (isUpgraded) { quads.add(sideQuadsUpgraded[side.index]) } else { when (side) { - EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.EAST - -> sideQuads[side]?.let(quads::add) + EnumFacing.NORTH, + EnumFacing.SOUTH, + EnumFacing.WEST, + EnumFacing.EAST -> sideQuads[side]?.let(quads::add) EnumFacing.UP -> quads.add(upQuad) EnumFacing.DOWN -> quads.add(downQuad) } @@ -291,7 +397,8 @@ class StorageContainerMetaTileEntity( val pos = this.pos ?: return if (world?.getBlockState(pos)?.getValue(BlockMachine.IS_PIPE) == true) return - val stack = if (currentInsertedStack.isEmpty) filterSlot.getStackInSlot(0) else currentInsertedStack + val stack = + if (currentInsertedStack.isEmpty) filterSlot.getStackInSlot(0) else currentInsertedStack if (stack.isEmpty) return val mc = Minecraft.getMinecraft() @@ -338,6 +445,7 @@ class StorageContainerMetaTileEntity( private inner class StorageContainerItemHandler : IItemHandler { override fun getSlots() = 1 + override fun getSlotLimit(slot: Int) = maxStoredItems override fun getStackInSlot(slot: Int): ItemStack { @@ -349,9 +457,12 @@ class StorageContainerMetaTileEntity( override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean): ItemStack { if (stack.isEmpty) return ItemStack.EMPTY - if (!(filterSlot.getStackInSlot(0).canActuallyStack(stack) - && currentInsertedStack.canActuallyStack(stack) - && exportItems.getStackInSlot(0).canActuallyStack(stack))) return stack + if ( + !(filterSlot.getStackInSlot(0).canActuallyStack(stack) && + currentInsertedStack.canActuallyStack(stack) && + exportItems.getStackInSlot(0).canActuallyStack(stack)) + ) + return stack val amountToInsert = stack.count.coerceAtMost(maxStoredItems - itemsStored) val copiedStack = stack.copy() @@ -361,7 +472,9 @@ class StorageContainerMetaTileEntity( if (currentInsertedStack.isEmpty) { currentInsertedStack = stack.copy().apply { count = 1 } itemsStored = amountToInsert - writeCustomData(UPDATE_STORED_ITEMSTACK) { writeItemStack(currentInsertedStack) } + writeCustomData(UPDATE_STORED_ITEMSTACK) { + writeItemStack(currentInsertedStack) + } } else { itemsStored += amountToInsert } @@ -392,12 +505,15 @@ class StorageContainerMetaTileEntity( extractItem(0, extractedAmount, false) } } + override fun getSlots() = 1 + override fun getSlotLimit(slot: Int) = 64 override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean): ItemStack { return itemInventory.insertItem(0, stack, simulate) } + override fun extractItem(slot: Int, amount: Int, simulate: Boolean): ItemStack { return itemInventory.extractItem(0, amount, simulate) } @@ -412,13 +528,9 @@ class StorageContainerMetaTileEntity( const val INITIAL_MAX_AMOUNT = 65536 const val UPGRADED_MAX_AMOUNT = Int.MAX_VALUE - @SideOnly(Side.CLIENT) - private lateinit var sideQuads: Map - @SideOnly(Side.CLIENT) - private lateinit var sideQuadsUpgraded: List - @SideOnly(Side.CLIENT) - private lateinit var upQuad: BakedQuad - @SideOnly(Side.CLIENT) - private lateinit var downQuad: BakedQuad + @SideOnly(Side.CLIENT) private lateinit var sideQuads: Map + @SideOnly(Side.CLIENT) private lateinit var sideQuadsUpgraded: List + @SideOnly(Side.CLIENT) private lateinit var upQuad: BakedQuad + @SideOnly(Side.CLIENT) private lateinit var downQuad: BakedQuad } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/VoidContainerMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/VoidContainerMetaTileEntity.kt index bf2544b2e..da1d5a79d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/VoidContainerMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/VoidContainerMetaTileEntity.kt @@ -39,9 +39,15 @@ import java.util.function.Function class VoidContainerMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, bufferValidInputModes, onlyNoneList, "void_container") { +) : MetaTileEntity(metaTileEntityId, tier, bufferValidInputModes, onlyNoneList, "void_container") { override val requiredTextures: List - get() = listOf(clayiumId("blocks/void_container"), clayiumId("blocks/void_container_side"), clayiumId("blocks/void_container_top")) + get() = + listOf( + clayiumId("blocks/void_container"), + clayiumId("blocks/void_container_side"), + clayiumId("blocks/void_container_top") + ) + override val faceTexture = clayiumId("blocks/void_container") override val importItems: IItemHandlerModifiable = VoidContainerItemHandler() @@ -49,15 +55,20 @@ class VoidContainerMetaTileEntity( override val itemInventory = importItems private val autoIoHandler: AutoIoHandler = AutoIoHandler.Combined(this) - private val filterSlot = ClayiumItemStackHandler(this, 1) - private val filterStack get() = filterSlot.getStackInSlot(0) + private val filterSlot = ClayiumItemStackHandler(this, 1) + private val filterStack + get() = filterSlot.getStackInSlot(0) private var lastFilterStack: ItemStack = ItemStack.EMPTY + override fun update() { super.update() if (isRemote || offsetTimer % 100 != 0L) return - if (filterStack.isEmpty && lastFilterStack.isEmpty - || ItemHandlerHelper.canItemStacksStack(lastFilterStack, filterStack)) return + if ( + filterStack.isEmpty && lastFilterStack.isEmpty || + ItemHandlerHelper.canItemStacksStack(lastFilterStack, filterStack) + ) + return lastFilterStack = filterStack.copy() writeCustomData(UPDATE_FILTER_ITEM) { writeItemStack(filterStack) } } @@ -68,11 +79,16 @@ class VoidContainerMetaTileEntity( override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(largeSlot(SyncHandlers.itemSlot(importItems, 0) - .filter { filterStack.isEmpty || ItemHandlerHelper.canItemStacksStack(it, filterStack) }) - .align(Alignment.Center)) - .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(filterSlot, 0)) - .right(10).top(15)) + .child( + largeSlot( + SyncHandlers.itemSlot(importItems, 0).filter { + filterStack.isEmpty || + ItemHandlerHelper.canItemStacksStack(it, filterStack) + } + ) + .align(Alignment.Center) + ) + .child(ItemSlot().slot(SyncHandlers.phantomItemSlot(filterSlot, 0)).right(10).top(15)) } override fun receiveCustomData(discriminator: Int, buf: PacketBuffer) { @@ -104,19 +120,39 @@ class VoidContainerMetaTileEntity( } @SideOnly(Side.CLIENT) - override fun bakeQuads(getter: Function, faceBakery: FaceBakery) { + override fun bakeQuads( + getter: Function, + faceBakery: FaceBakery + ) { val sprite = getter.apply(clayiumId("blocks/void_container_side")) voidContainerSide = EnumFacing.HORIZONTALS.map { ModelTextures.createQuad(it, sprite) } - voidContainerTop = ModelTextures.createQuad(EnumFacing.UP, getter.apply(clayiumId("blocks/void_container_top"))) - voidContainerBottom = ModelTextures.createQuad(EnumFacing.DOWN, getter.apply(clayiumId("blocks/void_container_top")), uv = floatArrayOf(16f, 16f, 0f, 0f)) + voidContainerTop = + ModelTextures.createQuad( + EnumFacing.UP, + getter.apply(clayiumId("blocks/void_container_top")) + ) + voidContainerBottom = + ModelTextures.createQuad( + EnumFacing.DOWN, + getter.apply(clayiumId("blocks/void_container_top")), + uv = floatArrayOf(16f, 16f, 0f, 0f) + ) } @SideOnly(Side.CLIENT) - override fun overlayQuads(quads: MutableList, state: IBlockState?, side: EnumFacing?, rand: Long) { + override fun overlayQuads( + quads: MutableList, + state: IBlockState?, + side: EnumFacing?, + rand: Long + ) { super.overlayQuads(quads, state, side, rand) if (state == null || side == null || side == this.frontFacing) return when (side) { - EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.EAST -> quads.add(voidContainerSide[side.horizontalIndex]) + EnumFacing.NORTH, + EnumFacing.SOUTH, + EnumFacing.WEST, + EnumFacing.EAST -> quads.add(voidContainerSide[side.horizontalIndex]) EnumFacing.UP -> quads.add(voidContainerTop) EnumFacing.DOWN -> quads.add(voidContainerBottom) } @@ -150,7 +186,11 @@ class VoidContainerMetaTileEntity( @SideOnly(Side.CLIENT) override fun registerItemModel(item: Item, meta: Int) { - ModelLoader.setCustomModelResourceLocation(item, meta, ModelResourceLocation(this.metaTileEntityId, "inventory")) + ModelLoader.setCustomModelResourceLocation( + item, + meta, + ModelResourceLocation(this.metaTileEntityId, "inventory") + ) } private inner class VoidContainerItemHandler : VoidingItemHandler() { @@ -167,4 +207,4 @@ class VoidContainerMetaTileEntity( private lateinit var voidContainerTop: BakedQuad private lateinit var voidContainerBottom: BakedQuad } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/WaterwheelMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/WaterwheelMetaTileEntity.kt index 20c7f7b60..45a7ca086 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/WaterwheelMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/WaterwheelMetaTileEntity.kt @@ -29,7 +29,14 @@ import kotlin.math.pow class WaterwheelMetaTileEntity( metaTileEntityId: ResourceLocation, tier: ITier, -) : MetaTileEntity(metaTileEntityId, tier, onlyNoneList, onlyNoneList, "waterwheel",) { +) : + MetaTileEntity( + metaTileEntityId, + tier, + onlyNoneList, + onlyNoneList, + "waterwheel", + ) { override val faceTexture = clayiumId("blocks/waterwheel") override val importItems = EmptyItemStackHandler override val exportItems = EmptyItemStackHandler @@ -64,8 +71,11 @@ class WaterwheelMetaTileEntity( private fun emitEnergy() { val pos = pos ?: return for (side in EnumFacing.entries) { - val energyHolder = world?.getTileEntity(pos.offset(side))?.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, side.opposite) - ?: continue + val energyHolder = + world + ?.getTileEntity(pos.offset(side)) + ?.getCapability(ClayiumTileCapabilities.CLAY_ENERGY_HOLDER, side.opposite) + ?: continue val mte = world?.getMetaTileEntity(pos.offset(side)) if (mte != null && mte.tier.numeric > ConfigCore.misc.waterwheelMaxTier) { @@ -79,20 +89,49 @@ class WaterwheelMetaTileEntity( } override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - syncManager.syncValue("waterCount", SyncHandlers.intNumber({ waterCount }, { waterCount = it })) + syncManager.syncValue( + "waterCount", + SyncHandlers.intNumber({ waterCount }, { waterCount = it }) + ) syncManager.syncValue("progress", SyncHandlers.intNumber({ progress }, { progress = it })) return ModularPanel.defaultPanel("waterwheel", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT - 50) - .child(Column().margin(7) - .child(ParentWidget().widthRel(1f).expanded().marginBottom(2) - .child(IKey.lang(this.translationKey, IKey.lang(tier.prefixTranslationKey)).asWidget() - .align(Alignment.TopLeft)) - .child(IKey.lang("container.inventory").asWidget() - .align(Alignment.BottomLeft)) - .child(IKey.dynamic { I18n.format("gui.clayium.waterwheel.waters", waterCount) }.asWidget() - .widthRel(0.3f).align(Alignment.CenterRight)) - .child(IKey.dynamic { I18n.format("gui.clayium.waterwheel.progress", progress) }.asWidget() - .widthRel(0.6f).align(Alignment.CenterLeft))) - .child(SlotGroupWidget.playerInventory(0))) + .child( + Column() + .margin(7) + .child( + ParentWidget() + .widthRel(1f) + .expanded() + .marginBottom(2) + .child( + IKey.lang(this.translationKey, IKey.lang(tier.prefixTranslationKey)) + .asWidget() + .align(Alignment.TopLeft) + ) + .child( + IKey.lang("container.inventory") + .asWidget() + .align(Alignment.BottomLeft) + ) + .child( + IKey.dynamic { + I18n.format("gui.clayium.waterwheel.waters", waterCount) + } + .asWidget() + .widthRel(0.3f) + .align(Alignment.CenterRight) + ) + .child( + IKey.dynamic { + I18n.format("gui.clayium.waterwheel.progress", progress) + } + .asWidget() + .widthRel(0.6f) + .align(Alignment.CenterLeft) + ) + ) + .child(SlotGroupWidget.playerInventory(0)) + ) } private fun getWaterFlowsCount(): Int { @@ -104,7 +143,10 @@ class WaterwheelMetaTileEntity( for (dz in -1..1) { val state = world.getBlockState(pos.add(dx, dy, dz)) val block = state.block - if ((block === Blocks.WATER || block === Blocks.FLOWING_WATER) && state.getValue(BlockLiquid.LEVEL) != 0) { + if ( + (block === Blocks.WATER || block === Blocks.FLOWING_WATER) && + state.getValue(BlockLiquid.LEVEL) != 0 + ) { waterFlows++ } } @@ -116,4 +158,4 @@ class WaterwheelMetaTileEntity( companion object { private const val MAX_PROGRESS = 20_000 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/CaReactorMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/CaReactorMetaTileEntity.kt index 685be88ab..21d750cf4 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/CaReactorMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/CaReactorMetaTileEntity.kt @@ -47,9 +47,14 @@ class CaReactorMetaTileEntity( private val multiblockLogic = MultiblockLogic(this, ::checkStructure) fun getFaceInvalid(): ResourceLocation = clayiumId("blocks/ca_reactor_core_invalid") + fun getFaceValid() = clayiumId("blocks/ca_reactor_core_valid") - override val faceTexture get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() - override val requiredTextures get() = listOf(getFaceValid(), getFaceInvalid()) + + override val faceTexture + get() = if (multiblockLogic.structureFormed) getFaceValid() else getFaceInvalid() + + override val requiredTextures + get() = listOf(getFaceValid(), getFaceInvalid()) override val importItems = NotifiableItemStackHandler(this, 1, this, isExport = false) override val exportItems = NotifiableItemStackHandler(this, 1, this, isExport = true) @@ -61,17 +66,19 @@ class CaReactorMetaTileEntity( private var cePerTickMultiplier = 0.0 /** - * if the structure is invalid, the reason should be stored here. - * null if the structure is valid. + * if the structure is invalid, the reason should be stored here. null if the structure is + * valid. */ private var errorMsg: ITextComponent? = null - private val supportedHullTierRange = when (tier.numeric) { - 10 -> 1..2 - 11 -> 1..6 - 12, 13 -> 1..10 - else -> IntRange.EMPTY - } + private val supportedHullTierRange = + when (tier.numeric) { + 10 -> 1..2 + 11 -> 1..6 + 12, + 13 -> 1..10 + else -> IntRange.EMPTY + } override val workable: AbstractRecipeLogic = CaReactorRecipeLogic() @@ -82,9 +89,11 @@ class CaReactorMetaTileEntity( val pos = pos ?: return Invalid val world = world ?: return Invalid - val firstCoilPos = EnumFacing.entries.firstNotNullOfOrNull { - if (world.getBlockState(pos.offset(it)).block is BlockCaReactorCoil) pos.offset(it) else null - } + val firstCoilPos = + EnumFacing.entries.firstNotNullOfOrNull { + if (world.getBlockState(pos.offset(it)).block is BlockCaReactorCoil) pos.offset(it) + else null + } if (firstCoilPos == null) { errorMsg = TextComponentTranslation("message.clayium.ca_reactor.no_near_coil") return Invalid @@ -108,7 +117,11 @@ class CaReactorMetaTileEntity( when { metaTileEntity is IMultiblockPart -> { if (metaTileEntity.tier.numeric < this.tier.numeric) { - errorMsg = TextComponentTranslation("message.clayium.ca_reactor.insufficient_tier_interface", pos) + errorMsg = + TextComponentTranslation( + "message.clayium.ca_reactor.insufficient_tier_interface", + pos + ) return Invalid } parts.add(metaTileEntity) @@ -117,19 +130,31 @@ class CaReactorMetaTileEntity( block is BlockCaReactorHull -> { val hullRank = block.getCaRank(world, pos) if (hullRank !in supportedHullTierRange) { - errorMsg = TextComponentTranslation("message.clayium.ca_reactor.too_high_tier_hull", pos) + errorMsg = + TextComponentTranslation( + "message.clayium.ca_reactor.too_high_tier_hull", + pos + ) return Invalid } hullRanks.add(hullRank) } block is BlockCaReactorCoil -> { if (block.getTier(world, pos).numeric < this.tier.numeric) { - errorMsg = TextComponentTranslation("message.clayium.ca_reactor.insufficient_tier_coil", pos) + errorMsg = + TextComponentTranslation( + "message.clayium.ca_reactor.insufficient_tier_coil", + pos + ) return Invalid } } else -> { - errorMsg = TextComponentTranslation("message.clayium.ca_reactor.invalid_coil", coilPos) + errorMsg = + TextComponentTranslation( + "message.clayium.ca_reactor.invalid_coil", + coilPos + ) return Invalid } } @@ -147,10 +172,14 @@ class CaReactorMetaTileEntity( return StructureValidationResult.Valid(parts, emptyList()) } - private fun searchAndValidateAdjacentCoil(coilPos: BlockPos, walked: MutableSet): Boolean { + private fun searchAndValidateAdjacentCoil( + coilPos: BlockPos, + walked: MutableSet + ): Boolean { if (walked.contains(coilPos)) return true if (walked.size > MAX_COILS) { - errorMsg = TextComponentTranslation("message.clayium.ca_reactor.too_many_coils", MAX_COILS) + errorMsg = + TextComponentTranslation("message.clayium.ca_reactor.too_many_coils", MAX_COILS) return false } walked.add(coilPos) @@ -183,31 +212,62 @@ class CaReactorMetaTileEntity( override fun createMetaTileEntity() = CaReactorMetaTileEntity(metaTileEntityId, tier) override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { - syncManager.syncValue("caReactorEfficiency", SyncHandlers.doubleNumber(::efficiency, ::efficiency::set)) - syncManager.syncValue("caReactorAvgHullRank", SyncHandlers.intNumber(::avgHullRank, ::avgHullRank::set)) - syncManager.syncValue("caReactorHullCount", SyncHandlers.intNumber(::hullCount, ::hullCount::set)) + syncManager.syncValue( + "caReactorEfficiency", + SyncHandlers.doubleNumber(::efficiency, ::efficiency::set) + ) + syncManager.syncValue( + "caReactorAvgHullRank", + SyncHandlers.intNumber(::avgHullRank, ::avgHullRank::set) + ) + syncManager.syncValue( + "caReactorHullCount", + SyncHandlers.intNumber(::hullCount, ::hullCount::set) + ) return super.buildMainParentWidget(syncManager) - .child(ButtonWidget().height(12).widthRel(0.45f) - .background(GuiTextures.BUTTON_CLEAN) - .overlay(IKey.dynamic { - if (multiblockLogic.structureFormed) - I18n.format("gui.clayium.ca_reactor.constructed") - else - I18n.format("gui.clayium.ca_reactor.invalid") - }) - .align(Alignment.BottomRight) - .syncHandler(InteractionSyncHandler().setOnMousePressed { mouseData -> - if (multiblockLogic.structureFormed || mouseData.isClient) return@setOnMousePressed - val err = errorMsg ?: return@setOnMousePressed - syncManager.player.sendMessage(err) - }) + .child( + ButtonWidget() + .height(12) + .widthRel(0.45f) + .background(GuiTextures.BUTTON_CLEAN) + .overlay( + IKey.dynamic { + if (multiblockLogic.structureFormed) + I18n.format("gui.clayium.ca_reactor.constructed") + else I18n.format("gui.clayium.ca_reactor.invalid") + } + ) + .align(Alignment.BottomRight) + .syncHandler( + InteractionSyncHandler().setOnMousePressed { mouseData -> + if (multiblockLogic.structureFormed || mouseData.isClient) + return@setOnMousePressed + val err = errorMsg ?: return@setOnMousePressed + syncManager.player.sendMessage(err) + } + ) ) - .child(IKey.dynamic { I18n.format("gui.clayium.ca_reactor.efficiency", NumberFormat.formatWithMaxDigits(efficiency)) } - .asWidgetResizing().alignment(Alignment.CenterRight).alignX(Alignment.BottomRight.x).bottom(14) + .child( + IKey.dynamic { + I18n.format( + "gui.clayium.ca_reactor.efficiency", + NumberFormat.formatWithMaxDigits(efficiency) + ) + } + .asWidgetResizing() + .alignment(Alignment.CenterRight) + .alignX(Alignment.BottomRight.x) + .bottom(14) + ) + .child( + IKey.dynamic { + I18n.format("gui.clayium.ca_reactor.rank_size", avgHullRank, hullCount) + } + .asWidgetResizing() + .left(0) + .top(10) ) - .child(IKey.dynamic { I18n.format("gui.clayium.ca_reactor.rank_size", avgHullRank, hullCount) } - .asWidgetResizing().left(0).top(10)) } companion object { @@ -219,7 +279,9 @@ class CaReactorMetaTileEntity( val caReactorRegistry = CaReactorRecipeRegistry("ca_reactor") private fun getEfficiency(averageRank: Double, hullCount: Int): Double { - return EFFICIENCY_MULTIPLIER * EFFICIENCY_BASE.pow(averageRank - 1) * 1.02.pow(hullCount) + return EFFICIENCY_MULTIPLIER * + EFFICIENCY_BASE.pow(averageRank - 1) * + 1.02.pow(hullCount) } private fun getCEPerTickMultiplier(averageRank: Double, hullCount: Int): Double { @@ -227,18 +289,31 @@ class CaReactorMetaTileEntity( } } - private inner class CaReactorRecipeLogic : MultiblockRecipeLogic(this@CaReactorMetaTileEntity, caReactorRegistry, multiblockLogic) { + private inner class CaReactorRecipeLogic : + MultiblockRecipeLogic(this@CaReactorMetaTileEntity, caReactorRegistry, multiblockLogic) { override fun trySearchNewRecipe() { - val recipe = caReactorRegistry.findRecipeWithRank(tier.numeric, avgHullRank, inputInventory.toList()) + val recipe = + caReactorRegistry.findRecipeWithRank( + tier.numeric, + avgHullRank, + inputInventory.toList() + ) if (recipe == null) { invalidInputsForRecipes = true return } val duration = (recipe.duration / efficiency).toLong() val cePerTick = ClayEnergy((recipe.cePerTick.energy * cePerTickMultiplier).toLong()) - val multipliedRecipe = Recipe(recipe.inputs, recipe.outputs, recipe.chancedOutputs, - duration, cePerTick, recipe.recipeTier) + val multipliedRecipe = + Recipe( + recipe.inputs, + recipe.outputs, + recipe.chancedOutputs, + duration, + cePerTick, + recipe.recipeTier + ) prepareRecipe(multipliedRecipe) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/RedstoneProxyMetaTileEntity.kt b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/RedstoneProxyMetaTileEntity.kt index 2339fc77c..94ca49bb2 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/RedstoneProxyMetaTileEntity.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/metatileentities/multiblock/RedstoneProxyMetaTileEntity.kt @@ -27,9 +27,7 @@ class RedstoneProxyMetaTileEntity( ) : ProxyMetaTileEntityBase(metaTileEntityId, tier, "redstone_proxy") { init { - /** - * this machine has a synchro part by default = remote sync is enabled by default. - */ + /** this machine has a synchro part by default = remote sync is enabled by default. */ this.hasSynchroParts = true } @@ -45,11 +43,14 @@ class RedstoneProxyMetaTileEntity( markDirty() } } + private var power: Int = 0 set(value) { val notifyFlag = field != value field = value - if (notifyFlag) { notifyNeighbors() } + if (notifyFlag) { + notifyNeighbors() + } } override fun createMetaTileEntity(): MetaTileEntity { @@ -60,7 +61,8 @@ class RedstoneProxyMetaTileEntity( super.update() val world = world ?: return if (world.isRemote) return - val controllable = target?.getCapability(ClayiumTileCapabilities.CONTROLLABLE, null) ?: return + val controllable = + target?.getCapability(ClayiumTileCapabilities.CONTROLLABLE, null) ?: return when (this.mode) { Mode.NONE -> {} Mode.EMIT_IF_IDLE -> power = if (controllable.isWorking) 0 else 15 @@ -87,21 +89,29 @@ class RedstoneProxyMetaTileEntity( } override fun canLink(target: MetaTileEntity): Boolean { - return super.canLink(target) && target.getCapability(ClayiumTileCapabilities.CONTROLLABLE, null) != null + return super.canLink(target) && + target.getCapability(ClayiumTileCapabilities.CONTROLLABLE, null) != null } override fun buildUI(data: MetaTileEntityGuiData, syncManager: GuiSyncManager): ModularPanel { - return ModularPanel.defaultPanel("redstone_proxy.$tier", GUI_DEFAULT_WIDTH, GUI_DEFAULT_HEIGHT - 20) + return ModularPanel.defaultPanel( + "redstone_proxy.$tier", + GUI_DEFAULT_WIDTH, + GUI_DEFAULT_HEIGHT - 20 + ) .columnWithPlayerInv { child(buildMainParentWidget(syncManager)) } } override fun buildMainParentWidget(syncManager: GuiSyncManager): ParentWidget<*> { return super.buildMainParentWidget(syncManager) - .child(CycleButtonWidget() - .align(Alignment.Center).widthRel(0.7f).height(24) - .length(Mode.entries.size) - .value(IntSyncValue({ mode.ordinal }, { mode = Mode.entries[it] })) - .overlay(IKey.dynamic { I18n.format(mode.translationKey) }) + .child( + CycleButtonWidget() + .align(Alignment.Center) + .widthRel(0.7f) + .height(24) + .length(Mode.entries.size) + .value(IntSyncValue({ mode.ordinal }, { mode = Mode.entries[it] })) + .overlay(IKey.dynamic { I18n.format(mode.translationKey) }) ) } @@ -127,6 +137,5 @@ class RedstoneProxyMetaTileEntity( EMIT_IF_WORKING("gui.$MOD_ID.redstone_proxy.emit_if_working"), DO_WORK_IF_POWERED("gui.$MOD_ID.redstone_proxy.do_work_if_powered"), DO_WORK_IF_NOT_POWERED("gui.$MOD_ID.redstone_proxy.do_work_if_not_powered"), - ; } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/network/CNetwork.kt b/src/main/kotlin/com/github/trc/clayium/common/network/CNetwork.kt index ac2c05ed1..828cc9e6c 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/network/CNetwork.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/network/CNetwork.kt @@ -11,6 +11,11 @@ object CNetwork { fun init() { var id = 0 - channel.registerMessage(KeyInputPacketHandler, KeyInputPacket::class.java, id++, Side.SERVER) + channel.registerMessage( + KeyInputPacketHandler, + KeyInputPacket::class.java, + id++, + Side.SERVER + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/network/KeyInputPacket.kt b/src/main/kotlin/com/github/trc/clayium/common/network/KeyInputPacket.kt index c9cbbd3c0..4fefe914a 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/network/KeyInputPacket.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/network/KeyInputPacket.kt @@ -6,9 +6,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage class KeyInputPacket() : IMessage { - /** - * Client Only - */ + /** Client Only */ constructor(updating: List) : this() { this.updating = updating this.data = updating.map { KeyInput.MutBooleanPairKeyData(it.isKeyDown(), it.isPressed()) } @@ -39,4 +37,4 @@ class KeyInputPacket() : IMessage { buf.writeBoolean(key.isPressed()) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/network/handlers/KeyInputPacketHandler.kt b/src/main/kotlin/com/github/trc/clayium/common/network/handlers/KeyInputPacketHandler.kt index 98c8779a6..ba73ec8c3 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/network/handlers/KeyInputPacketHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/network/handlers/KeyInputPacketHandler.kt @@ -15,4 +15,4 @@ object KeyInputPacketHandler : IMessageHandler { } return null } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/pan/PanRecipe.kt b/src/main/kotlin/com/github/trc/clayium/common/pan/PanRecipe.kt index 56207683c..f58a6390f 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/pan/PanRecipe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/pan/PanRecipe.kt @@ -10,6 +10,9 @@ data class PanRecipe( override val results: List, override val requiredClayEnergy: ClayEnergy ) : IPanRecipe { - constructor(ingredient: CRecipeInput, result: ItemStack, requiredClayEnergy: ClayEnergy) - : this(listOf(ingredient), listOf(result), requiredClayEnergy) + constructor( + ingredient: CRecipeInput, + result: ItemStack, + requiredClayEnergy: ClayEnergy + ) : this(listOf(ingredient), listOf(result), requiredClayEnergy) } diff --git a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CPanRecipeFactory.kt b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CPanRecipeFactory.kt index f5e3c9b28..1fe624973 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CPanRecipeFactory.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CPanRecipeFactory.kt @@ -12,25 +12,41 @@ import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockAccess object CPanRecipeFactory : IPanRecipeFactory { - override fun getEntry(world: IBlockAccess, pos: BlockPos, stacks: List, laserEnergy: Double, laserCostPerTick: ClayEnergy): IPanRecipe? { + override fun getEntry( + world: IBlockAccess, + pos: BlockPos, + stacks: List, + laserEnergy: Double, + laserCostPerTick: ClayEnergy + ): IPanRecipe? { val metaTileEntity = world.getMetaTileEntity(pos) if (metaTileEntity is ClayReactorMetaTileEntity) { return getEntryClayReactor(metaTileEntity, stacks, laserEnergy, laserCostPerTick) } - val recipe = metaTileEntity - ?.getCapability(ClayiumTileCapabilities.RECIPE_LOGIC, null) - ?.recipeProvider - ?.searchRecipe(Int.MAX_VALUE, stacks) - ?: return null + val recipe = + metaTileEntity + ?.getCapability(ClayiumTileCapabilities.RECIPE_LOGIC, null) + ?.recipeProvider + ?.searchRecipe(Int.MAX_VALUE, stacks) ?: return null return PanRecipe(recipe.inputs, recipe.copyOutputs(), recipe.cePerTick * recipe.duration) } - private fun getEntryClayReactor(clayReactor: ClayReactorMetaTileEntity, stacks: List, laserEnergy: Double, laserCostPerTick: ClayEnergy): IPanRecipe? { - val recipe = clayReactor.workable.recipeProvider.searchRecipe(Int.MAX_VALUE, stacks) ?: return null + private fun getEntryClayReactor( + clayReactor: ClayReactorMetaTileEntity, + stacks: List, + laserEnergy: Double, + laserCostPerTick: ClayEnergy + ): IPanRecipe? { + val recipe = + clayReactor.workable.recipeProvider.searchRecipe(Int.MAX_VALUE, stacks) ?: return null val finalizedDuration = recipe.duration.toDouble() / (laserEnergy + 1.0) val laserEnergyCost = laserCostPerTick * finalizedDuration - return PanRecipe(recipe.inputs, recipe.copyOutputs(), recipe.cePerTick * finalizedDuration + laserEnergyCost) + return PanRecipe( + recipe.inputs, + recipe.copyOutputs(), + recipe.cePerTick * finalizedDuration + laserEnergyCost + ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CraftingTablePanRecipeFactory.kt b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CraftingTablePanRecipeFactory.kt index c2bd71dfa..3e20c17a8 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CraftingTablePanRecipeFactory.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/CraftingTablePanRecipeFactory.kt @@ -20,7 +20,13 @@ object CraftingTablePanRecipeFactory : IPanRecipeFactory { private val ENERGY = ClayEnergy.micro(100) - override fun getEntry(world: IBlockAccess, pos: BlockPos, stacks: List, laserEnergy: Double, laserCostPerTick: ClayEnergy): IPanRecipe? { + override fun getEntry( + world: IBlockAccess, + pos: BlockPos, + stacks: List, + laserEnergy: Double, + laserCostPerTick: ClayEnergy + ): IPanRecipe? { if (world.getBlockState(pos).block !== Blocks.CRAFTING_TABLE || world !is World) return null val matrix = InventoryCrafting(DummyContainer, 3, 3) @@ -28,14 +34,15 @@ object CraftingTablePanRecipeFactory : IPanRecipeFactory { val recipe: IRecipe = CraftingManager.findMatchingRecipe(matrix, world) ?: return null val output = recipe.recipeOutput.copy() - val inputs = recipe.ingredients.map { ingredient -> - // field `matchingStacks` and method `getMatchingStacks` is not the same. - // `matchingStacks` is an empty list in OreIngredient. - val stacks = ingredient.getMatchingStacks() - // todo: use cached recipe inputs instead of creating new one - CItemRecipeInput(stacks.map { it.copyWithSize(1) }, 1) - } + val inputs = + recipe.ingredients.map { ingredient -> + // field `matchingStacks` and method `getMatchingStacks` is not the same. + // `matchingStacks` is an empty list in OreIngredient. + val stacks = ingredient.getMatchingStacks() + // todo: use cached recipe inputs instead of creating new one + CItemRecipeInput(stacks.map { it.copyWithSize(1) }, 1) + } return PanRecipe(inputs, listOf(output), ENERGY) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/FurnacePanRecipeFactory.kt b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/FurnacePanRecipeFactory.kt index 2fbe26b45..df243d078 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/pan/factories/FurnacePanRecipeFactory.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/pan/factories/FurnacePanRecipeFactory.kt @@ -17,7 +17,13 @@ object FurnacePanRecipeFactory : IPanRecipeFactory { /** 40u x 200ticks */ private val ENERGY = ClayEnergy.milli(8) - override fun getEntry(world: IBlockAccess, pos: BlockPos, stacks: List, laserEnergy: Double, laserCostPerTick: ClayEnergy): IPanRecipe? { + override fun getEntry( + world: IBlockAccess, + pos: BlockPos, + stacks: List, + laserEnergy: Double, + laserCostPerTick: ClayEnergy + ): IPanRecipe? { if (world.getBlockState(pos).block !== Blocks.FURNACE) return null val actualStacks = stacks.filterNot(ItemStack::isEmpty) @@ -27,4 +33,4 @@ object FurnacePanRecipeFactory : IPanRecipeFactory { if (result.isEmpty) return null return PanRecipe(CItemRecipeInput(stack.copyWithSize(1), 1), result, ENERGY) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/CWTRecipes.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/CWTRecipes.kt index dd329da23..a0f8f0338 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/CWTRecipes.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/CWTRecipes.kt @@ -7,7 +7,10 @@ import net.minecraft.item.ItemStack object CWTRecipes { val CLAY_WORK_TABLE = ClayWorkTableRecipeRegistry() - fun getClayWorkTableRecipe(input: ItemStack, method: ClayWorkTableMethod): ClayWorkTableRecipe? { + fun getClayWorkTableRecipe( + input: ItemStack, + method: ClayWorkTableMethod + ): ClayWorkTableRecipe? { return CLAY_WORK_TABLE.getRecipe(input, method) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/ClayWorkTableRecipe.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/ClayWorkTableRecipe.kt index c951d99b9..aac8630b8 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/ClayWorkTableRecipe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/ClayWorkTableRecipe.kt @@ -22,18 +22,24 @@ class ClayWorkTableRecipe( val primaryOutput = primaryOutput get() = field.copy() + val secondaryOutput = secondaryOutput get() = field.copy() - constructor(input: RecipeInput, primaryOutput: ItemStack, method: ClayWorkTableMethod, clicks: Int) : this(input, primaryOutput, ItemStack.EMPTY, method, clicks) + constructor( + input: RecipeInput, + primaryOutput: ItemStack, + method: ClayWorkTableMethod, + clicks: Int + ) : this(input, primaryOutput, ItemStack.EMPTY, method, clicks) - val outputs get() = listOf(primaryOutput.copy(), secondaryOutput.copy()) + val outputs + get() = listOf(primaryOutput.copy(), secondaryOutput.copy()) init { Preconditions.checkArgument(clicks > 0, "Clicks must be greater than 0, got $clicks") } - fun hasSecondaryOutput(): Boolean { return !secondaryOutput.isEmpty } @@ -42,28 +48,54 @@ class ClayWorkTableRecipe( return this.method == method && this.input.test(input) } - class Builder { private lateinit var input: RecipeInput private val outputs: MutableList = mutableListOf() private lateinit var method: ClayWorkTableMethod private var clicks: Int = 1 - fun input(input: RecipeInput) { this.input = input } - fun method(method: ClayWorkTableMethod) { this.method = method } + fun input(input: RecipeInput) { + this.input = input + } + + fun method(method: ClayWorkTableMethod) { + this.method = method + } + fun clicks(clicks: Int) { Preconditions.checkArgument(clicks > 0, "Clicks must be greater than 0, got $clicks") this.clicks = clicks } - fun input(item: Item, amount: Int = 1) { input(RecipeInput(item, amount)) } - fun input(item: MetaItemClayium.MetaValueItem, amount: Int = 1) { input(RecipeInput(Ingredient.fromStacks(item.getStackForm(1)), amount)) } - fun input(orePrefix: OrePrefix, material: CMaterial, amount: Int = 1) { input(RecipeInput(OreIngredient(UnificationEntry(orePrefix, material).toString()), amount)) } + fun input(item: Item, amount: Int = 1) { + input(RecipeInput(item, amount)) + } + + fun input(item: MetaItemClayium.MetaValueItem, amount: Int = 1) { + input(RecipeInput(Ingredient.fromStacks(item.getStackForm(1)), amount)) + } - fun output(itemStack: ItemStack) { outputs.add(itemStack) } - fun output(item: Item, amount: Int = 1) { output(ItemStack(item, amount)) } - fun output(item: MetaItemClayium.MetaValueItem, amount: Int = 1) { output(item.getStackForm(amount)) } - fun output(orePrefix: OrePrefix, material: CMaterial, amount: Int = 1) { output(OreDictUnifier.get(orePrefix, material, 1)) } + fun input(orePrefix: OrePrefix, material: CMaterial, amount: Int = 1) { + input( + RecipeInput(OreIngredient(UnificationEntry(orePrefix, material).toString()), amount) + ) + } + + fun output(itemStack: ItemStack) { + outputs.add(itemStack) + } + + fun output(item: Item, amount: Int = 1) { + output(ItemStack(item, amount)) + } + + fun output(item: MetaItemClayium.MetaValueItem, amount: Int = 1) { + output(item.getStackForm(amount)) + } + + fun output(orePrefix: OrePrefix, material: CMaterial, amount: Int = 1) { + output(OreDictUnifier.get(orePrefix, material, 1)) + } fun build(): ClayWorkTableRecipe { val primaryOutput = outputs[0] diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/LaserRecipe.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/LaserRecipe.kt index 33cb36b8f..ba2897216 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/LaserRecipe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/LaserRecipe.kt @@ -24,7 +24,8 @@ class LaserRecipe( fun grsMatches(input: Block, meta: Int = W): Boolean { return this.inputBlock === input && this.inputMeta == meta } + fun isSufficient(totalEnergy: Double): Boolean { return requiredEnergy <= totalEnergy } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/Recipe.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/Recipe.kt index ce3c22bdc..14d8130dd 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/Recipe.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/Recipe.kt @@ -14,12 +14,14 @@ data class Recipe( val chancedOutputs: ChancedOutputList?, val duration: Long, val cePerTick: ClayEnergy, - /** - * if `machine.tier.numeric < recipe.tier`, then the recipe is not matched - */ + /** if `machine.tier.numeric < recipe.tier`, then the recipe is not matched */ val recipeTier: Int, ) { - fun matches(consumeOnMatch: Boolean, inputsIn: IItemHandlerModifiable, machineTier: Int): Boolean { + fun matches( + consumeOnMatch: Boolean, + inputsIn: IItemHandlerModifiable, + machineTier: Int + ): Boolean { if (this.recipeTier > machineTier) return false val (isItemsMatched, amountsToConsume) = matchesItems(inputsIn.toList()) @@ -77,4 +79,4 @@ data class Recipe( override fun toString(): String { return "Recipe(inputs=$inputs, outputs=$outputs, duration=$duration, cePerTick=$cePerTick, tierNumeric=$recipeTier)" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeCategory.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeCategory.kt index 13ca714e5..1dfd90f3d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeCategory.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeCategory.kt @@ -3,7 +3,8 @@ package com.github.trc.clayium.common.recipe import com.github.trc.clayium.api.MOD_ID import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap -class RecipeCategory private constructor( +class RecipeCategory +private constructor( val modid: String = MOD_ID, val categoryName: String, ) { @@ -12,6 +13,7 @@ class RecipeCategory private constructor( companion object { val categories = Object2ObjectOpenHashMap() + fun create(modid: String, categoryName: String): RecipeCategory { return categories.computeIfAbsent(createUID(modid, categoryName)) { _ -> RecipeCategory(modid, categoryName) diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeInput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeInput.kt index c0657a1ee..da7be717c 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeInput.kt @@ -11,12 +11,17 @@ class RecipeInput( ) : Predicate { constructor(item: Item, amount: Int) : this(Ingredient.fromStacks(ItemStack(item, 1)), amount) + constructor(itemStack: ItemStack) : this(Ingredient.fromStacks(itemStack), itemStack.count) - // [Ingredient.matchingStacks] returns an empty list in [OreIngredient], so use [Ingredient.getMatchingStacks] instead. - val inputStacks = stacks.getMatchingStacks().map { it.copy().apply { this@apply.count = this@RecipeInput.amount } } + // [Ingredient.matchingStacks] returns an empty list in [OreIngredient], so use + // [Ingredient.getMatchingStacks] instead. + val inputStacks = + stacks.getMatchingStacks().map { + it.copy().apply { this@apply.count = this@RecipeInput.amount } + } override fun test(input: ItemStack): Boolean { return stacks.test(input) && input.count >= amount } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeUtils.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeUtils.kt index aac0988a5..a0ebe14f3 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/RecipeUtils.kt @@ -35,26 +35,37 @@ object RecipeUtils { addShapedRecipe(registryName, result, false, *recipe) } - fun addShapedRecipe(registryName: String, result: ItemStack, isMirrored: Boolean, vararg recipe: Any) { + fun addShapedRecipe( + registryName: String, + result: ItemStack, + isMirrored: Boolean, + vararg recipe: Any + ) { // default modid to clayium - val actualRegName = if (registryName.contains(":")) ResourceLocation(registryName) else clayiumId(registryName) + val actualRegName = + if (registryName.contains(":")) ResourceLocation(registryName) + else clayiumId(registryName) if (validateRecipe(actualRegName, result, recipe)) { ForgeRegistries.RECIPES.register( ShapedOreRecipe(null, result, *finalizeRecipe(recipe)) .setMirrored(isMirrored) - .setRegistryName(actualRegName)) + .setRegistryName(actualRegName) + ) } } fun addShapelessRecipe(registryName: String, result: ItemStack, vararg recipe: Any) { - val actualRegName = if (registryName.contains(":")) ResourceLocation(registryName) else clayiumId(registryName) - ForgeRegistries.RECIPES.register(ShapelessOreRecipe(null, result, *finalizeRecipe(recipe)) - .setRegistryName(actualRegName)) + val actualRegName = + if (registryName.contains(":")) ResourceLocation(registryName) + else clayiumId(registryName) + ForgeRegistries.RECIPES.register( + ShapelessOreRecipe(null, result, *finalizeRecipe(recipe)).setRegistryName(actualRegName) + ) } private fun finalizeRecipe(recipe: Array): Array { val arr = Array(recipe.size) {} - for (i in recipe.indices) { + for (i in recipe.indices) { arr[i] = finalizeIngredient(recipe[i]) } return arr @@ -69,13 +80,20 @@ object RecipeUtils { } } - private fun validateRecipe(registryName: ResourceLocation, result: ItemStack, recipe: Array): Boolean { + private fun validateRecipe( + registryName: ResourceLocation, + result: ItemStack, + recipe: Array + ): Boolean { if (ForgeRegistries.RECIPES.containsKey(registryName)) { - logInvalidRecipe("Recipe $registryName already exists."); return false + logInvalidRecipe("Recipe $registryName already exists.") + return false } else if (recipe.isEmpty()) { - logInvalidRecipe("Recipe $registryName has no ingredients."); return false + logInvalidRecipe("Recipe $registryName has no ingredients.") + return false } else if (result.isEmpty) { - logInvalidRecipe("Recipe $registryName has an empty result."); return false + logInvalidRecipe("Recipe $registryName has an empty result.") + return false } return true @@ -84,4 +102,4 @@ object RecipeUtils { fun logInvalidRecipe(msg: String) { CLog.warn("Invalid Recipe Found.", IllegalArgumentException(msg)) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/ClayFabricatorRecipeBuilder.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/ClayFabricatorRecipeBuilder.kt index c6fbd1bd5..aadf52ac9 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/ClayFabricatorRecipeBuilder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/ClayFabricatorRecipeBuilder.kt @@ -11,9 +11,9 @@ import kotlin.math.pow /** * Builder for creating a recipe for the (solar) clay fabricator. * - * Output is automatically set if input material has clay property or can be set manually. - * Duration is calculated by [requiredTicksCalculator], or can be set manually. - * [cePerTick] is automatically calculated. + * Output is automatically set if input material has clay property or can be set manually. Duration + * is calculated by [requiredTicksCalculator], or can be set manually. [cePerTick] is automatically + * calculated. */ class ClayFabricatorRecipeBuilder : RecipeBuilder { @@ -30,26 +30,42 @@ class ClayFabricatorRecipeBuilder : RecipeBuilder { private var inputTier = 0 override fun buildAndRegister() { - val duration = if (duration == 0L) requiredTicksCalculator(this.tier, inputTier) else duration - - val outputEnergy = outputs[0].getCapability(ClayiumCapabilities.ENERGIZED_CLAY, null)?.getClayEnergy()?.energy ?: 0 - val inputEnergy = inputs[0].stacks.firstNotNullOfOrNull { it.getCapability(ClayiumCapabilities.ENERGIZED_CLAY, null)?.getClayEnergy() }?.energy ?: 0 + val duration = + if (duration == 0L) requiredTicksCalculator(this.tier, inputTier) else duration + + val outputEnergy = + outputs[0] + .getCapability(ClayiumCapabilities.ENERGIZED_CLAY, null) + ?.getClayEnergy() + ?.energy ?: 0 + val inputEnergy = + inputs[0] + .stacks + .firstNotNullOfOrNull { + it.getCapability(ClayiumCapabilities.ENERGIZED_CLAY, null)?.getClayEnergy() + } + ?.energy ?: 0 val ceProduced = if (outputEnergy > inputEnergy) outputEnergy - inputEnergy else 0 val cet = if (duration == 0L) ClayEnergy.ZERO else ClayEnergy(ceProduced / duration) - val recipe = Recipe( - inputs = this.inputs, - outputs = this.outputs, - duration = duration, - cePerTick = cet, - chancedOutputs = null, - recipeTier = tier - ) + val recipe = + Recipe( + inputs = this.inputs, + outputs = this.outputs, + duration = duration, + cePerTick = cet, + chancedOutputs = null, + recipeTier = tier + ) recipeRegistry.addRecipe(recipe) } - fun clayInput(orePrefix: OrePrefix, material: CMaterial, amount: Int = 1): ClayFabricatorRecipeBuilder { + fun clayInput( + orePrefix: OrePrefix, + material: CMaterial, + amount: Int = 1 + ): ClayFabricatorRecipeBuilder { super.input(orePrefix, material, amount) val clay = material.getPropOrNull(CPropertyKey.CLAY) if (clay != null && clay.compressedInto != null) { @@ -65,30 +81,33 @@ class ClayFabricatorRecipeBuilder : RecipeBuilder { companion object { fun solarClayFabricator(machineTier: Int, inputTier: Int): Long { - val a = when (machineTier) { - 5 -> 4.0 - 6 -> 6.0 - 7 -> 9.0 - else -> 1.0 - } - - val b = when (machineTier) { - 5 -> 4.0 - 6 -> 3.0 - 7 -> 2.0 - else -> 1.0 - } - - val multi = when (machineTier) { - 5 -> 250 - 6 -> 2500 - 7 -> 150000 - else -> 1 - } + val a = + when (machineTier) { + 5 -> 4.0 + 6 -> 6.0 + 7 -> 9.0 + else -> 1.0 + } + + val b = + when (machineTier) { + 5 -> 4.0 + 6 -> 3.0 + 7 -> 2.0 + else -> 1.0 + } + + val multi = + when (machineTier) { + 5 -> 250 + 6 -> 2500 + 7 -> 150000 + else -> 1 + } val n = (10.0.pow(a + 1.0) * (b - 1)) / (b.pow(a) - 1) return (b.pow(inputTier.toDouble()) * (n / multi)).toLong() } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/LaserRecipeBuilder.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/LaserRecipeBuilder.kt index 722b5aa79..4ee2f7623 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/LaserRecipeBuilder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/LaserRecipeBuilder.kt @@ -17,33 +17,24 @@ class LaserRecipeBuilder( var requiredEnergy: Double = 0.0 var inputMeta: Int = W - /** - * add input as block + meta pair. - * matches block and meta. - */ + /** add input as block + meta pair. matches block and meta. */ fun input(block: Block, meta: Int): LaserRecipeBuilder { input = block inputMeta = meta return this } - /** - * add input as block + meta pair. - * matches block and meta. - */ + /** add input as block + meta pair. matches block and meta. */ fun input(state: IBlockState) = input(state.block, state.block.getMetaFromState(state)) - /** - * add input as block. - * matches block only, ignores meta. - * i.e. meta is treated as wildcard. - */ + /** add input as block. matches block only, ignores meta. i.e. meta is treated as wildcard. */ fun input(block: Block) = input(block, W) fun output(state: IBlockState): LaserRecipeBuilder { output = state return this } + fun output(block: Block, meta: Int): LaserRecipeBuilder { @Suppress("DEPRECATION") output = block.getStateFromMeta(meta) @@ -66,10 +57,15 @@ class LaserRecipeBuilder( } fun buildAndRegister() { - val recipe = LaserRecipe( - inputBlock = input, inputMeta = inputMeta, outputState = output, - energyMin = energyMin, energyMax = energyMax, requiredEnergy = requiredEnergy - ) + val recipe = + LaserRecipe( + inputBlock = input, + inputMeta = inputMeta, + outputState = output, + energyMin = energyMin, + energyMax = energyMax, + requiredEnergy = requiredEnergy + ) registry.register(recipe) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/MatterTransformerRecipeBuilder.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/MatterTransformerRecipeBuilder.kt index 2ef060f9e..5b4b17d1e 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/MatterTransformerRecipeBuilder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/MatterTransformerRecipeBuilder.kt @@ -13,12 +13,13 @@ class MatterTransformerRecipeBuilder : RecipeBuilder() - override fun copy() = MatterTransformerRecipeBuilder(this) - .also { it.defaultPrefix = this.defaultPrefix } + override fun copy() = + MatterTransformerRecipeBuilder(this).also { it.defaultPrefix = this.defaultPrefix } fun defaultPrefix(orePrefix: OrePrefix): MatterTransformerRecipeBuilder { this.defaultPrefix = orePrefix @@ -26,14 +27,14 @@ class MatterTransformerRecipeBuilder : RecipeBuilder `ingotCopper` * - `ingotCopper` -> `ingotGold` @@ -53,41 +55,59 @@ class MatterTransformerRecipeBuilder : RecipeBuilder>( +abstract class RecipeBuilder>( protected val inputs: MutableList, protected val outputs: MutableList, protected val chancedOutputs: MutableList>, @@ -35,11 +35,20 @@ abstract class RecipeBuilder>( protected var cePerTick: ClayEnergy, protected var tier: Int, ) { - constructor() : this(mutableListOf(), mutableListOf(), mutableListOf(), null, 0, ClayEnergy.ZERO, 0) + constructor() : + this(mutableListOf(), mutableListOf(), mutableListOf(), null, 0, ClayEnergy.ZERO, 0) - constructor(another: RecipeBuilder) : this(another.inputs.toMutableList(), another.outputs.toMutableList(), - another.chancedOutputs, another.chancedOutputLogic, - another.duration, another.cePerTick, another.tier) { + constructor( + another: RecipeBuilder + ) : this( + another.inputs.toMutableList(), + another.outputs.toMutableList(), + another.chancedOutputs, + another.chancedOutputLogic, + another.duration, + another.cePerTick, + another.tier + ) { recipeRegistry = another.recipeRegistry } @@ -64,24 +73,45 @@ abstract class RecipeBuilder>( } fun input(stack: ItemStack) = inputs(CItemRecipeInput(listOf(stack), stack.count)) + fun input(item: Item, amount: Int = 1) = input(ItemStack(item, amount)) - fun input(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = input(metaItem.getStackForm(amount)) - fun input(metaTileEntity: MetaTileEntity, amount: Int = 1) = input(metaTileEntity.getStackForm(amount)) + + fun input(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = + input(metaItem.getStackForm(amount)) + + fun input(metaTileEntity: MetaTileEntity, amount: Int = 1) = + input(metaTileEntity.getStackForm(amount)) + fun input(block: Block, amount: Int = 1) = input(ItemStack(block, amount)) + fun input(oreDict: String, amount: Int = 1) = inputs(COreRecipeInput(oreDict, amount)) - open fun input(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = inputs(COreRecipeInput(UnificationEntry(orePrefix, material).toString(), amount)) + + open fun input(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = + inputs(COreRecipeInput(UnificationEntry(orePrefix, material).toString(), amount)) + fun input(prefixes: Array, material: IMaterial, amount: Int = 1): R { val entries = prefixes.map { UnificationEntry(it, material) }.toTypedArray() return inputs(CMultiOreRecipeInput(amount, *entries)) } - fun notConsumable(stack: ItemStack) = inputs(CItemRecipeInput(stack, stack.count, isConsumable = false)) + fun notConsumable(stack: ItemStack) = + inputs(CItemRecipeInput(stack, stack.count, isConsumable = false)) + fun notConsumable(item: Item, amount: Int = 1) = notConsumable(ItemStack(item, amount)) - fun notConsumable(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = notConsumable(metaItem.getStackForm(amount)) - fun notConsumable(metaTileEntity: MetaTileEntity, amount: Int = 1) = notConsumable(metaTileEntity.getStackForm(amount)) + + fun notConsumable(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = + notConsumable(metaItem.getStackForm(amount)) + + fun notConsumable(metaTileEntity: MetaTileEntity, amount: Int = 1) = + notConsumable(metaTileEntity.getStackForm(amount)) + fun notConsumable(block: Block, amount: Int = 1) = notConsumable(ItemStack(block, amount)) - fun notConsumable(oreDict: String, amount: Int = 1) = inputs(COreRecipeInput(oreDict, amount, isConsumable = false)) - fun notConsumable(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = notConsumable(UnificationEntry(orePrefix, material).toString(), amount) + + fun notConsumable(oreDict: String, amount: Int = 1) = + inputs(COreRecipeInput(oreDict, amount, isConsumable = false)) + + fun notConsumable(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = + notConsumable(UnificationEntry(orePrefix, material).toString(), amount) fun outputs(vararg stacks: ItemStack): R { outputs.addAll(stacks) @@ -89,27 +119,53 @@ abstract class RecipeBuilder>( } fun output(stack: ItemStack) = outputs(stack) + fun output(item: Item, amount: Int = 1) = output(ItemStack(item, amount)) - fun output(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = output(metaItem.getStackForm(amount)) - fun output(metaTileEntity: MetaTileEntity, amount: Int = 1) = output(metaTileEntity.getStackForm(amount)) + + fun output(metaItem: MetaItemClayium.MetaValueItem, amount: Int = 1) = + output(metaItem.getStackForm(amount)) + + fun output(metaTileEntity: MetaTileEntity, amount: Int = 1) = + output(metaTileEntity.getStackForm(amount)) + fun output(block: Block, amount: Int = 1) = output(ItemStack(block, amount)) + fun output(oreDict: String, amount: Int = 1) = outputs(OreDictUnifier.get(oreDict, amount)) - fun output(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = outputs(OreDictUnifier.get(orePrefix, material, amount)) + + fun output(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = + outputs(OreDictUnifier.get(orePrefix, material, amount)) fun chancedOutput(output: ItemStack, chance: Int): R { chancedOutputs.add(ChancedOutput(output, chance)) return this as R } - fun chancedOutput(item: Item, amount: Int, chance: Int): R = chancedOutput(ItemStack(item, amount), chance) + + fun chancedOutput(item: Item, amount: Int, chance: Int): R = + chancedOutput(ItemStack(item, amount), chance) + fun chancedOutput(item: Item, chance: Int): R = chancedOutput(item, 1, chance) - fun chancedOutput(metaItem: MetaItemClayium.MetaValueItem, amount: Int, chance: Int): R = chancedOutput(metaItem.getStackForm(amount), chance) - fun chancedOutput(metaTileEntity: MetaTileEntity, amount: Int, chance: Int): R = chancedOutput(metaTileEntity.getStackForm(amount), chance) - fun chancedOutput(block: Block, amount: Int, chance: Int): R = chancedOutput(ItemStack(block, amount), chance) + + fun chancedOutput(metaItem: MetaItemClayium.MetaValueItem, amount: Int, chance: Int): R = + chancedOutput(metaItem.getStackForm(amount), chance) + + fun chancedOutput(metaTileEntity: MetaTileEntity, amount: Int, chance: Int): R = + chancedOutput(metaTileEntity.getStackForm(amount), chance) + + fun chancedOutput(block: Block, amount: Int, chance: Int): R = + chancedOutput(ItemStack(block, amount), chance) + fun chancedOutput(block: Block, chance: Int): R = chancedOutput(block, 1, chance) - fun chancedOutput(oreDict: String, amount: Int, chance: Int): R = chancedOutput(OreDictUnifier.get(oreDict, amount), chance) + + fun chancedOutput(oreDict: String, amount: Int, chance: Int): R = + chancedOutput(OreDictUnifier.get(oreDict, amount), chance) + fun chancedOutput(oreDict: String, chance: Int) = chancedOutput(oreDict, 1, chance) - fun chancedOutput(orePrefix: OrePrefix, material: IMaterial, amount: Int, chance: Int): R = chancedOutput(OreDictUnifier.get(orePrefix, material, amount), chance) - fun chancedOutput(orePrefix: OrePrefix, material: IMaterial, chance: Int) = chancedOutput(orePrefix, material, 1, chance) + + fun chancedOutput(orePrefix: OrePrefix, material: IMaterial, amount: Int, chance: Int): R = + chancedOutput(OreDictUnifier.get(orePrefix, material, amount), chance) + + fun chancedOutput(orePrefix: OrePrefix, material: IMaterial, chance: Int) = + chancedOutput(orePrefix, material, 1, chance) fun chancedLogic(logic: IChancedOutputLogic): R { chancedOutputLogic = logic @@ -117,6 +173,7 @@ abstract class RecipeBuilder>( } fun duration(duration: Int) = duration(duration.toLong()) + fun duration(duration: Long): R { this.duration = duration return this as R @@ -129,22 +186,22 @@ abstract class RecipeBuilder>( } /** - * | Tier | CEt | - * |:----:|:---:| - * | 0 | 10u | - * | 1 | 10u | - * | 2 | 10u | - * | 3 | 100u | - * | 4 | 1m | - * | 5 | 10m | - * | 6 | 100m | - * | 7 | 1 | - * | 8 | 10 | - * | 9 | 100 | - * | 10 | 1k | - * | 11 | 10k | - * | 12 | 100k | - * | 13 | 1M | + * | Tier | CEt | + * |:----:|:----:| + * | 0 | 10u | + * | 1 | 10u | + * | 2 | 10u | + * | 3 | 100u | + * | 4 | 1m | + * | 5 | 10m | + * | 6 | 100m | + * | 7 | 1 | + * | 8 | 10 | + * | 9 | 100 | + * | 10 | 1k | + * | 11 | 10k | + * | 12 | 100k | + * | 13 | 1M | */ fun CEtByTier(tier: Int = this.tier): R { return this.CEt(1.0, tier) @@ -154,8 +211,10 @@ abstract class RecipeBuilder>( return this.CEt(factor, this.tier) } - fun CEt(factor: Double, tier: Int): R{ - return this.CEt(ClayEnergy((factor * 100.0 * 10.0.pow(tier - 4.0)).toLong().coerceAtLeast(1))) + fun CEt(factor: Double, tier: Int): R { + return this.CEt( + ClayEnergy((factor * 100.0 * 10.0.pow(tier - 4.0)).toLong().coerceAtLeast(1)) + ) } fun tier(tier: Int): R { @@ -169,12 +228,18 @@ abstract class RecipeBuilder>( /* Grs */ @Optional.Method(modid = Mods.Names.GROOVY_SCRIPT) - fun input(input: IIngredient) = this.inputs(CItemRecipeInput(input.matchingStacks.toList(), input.amount)) + fun input(input: IIngredient) = + this.inputs(CItemRecipeInput(input.matchingStacks.toList(), input.amount)) + @Optional.Method(modid = Mods.Names.GROOVY_SCRIPT) - fun output(output: IIngredient) = this.output(output.matchingStacks.firstOrNull() ?: ItemStack.EMPTY) + fun output(output: IIngredient) = + this.output(output.matchingStacks.firstOrNull() ?: ItemStack.EMPTY) + // not optional for java interop fun CEt(cePerTick: Long) = this.CEt(ClayEnergy.of(cePerTick)) + fun CEtMilli(cePerTick: Int) = this.CEt(ClayEnergy.milli(cePerTick.toLong())) + fun CEtMicro(cePerTick: Int) = this.CEt(ClayEnergy.micro(cePerTick.toLong())) open fun buildAndRegister() { @@ -184,11 +249,12 @@ abstract class RecipeBuilder>( open fun build(): Recipe { setDefaults() - val chancedOutputList = if (chancedOutputLogic != null) { - ChancedOutputList(chancedOutputs, chancedOutputLogic!!) - } else { - null - } + val chancedOutputList = + if (chancedOutputLogic != null) { + ChancedOutputList(chancedOutputs, chancedOutputLogic!!) + } else { + null + } return Recipe(inputs, outputs, chancedOutputList, duration, cePerTick, tier) } @@ -198,4 +264,4 @@ abstract class RecipeBuilder>( this.CEt(tier = this.tier, factor = 1.0) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/SimpleRecipeBuilder.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/SimpleRecipeBuilder.kt index 20c4abb61..2ffeb67f5 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/SimpleRecipeBuilder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/SimpleRecipeBuilder.kt @@ -2,6 +2,8 @@ package com.github.trc.clayium.common.recipe.builder class SimpleRecipeBuilder : RecipeBuilder { constructor() : super() + constructor(another: SimpleRecipeBuilder) : super(another) + override fun copy() = SimpleRecipeBuilder(this) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/WeightedRecipeBuilder.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/WeightedRecipeBuilder.kt index 28ee14cb8..a95bd4977 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/WeightedRecipeBuilder.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/builder/WeightedRecipeBuilder.kt @@ -6,7 +6,9 @@ import com.github.trc.clayium.common.recipe.chanced.IChancedOutputLogic.Companio class WeightedRecipeBuilder : RecipeBuilder { constructor() : super() + constructor(another: WeightedRecipeBuilder) : super(another) + override fun copy() = WeightedRecipeBuilder(this) override fun buildAndRegister() { @@ -18,4 +20,4 @@ class WeightedRecipeBuilder : RecipeBuilder { val recipe = Recipe(inputs, outputs, chancedOutputList, duration, cePerTick, tier) recipeRegistry.addRecipe(recipe) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutput.kt index 1f757e817..880f9d764 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutput.kt @@ -1,6 +1,3 @@ package com.github.trc.clayium.common.recipe.chanced -data class ChancedOutput( - override val result: T, - override val chance: Int -) : IChancedOutput +data class ChancedOutput(override val result: T, override val chance: Int) : IChancedOutput diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutputList.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutputList.kt index c048d6c04..e7f55bf3d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutputList.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/ChancedOutputList.kt @@ -13,30 +13,32 @@ class ChancedOutputList( } companion object { - val WEIGHTED = object : IChancedOutputLogic { - override fun > roll(chancedOutputs: List): List { - val totalWeight = chancedOutputs.sumOf { it.chance } - val pos = (1..totalWeight).random() - var currentPos = 0 - for (chancedOutput in chancedOutputs) { - currentPos += chancedOutput.chance - if (pos < currentPos) { - return listOf(chancedOutput.result) + val WEIGHTED = + object : IChancedOutputLogic { + override fun > roll(chancedOutputs: List): List { + val totalWeight = chancedOutputs.sumOf { it.chance } + val pos = (1..totalWeight).random() + var currentPos = 0 + for (chancedOutput in chancedOutputs) { + currentPos += chancedOutput.chance + if (pos < currentPos) { + return listOf(chancedOutput.result) + } } + return emptyList() } - return emptyList() } - } - val XOR = object : IChancedOutputLogic { - override fun > roll(chancedOutputs: List): List { - for (chancedOutput in chancedOutputs) { - if (passesChance(chancedOutput.chance)) { - return listOf(chancedOutput.result) + val XOR = + object : IChancedOutputLogic { + override fun > roll(chancedOutputs: List): List { + for (chancedOutput in chancedOutputs) { + if (passesChance(chancedOutput.chance)) { + return listOf(chancedOutput.result) + } } + return emptyList() } - return emptyList() } - } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutput.kt index 61d90bae5..5e5869d62 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutput.kt @@ -3,4 +3,4 @@ package com.github.trc.clayium.common.recipe.chanced interface IChancedOutput { val result: T val chance: Int -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutputLogic.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutputLogic.kt index 4e7f78ff6..8bcb532ce 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutputLogic.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/chanced/IChancedOutputLogic.kt @@ -2,9 +2,10 @@ package com.github.trc.clayium.common.recipe.chanced interface IChancedOutputLogic { fun > roll(chancedOutputs: List): List + fun passesChance(chance: Int) = chance > 0 && (1..MAX_CHANCE).random() <= chance companion object { const val MAX_CHANCE = 10_000 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/handler/MaterialRecipeHandler.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/handler/MaterialRecipeHandler.kt index 6c5e0968f..c94627b80 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/handler/MaterialRecipeHandler.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/handler/MaterialRecipeHandler.kt @@ -20,15 +20,16 @@ object MaterialRecipeHandler { for (material in ClayiumApi.materialRegistry) { GrinderRecipeLoader.handleOre(material) - if (!material.hasOre(OrePrefix.ingot)) - CondenserRecipeLoader.handleOre(material) + if (!material.hasOre(OrePrefix.ingot)) CondenserRecipeLoader.handleOre(material) if (material.hasOre(OrePrefix.ingot)) { - if (material.hasProperty(CPropertyKey.PLATE)) addPlateRecipe(OrePrefix.ingot, material) + if (material.hasProperty(CPropertyKey.PLATE)) + addPlateRecipe(OrePrefix.ingot, material) } if (material.hasOre(OrePrefix.gem)) { - if (material.hasProperty(CPropertyKey.PLATE)) addPlateRecipe(OrePrefix.gem, material) + if (material.hasProperty(CPropertyKey.PLATE)) + addPlateRecipe(OrePrefix.gem, material) } if (material.hasOre(OrePrefix.dust)) { @@ -40,12 +41,16 @@ object MaterialRecipeHandler { } if (material.hasOre(OrePrefix.block)) { - if (material.hasProperty(CPropertyKey.PLATE) && OrePrefix.block.getMaterialAmount(material) == MaterialAmount.of(1)) { + if ( + material.hasProperty(CPropertyKey.PLATE) && + OrePrefix.block.getMaterialAmount(material) == MaterialAmount.of(1) + ) { addPlateRecipe(OrePrefix.block, material) } if (material.hasProperty(CPropertyKey.CLAY)) { val prop = material.getProperty(CPropertyKey.CLAY) - if (prop.compressedInto != null) addClayBlockRecipe(material, prop.compressedInto) + if (prop.compressedInto != null) + addClayBlockRecipe(material, prop.compressedInto) } } } @@ -92,13 +97,14 @@ object MaterialRecipeHandler { private fun handleImpureDust(material: CMaterial) { val tier = material.tier?.numeric ?: 0 - val (cePerTick, duration) = when (tier) { - 6 -> ClayEnergy.milli(100) to 100 - 7 -> ClayEnergy.of(10) to 300 - 8 -> ClayEnergy.of(100) to 1000 - 9 -> ClayEnergy.of(1000) to 3000 - else -> ClayEnergy.micro(10) to 1 - } + val (cePerTick, duration) = + when (tier) { + 6 -> ClayEnergy.milli(100) to 100 + 7 -> ClayEnergy.of(10) to 300 + 8 -> ClayEnergy.of(100) to 1000 + 9 -> ClayEnergy.of(1000) to 3000 + else -> ClayEnergy.micro(10) to 1 + } CRecipes.ELECTROLYSIS_REACTOR.register { input(OrePrefix.impureDust, material) output(OrePrefix.dust, material) @@ -109,8 +115,8 @@ object MaterialRecipeHandler { } /** - * Adds plate and largePlate recipe for [material]. - * Assumes that [material] has a plate property. + * Adds plate and largePlate recipe for [material]. Assumes that [material] has a plate + * property. */ private fun addPlateRecipe(inputPrefix: OrePrefix, material: CMaterial) { val plateProperty = material.getProperty(CPropertyKey.PLATE) @@ -137,15 +143,21 @@ object MaterialRecipeHandler { if (clayProperty != null) { // generate recipes for non-energy clay blocks if (resultClayProperty.energy == null) { - RecipeUtils.addShapedRecipe("${compressedInto.materialId.path}_block_compose", + RecipeUtils.addShapedRecipe( + "${compressedInto.materialId.path}_block_compose", OreDictUnifier.get(OrePrefix.block, compressedInto), "CCC", "CCC", "CCC", - 'C', UnificationEntry(OrePrefix.block, material)) + 'C', + UnificationEntry(OrePrefix.block, material) + ) - RecipeUtils.addShapelessRecipe("${compressedInto.materialId.path}_block_decompose", - OreDictUnifier.get(OrePrefix.block, material, 9), UnificationEntry(OrePrefix.block, compressedInto)) + RecipeUtils.addShapelessRecipe( + "${compressedInto.materialId.path}_block_decompose", + OreDictUnifier.get(OrePrefix.block, material, 9), + UnificationEntry(OrePrefix.block, compressedInto) + ) CRecipes.DECOMPOSER.register { input(OrePrefix.block, compressedInto) @@ -175,4 +187,4 @@ object MaterialRecipeHandler { } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CItemRecipeInput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CItemRecipeInput.kt index 933b30044..fb1105420 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CItemRecipeInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CItemRecipeInput.kt @@ -7,15 +7,19 @@ class CItemRecipeInput( override val stacks: List, override val amount: Int, isConsumable: Boolean = true, -): CRecipeInput(isConsumable) { +) : CRecipeInput(isConsumable) { - constructor(stack: ItemStack, amount: Int, isConsumable: Boolean = true): this(listOf(stack), amount, isConsumable) + constructor( + stack: ItemStack, + amount: Int, + isConsumable: Boolean = true + ) : this(listOf(stack), amount, isConsumable) override fun testItemStackAndAmount(stack: ItemStack): Boolean { return stacks.any { - ItemStack.areItemsEqual(it, stack) - && (!stack.hasSubtypes || stack.metadata == it.metadata || stack.metadata == 32767) - && stack.count >= amount + ItemStack.areItemsEqual(it, stack) && + (!stack.hasSubtypes || stack.metadata == it.metadata || stack.metadata == 32767) && + stack.count >= amount } } @@ -28,4 +32,4 @@ class CItemRecipeInput( override fun toString(): String { return "CItemRecipeInput($stacks)" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CMultiOreRecipeInput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CMultiOreRecipeInput.kt index cff51f1cd..c86a99832 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CMultiOreRecipeInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CMultiOreRecipeInput.kt @@ -14,26 +14,27 @@ class CMultiOreRecipeInput( val oreIds = oreDicts.map { OreDictionary.getOreID(it.toString()) } override val stacks by lazy { - val oreStacks = oreIds.map { - OreDictionary.getOres(OreDictionary.getOreName(it)).map { it.copyWithSize(amount) } - }.flatten() + val oreStacks = + oreIds + .map { + OreDictionary.getOres(OreDictionary.getOreName(it)).map { + it.copyWithSize(amount) + } + } + .flatten() oreStacks } override fun testItemStackAndAmount(stack: ItemStack): Boolean { if (stack.isEmpty) return false - return stacks.any { - OreDictionary.itemMatches(it, stack, false) && stack.count >= amount - } + return stacks.any { OreDictionary.itemMatches(it, stack, false) && stack.count >= amount } } override fun testIgnoringAmount(item: ItemAndMeta): Boolean { - return stacks.any { - it.item == item.item && it.metadata == item.meta - } + return stacks.any { it.item == item.item && it.metadata == item.meta } } override fun toString(): String { return "CMultiOreRecipeInput(${oreIds.map { OreDictionary.getOreName(it) }.joinToString(", ")})" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/COreRecipeInput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/COreRecipeInput.kt index 5a288566c..f2013d0ef 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/COreRecipeInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/COreRecipeInput.kt @@ -13,30 +13,37 @@ class COreRecipeInput( isConsumable: Boolean = true, ) : CRecipeInput(isConsumable) { - constructor(oreDict: String, amount: Int = 1, isConsumable: Boolean = true) : this(OreDictionary.getOreID(oreDict), amount, isConsumable) - constructor(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1, isConsumable: Boolean = true) : this(UnificationEntry(orePrefix, material).toString(), amount, isConsumable) + constructor( + oreDict: String, + amount: Int = 1, + isConsumable: Boolean = true + ) : this(OreDictionary.getOreID(oreDict), amount, isConsumable) + + constructor( + orePrefix: OrePrefix, + material: IMaterial, + amount: Int = 1, + isConsumable: Boolean = true + ) : this(UnificationEntry(orePrefix, material).toString(), amount, isConsumable) override val stacks by lazy { - val oreStacks = OreDictionary.getOres(OreDictionary.getOreName(oreId)).map { - it.copy().apply { count = amount } - } + val oreStacks = + OreDictionary.getOres(OreDictionary.getOreName(oreId)).map { + it.copy().apply { count = amount } + } oreStacks } override fun testItemStackAndAmount(stack: ItemStack): Boolean { if (stack.isEmpty) return false - return stacks.any { - OreDictionary.itemMatches(it, stack, false) && stack.count >= amount - } + return stacks.any { OreDictionary.itemMatches(it, stack, false) && stack.count >= amount } } override fun testIgnoringAmount(item: ItemAndMeta): Boolean { - return stacks.any { - it.item == item.item && it.metadata == item.meta - } + return stacks.any { it.item == item.item && it.metadata == item.meta } } override fun toString(): String { return "${OreDictionary.getOreName(oreId)}($stacks)" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CRecipeInput.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CRecipeInput.kt index de6fb5fed..c98368e27 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CRecipeInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/ingredient/CRecipeInput.kt @@ -12,6 +12,7 @@ abstract class CRecipeInput(val isConsumable: Boolean = true) { val consumeAmount: Int by lazy { if (isConsumable) amount else 0 } abstract fun testItemStackAndAmount(stack: ItemStack): Boolean + abstract fun testIgnoringAmount(item: ItemAndMeta): Boolean fun isValid(): Boolean { @@ -25,4 +26,4 @@ abstract class CRecipeInput(val isConsumable: Boolean = true) { } return true } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CRecipes.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CRecipes.kt index 5c84768dd..4c83646e0 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CRecipes.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CRecipes.kt @@ -11,46 +11,75 @@ import com.github.trc.clayium.integration.jei.basic.SolarClayFabricatorRecipeWra object CRecipes { private val REGISTRY = mutableMapOf>() - val ALL_REGISTRIES: Map> get() = REGISTRY.toMap() + val ALL_REGISTRIES: Map> + get() = REGISTRY.toMap() // 1 -> 1 recipes - val BENDING = addRegistry("bending_machine", SimpleRecipeBuilder(), inputSize = 1, outputSize = 1) + val BENDING = + addRegistry("bending_machine", SimpleRecipeBuilder(), inputSize = 1, outputSize = 1) val CONDENSER = addRegistry("condenser", SimpleRecipeBuilder(), 1, 1) val CUTTING_MACHINE = addRegistry("cutting_machine", SimpleRecipeBuilder(), 1, 1) val DECOMPOSER = addRegistry("decomposer", SimpleRecipeBuilder(), 1, 1) - val ENERGETIC_CLAY_CONDENSER = addRegistry("energetic_clay_condenser", SimpleRecipeBuilder(), 1, 1) + val ENERGETIC_CLAY_CONDENSER = + addRegistry("energetic_clay_condenser", SimpleRecipeBuilder(), 1, 1) val ELECTROLYSIS_REACTOR = addRegistry("electrolysis_reactor", SimpleRecipeBuilder(), 1, 1) val GRINDER = addRegistry("grinder", SimpleRecipeBuilder(), 1, 1) val LATHE = addRegistry("lathe", SimpleRecipeBuilder(), 1, 1) - val MATTER_TRANSFORMER = addRegistry("matter_transformer", MatterTransformerRecipeBuilder(), 1, 1) + val MATTER_TRANSFORMER = + addRegistry("matter_transformer", MatterTransformerRecipeBuilder(), 1, 1) val MILLING_MACHINE = addRegistry("milling_machine", SimpleRecipeBuilder(), 1, 1) val PIPE_DRAWING_MACHINE = addRegistry("pipe_drawing_machine", SimpleRecipeBuilder(), 1, 1) val WIRE_DRAWING_MACHINE = addRegistry("wire_drawing_machine", SimpleRecipeBuilder(), 1, 1) val SMELTER = addRegistry("smelter", SimpleRecipeBuilder(), 1, 1) val CA_CONDENSER = addRegistry("ca_condenser", SimpleRecipeBuilder(), 1, 1) - //solar - val SOLAR_1 = addRegistry("solar_clay_fabricator_1", ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), 1, 1) - val SOLAR_2 = addRegistry("solar_clay_fabricator_2", ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), 1, 1) - val SOLAR_3 = addRegistry("solar_clay_fabricator_3", ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), 1, 1) + // solar + val SOLAR_1 = + addRegistry( + "solar_clay_fabricator_1", + ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), + 1, + 1 + ) + val SOLAR_2 = + addRegistry( + "solar_clay_fabricator_2", + ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), + 1, + 1 + ) + val SOLAR_3 = + addRegistry( + "solar_clay_fabricator_3", + ClayFabricatorRecipeBuilder(ClayFabricatorRecipeBuilder::solarClayFabricator), + 1, + 1 + ) // 2 -> 1 recipes val ASSEMBLER = addRegistry("assembler", SimpleRecipeBuilder(), 2, 1) val INSCRIBER = addRegistry("inscriber", SimpleRecipeBuilder(), 2, 1) val ALLOY_SMELTER = addRegistry("alloy_smelter", SimpleRecipeBuilder(), 2, 1) - val CA_INJECTOR = addRegistry("ca_injector", SimpleRecipeBuilder(), 2, 1) //todo special registry or builder? + val CA_INJECTOR = + addRegistry("ca_injector", SimpleRecipeBuilder(), 2, 1) // todo special registry or builder? // others val CHEMICAL_REACTOR = addRegistry("chemical_reactor", SimpleRecipeBuilder(), 2, 2) val CLAY_BLAST_FURNACE = addRegistry("clay_blast_furnace", SimpleRecipeBuilder(), 2, 2) val CLAY_REACTOR = addRegistry("clay_reactor", SimpleRecipeBuilder(), 2, 2) - val CHEMICAL_METAL_SEPARATOR = addRegistry("chemical_metal_separator", WeightedRecipeBuilder(), 1, 1) + val CHEMICAL_METAL_SEPARATOR = + addRegistry("chemical_metal_separator", WeightedRecipeBuilder(), 1, 1) val CENTRIFUGE = addRegistry("centrifuge", SimpleRecipeBuilder(), 1, 4) // not item recipe val LASER = LaserRecipeRegistry() - fun > addRegistry(name: String, buildSample: R, inputSize: Int, outputSize: Int): RecipeRegistry { + fun > addRegistry( + name: String, + buildSample: R, + inputSize: Int, + outputSize: Int + ): RecipeRegistry { val registry = RecipeRegistry(name, buildSample, inputSize, outputSize) REGISTRY[name] = registry return registry @@ -67,4 +96,4 @@ object CRecipes { JeiPlugin.registerWrapper(SOLAR_3, ::SolarClayFabricatorRecipeWrapper) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CaReactorRecipeRegistry.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CaReactorRecipeRegistry.kt index 2cb3be3ad..ad2575e52 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CaReactorRecipeRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/CaReactorRecipeRegistry.kt @@ -10,26 +10,35 @@ import com.github.trc.clayium.common.recipe.ingredient.COreRecipeInput import net.minecraft.item.ItemStack import kotlin.math.pow -class CaReactorRecipeRegistry(name: String) : RecipeRegistry(name, SimpleRecipeBuilder(), 1, 1) { +class CaReactorRecipeRegistry(name: String) : + RecipeRegistry(name, SimpleRecipeBuilder(), 1, 1) { private val actualRecipes by lazy { val input = listOf(COreRecipeInput(OrePrefix.gem, CMaterials.antimatter)) - val outputs = listOf( - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter1)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter2)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter3)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter4)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter5)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter6)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter7)), - listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.octuplePureAntimatter)), - ) + val outputs = + listOf( + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter1)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter2)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter3)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter4)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter5)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter6)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter7)), + listOf(OreDictUnifier.get(OrePrefix.gem, CMaterials.octuplePureAntimatter)), + ) (0..8).map { i -> - Recipe(input, outputs[i], null, (BASE_CRAFT_TIME * 9.0.pow(i)).toLong(), ClayEnergy.of(100), 10) + Recipe( + input, + outputs[i], + null, + (BASE_CRAFT_TIME * 9.0.pow(i)).toLong(), + ClayEnergy.of(100), + 10 + ) } } - fun findRecipeWithRank(reactorTier: Int, rank: Int, inputs: List) : Recipe? { + fun findRecipeWithRank(reactorTier: Int, rank: Int, inputs: List): Recipe? { val index = (rank - 1).coerceIn(0, actualRecipes.size - 1) return actualRecipes[index].takeIf { it.matches(inputs, reactorTier) } } @@ -37,4 +46,4 @@ class CaReactorRecipeRegistry(name: String) : RecipeRegistry() - val recipes get() = _recipes.toList() + val recipes + get() = _recipes.toList() - fun register(input: RecipeInput, primaryOutput: ItemStack, secondaryOutput: ItemStack = ItemStack.EMPTY, method: ClayWorkTableMethod, clicks: Int) { + fun register( + input: RecipeInput, + primaryOutput: ItemStack, + secondaryOutput: ItemStack = ItemStack.EMPTY, + method: ClayWorkTableMethod, + clicks: Int + ) { _recipes.add(ClayWorkTableRecipe(input, primaryOutput, secondaryOutput, method, clicks)) _recipes.sortWith(RECIPE_COMPARATOR) } @@ -31,8 +38,7 @@ class ClayWorkTableRecipeRegistry { } companion object { - private val RECIPE_COMPARATOR = compareBy { - it.input.amount - }.reversed() + private val RECIPE_COMPARATOR = + compareBy { it.input.amount }.reversed() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/LaserRecipeRegistry.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/LaserRecipeRegistry.kt index 7ddaa7a7a..da200d3c5 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/LaserRecipeRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/LaserRecipeRegistry.kt @@ -12,14 +12,16 @@ private val RECIPE_COMPARATOR = compareBy { it.energyMin }.reversed class LaserRecipeRegistry { private val _recipes = mutableListOf() - val recipes get() = _recipes.toList() + val recipes + get() = _recipes.toList() fun register(recipe: LaserRecipe) { _recipes.add(recipe) _recipes.sortWith(RECIPE_COMPARATOR) } - val grsVirtualizedRegistry: LaserRecipeRegistryGrsAdapter? - = if (Mods.GroovyScript.isModLoaded) LaserRecipeRegistryGrsAdapter(this) else null + + val grsVirtualizedRegistry: LaserRecipeRegistryGrsAdapter? = + if (Mods.GroovyScript.isModLoaded) LaserRecipeRegistryGrsAdapter(this) else null fun register(create: LaserRecipeBuilder.() -> Unit) { val builder = LaserRecipeBuilder(this) diff --git a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/RecipeRegistry.kt b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/RecipeRegistry.kt index 335525ac7..22d9f7979 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/RecipeRegistry.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/recipe/registry/RecipeRegistry.kt @@ -11,21 +11,25 @@ import com.github.trc.clayium.integration.groovy.GroovyScriptModule import com.github.trc.clayium.integration.groovy.RecipeRegistryGrsAdapter import net.minecraft.item.ItemStack -open class RecipeRegistry>( +open class RecipeRegistry>( val category: RecipeCategory, private val builderSample: R, val maxInputs: Int, val maxOutputs: Int, ) : IRecipeProvider { - constructor(translationKey: String, builderSample: R, maxInputs: Int, maxOutputs: Int) : - this(RecipeCategory.create(MOD_ID, translationKey), builderSample, maxInputs, maxOutputs) + constructor( + translationKey: String, + builderSample: R, + maxInputs: Int, + maxOutputs: Int + ) : this(RecipeCategory.create(MOD_ID, translationKey), builderSample, maxInputs, maxOutputs) val categoryName = category.categoryName override val jeiCategory = category.uniqueId - val grsVirtualizedRegistry: RecipeRegistryGrsAdapter? - = if (Mods.GroovyScript.isModLoaded) RecipeRegistryGrsAdapter(this) else null + val grsVirtualizedRegistry: RecipeRegistryGrsAdapter? = + if (Mods.GroovyScript.isModLoaded) RecipeRegistryGrsAdapter(this) else null init { builderSample.setRegistry(this) @@ -43,7 +47,7 @@ open class RecipeRegistry>( builder.buildAndRegister() } - //todo use hash table? + // todo use hash table? fun findRecipe(machineTier: Int, inputsIn: List): Recipe? { return _recipes.firstOrNull { it.matches(inputsIn, machineTier) } } @@ -104,10 +108,11 @@ open class RecipeRegistry>( } companion object { - val TIER_DURATION_CE = Comparator.comparingInt(Recipe::recipeTier) - .thenComparingLong(Recipe::duration) - .thenComparingLong { recipe -> recipe.cePerTick.energy } + val TIER_DURATION_CE = + Comparator.comparingInt(Recipe::recipeTier) + .thenComparingLong(Recipe::duration) + .thenComparingLong { recipe -> recipe.cePerTick.energy } val TIER_DURATION_CE_REVERSED = TIER_DURATION_CE.reversed() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/reflect/BlockReflect.kt b/src/main/kotlin/com/github/trc/clayium/common/reflect/BlockReflect.kt index 772c70331..9e637cffc 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/reflect/BlockReflect.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/reflect/BlockReflect.kt @@ -8,10 +8,15 @@ import net.minecraftforge.fml.relauncher.ReflectionHelper @Suppress("DEPRECATION") object BlockReflect { private val silkTouchDrop by lazy { - ReflectionHelper.findMethod(Block::class.java, "getSilkTouchDrop", "func_180643_i", IBlockState::class.java) + ReflectionHelper.findMethod( + Block::class.java, + "getSilkTouchDrop", + "func_180643_i", + IBlockState::class.java + ) } fun getSilkTouchDrop(block: Block, state: IBlockState): ItemStack { return silkTouchDrop.invoke(block, state) as ItemStack } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/unification/ClayiumOreDictUnifierImpl.kt b/src/main/kotlin/com/github/trc/clayium/common/unification/ClayiumOreDictUnifierImpl.kt index a6a56899f..d4c4faa2a 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/unification/ClayiumOreDictUnifierImpl.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/unification/ClayiumOreDictUnifierImpl.kt @@ -32,14 +32,15 @@ object ClayiumOreDictUnifierImpl : IOreDictUnifier { val item = stack.item val meta = stack.itemDamage - val variantMap = item2OreNames.computeIfAbsent(item) { - if (stack.hasSubtypes) MultiItemVariantMap() else SingleItemVariantMap() - } + val variantMap = + item2OreNames.computeIfAbsent(item) { + if (stack.hasSubtypes) MultiItemVariantMap() else SingleItemVariantMap() + } val names = variantMap.computeIfAbsent(meta.toShort()) { mutableSetOf() } names.add(oreName) oreName2Stacks.computeIfAbsent(oreName) { mutableListOf() }.add(stack.copyWithSize(1)) - //todo + // todo } override fun registerOre(stack: ItemStack, oreDict: String) { @@ -49,22 +50,20 @@ object ClayiumOreDictUnifierImpl : IOreDictUnifier { override fun getOreNames(stack: ItemStack): Set { val item = stack.item val meta = stack.itemDamage - val variantMap = item2OreNames[item] - ?: return emptySet() + val variantMap = item2OreNames[item] ?: return emptySet() val names = variantMap[meta.toShort()] if (meta == W) { return names ?: emptySet() } - val wildcardNames = variantMap[W.toShort()] - ?: emptySet() + val wildcardNames = variantMap[W.toShort()] ?: emptySet() return names?.union(wildcardNames) ?: wildcardNames } override fun get(oreDict: String, amount: Int): ItemStack { - val stack = oreName2Stacks[oreDict]?.firstOrNull() - ?.copyWithSize(amount) ?: return ItemStack.EMPTY + val stack = + oreName2Stacks[oreDict]?.firstOrNull()?.copyWithSize(amount) ?: return ItemStack.EMPTY if (stack.metadata == W) stack.itemDamage = 0 return stack } @@ -72,4 +71,4 @@ object ClayiumOreDictUnifierImpl : IOreDictUnifier { override fun getAll(oreDict: String, amount: Int): List { return OreDictionary.getOres(oreDict).map { it.copyWithSize(amount) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/unification/IOreDictUnifier.kt b/src/main/kotlin/com/github/trc/clayium/common/unification/IOreDictUnifier.kt index d34db62d8..0d376a4c6 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/unification/IOreDictUnifier.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/unification/IOreDictUnifier.kt @@ -7,17 +7,26 @@ import net.minecraft.item.ItemStack interface IOreDictUnifier { fun registerOre(stack: ItemStack, oreDict: String) - fun registerOre(stack: ItemStack, orePrefix: OrePrefix, material: IMaterial) = registerOre(stack, UnificationEntry(orePrefix, material).toString()) + + fun registerOre(stack: ItemStack, orePrefix: OrePrefix, material: IMaterial) = + registerOre(stack, UnificationEntry(orePrefix, material).toString()) fun getOreNames(stack: ItemStack): Set fun get(oreDict: String, amount: Int = 1): ItemStack - fun get(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = get(UnificationEntry(orePrefix, material).toString(), amount) + + fun get(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = + get(UnificationEntry(orePrefix, material).toString(), amount) fun getAll(oreDict: String, amount: Int = 1): List - fun getAll(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = getAll(UnificationEntry(orePrefix, material), amount) + + fun getAll(orePrefix: OrePrefix, material: IMaterial, amount: Int = 1) = + getAll(UnificationEntry(orePrefix, material), amount) + fun getAll(oreDict: UnificationEntry, amount: Int = 1) = getAll(oreDict.toString(), amount) fun exists(oreDict: String): Boolean = !get(oreDict).isEmpty - fun exists(orePrefix: OrePrefix, material: IMaterial): Boolean = exists(UnificationEntry(orePrefix, material).toString()) -} \ No newline at end of file + + fun exists(orePrefix: OrePrefix, material: IMaterial): Boolean = + exists(UnificationEntry(orePrefix, material).toString()) +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/BothSideI18n.kt b/src/main/kotlin/com/github/trc/clayium/common/util/BothSideI18n.kt index 6bc569a81..3ea2b0524 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/BothSideI18n.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/BothSideI18n.kt @@ -3,11 +3,12 @@ package com.github.trc.clayium.common.util import com.github.trc.clayium.api.util.CUtils /** - * Please use it only in places where it is also called from the server. - * uses [net.minecraft.client.resources.I18n] on the client side. which is the correct way to do it. - * uses [net.minecraft.util.text.translation.I18n] on the server side, which is deprecated. + * Please use it only in places where it is also called from the server. uses + * [net.minecraft.client.resources.I18n] on the client side. which is the correct way to do it. uses + * [net.minecraft.util.text.translation.I18n] on the server side, which is deprecated. * - * **use [net.minecraft.client.resources.I18n] or [net.minecraft.util.text.TextComponentTranslation] whenever possible.** + * **use [net.minecraft.client.resources.I18n] or [net.minecraft.util.text.TextComponentTranslation] + * whenever possible.** */ @Suppress("DEPRECATION") object BothSideI18n { @@ -26,4 +27,4 @@ object BothSideI18n { net.minecraft.util.text.translation.I18n.canTranslate(key) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/CNbtUtils.kt b/src/main/kotlin/com/github/trc/clayium/common/util/CNbtUtils.kt index fb4719d00..569f9365a 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/CNbtUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/CNbtUtils.kt @@ -9,7 +9,13 @@ import net.minecraftforge.common.util.Constants import net.minecraftforge.items.IItemHandler object CNbtUtils { - fun handleInvSizeDifference(world: World, pos: BlockPos, oldMteData: NBTTagCompound, key: String, thisInventory: IItemHandler) { + fun handleInvSizeDifference( + world: World, + pos: BlockPos, + oldMteData: NBTTagCompound, + key: String, + thisInventory: IItemHandler + ) { val inventoryData = oldMteData.getTagList(key, Constants.NBT.TAG_COMPOUND) val oldSlots = inventoryData.tagCount() val thisInvSize = thisInventory.slots @@ -21,4 +27,4 @@ object CNbtUtils { } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/DummyContainer.kt b/src/main/kotlin/com/github/trc/clayium/common/util/DummyContainer.kt index 60bf8f098..2fd985063 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/DummyContainer.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/DummyContainer.kt @@ -6,7 +6,10 @@ import net.minecraft.inventory.IInventory object DummyContainer : Container() { override fun onContainerClosed(playerIn: EntityPlayer) {} + override fun onCraftMatrixChanged(inventoryIn: IInventory) {} + override fun detectAndSendChanges() {} + override fun canInteractWith(playerIn: EntityPlayer) = false -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/KeyInput.kt b/src/main/kotlin/com/github/trc/clayium/common/util/KeyInput.kt index 28eea68b4..b605b4b3d 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/KeyInput.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/KeyInput.kt @@ -16,15 +16,13 @@ enum class KeyInput( // Double Supplier to keep client classes from loading keyBinding: () -> (() -> KeyBinding) ) { - SPRINT({{ Minecraft.getMinecraft().gameSettings.keyBindSprint }}), + SPRINT({ { Minecraft.getMinecraft().gameSettings.keyBindSprint } }), ; private val mapping by lazy { WeakHashMap() } private lateinit var keyBinding: KeyBinding - @SideOnly(Side.CLIENT) - private var isKeyDown = false - @SideOnly(Side.CLIENT) - private var isPressed = false + @SideOnly(Side.CLIENT) private var isKeyDown = false + @SideOnly(Side.CLIENT) private var isPressed = false init { if (CUtils.isClientSide) { @@ -56,10 +54,7 @@ enum class KeyInput( return mapping[player]?.isPressed == true } - class MutBooleanPairKeyData( - var isKeyDown: Boolean, - var isPressed: Boolean - ) + class MutBooleanPairKeyData(var isKeyDown: Boolean, var isPressed: Boolean) companion object { @SubscribeEvent @@ -82,4 +77,4 @@ enum class KeyInput( } } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/ToolClasses.kt b/src/main/kotlin/com/github/trc/clayium/common/util/ToolClasses.kt index 1697da372..f6cd79aac 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/ToolClasses.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/ToolClasses.kt @@ -4,4 +4,4 @@ object ToolClasses { const val AXE = "axe" const val PICKAXE = "pickaxe" const val SHOVEL = "shovel" -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/common/util/TransferUtils.kt b/src/main/kotlin/com/github/trc/clayium/common/util/TransferUtils.kt index 7e159656f..14a880ec1 100644 --- a/src/main/kotlin/com/github/trc/clayium/common/util/TransferUtils.kt +++ b/src/main/kotlin/com/github/trc/clayium/common/util/TransferUtils.kt @@ -23,16 +23,22 @@ fun IItemHandler.transferTo(to: IItemHandler) { object TransferUtils { /** * Insert a list of ItemStacks to an IItemHandlerModifiable + * * @param simulate if true, the operation will be simulated. default = false * @return true if all stacks are inserted successfully */ - fun insertToHandler(handler: IItemHandlerModifiable, stacks: List, simulate: Boolean = false): Boolean { + fun insertToHandler( + handler: IItemHandlerModifiable, + stacks: List, + simulate: Boolean = false + ): Boolean { if (simulate) { - val copiedHandler = ItemStackHandler(handler.slots).apply { - for (i in 0.. { return gregtech.api.unification.OreDictUnifier.getAllWithOreDictionaryName(oreDict) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/groovy/GroovyScriptModule.kt b/src/main/kotlin/com/github/trc/clayium/integration/groovy/GroovyScriptModule.kt index 3b9ed55ca..29ab0a069 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/groovy/GroovyScriptModule.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/groovy/GroovyScriptModule.kt @@ -35,8 +35,7 @@ class GroovyScriptModule : GroovyPlugin { companion object { fun isCurrentlyRunning(): Boolean { - return Mods.GroovyScript.isModLoaded - && GroovyScript.getSandbox().isRunning + return Mods.GroovyScript.isModLoaded && GroovyScript.getSandbox().isRunning } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/groovy/LaserRecipeRegistryGrsAdapter.kt b/src/main/kotlin/com/github/trc/clayium/integration/groovy/LaserRecipeRegistryGrsAdapter.kt index 66ca9190b..5e7d987a6 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/groovy/LaserRecipeRegistryGrsAdapter.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/groovy/LaserRecipeRegistryGrsAdapter.kt @@ -13,7 +13,10 @@ import net.minecraft.block.state.IBlockState class LaserRecipeRegistryGrsAdapter( val backingRegistry: LaserRecipeRegistry, -) : VirtualizedRegistry(Alias.generateOf("laser_transformation", CaseFormat.LOWER_UNDERSCORE)) { +) : + VirtualizedRegistry( + Alias.generateOf("laser_transformation", CaseFormat.LOWER_UNDERSCORE) + ) { override fun onReload() { removeScripted().forEach(backingRegistry::removeRecipe) restoreFromBackup().forEach(backingRegistry::addRecipe) @@ -26,9 +29,12 @@ class LaserRecipeRegistryGrsAdapter( override fun getName(): String? { return "laser_transformation" } + @JvmOverloads fun removeRecipe(input: Block, inputMeta: Int = W): Boolean { - return backingRegistry.getAllRecipes().filter { it.grsMatches(input, inputMeta) } + return backingRegistry + .getAllRecipes() + .filter { it.grsMatches(input, inputMeta) } .map { recipe -> val removed = backingRegistry.removeRecipe(recipe) if (!removed) GroovyLog.msg("Failed to remove recipe $recipe") @@ -36,7 +42,8 @@ class LaserRecipeRegistryGrsAdapter( } .all { it } } + fun removeRecipe(input: IBlockState): Boolean { return removeRecipe(input.block, input.block.getMetaFromState(input)) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/groovy/RecipeRegistryGrsAdapter.kt b/src/main/kotlin/com/github/trc/clayium/integration/groovy/RecipeRegistryGrsAdapter.kt index 7b74bdaf5..11ebf27e5 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/groovy/RecipeRegistryGrsAdapter.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/groovy/RecipeRegistryGrsAdapter.kt @@ -11,7 +11,10 @@ import net.minecraft.item.ItemStack class RecipeRegistryGrsAdapter( val backingRegistry: RecipeRegistry<*>, -) : VirtualizedRegistry(Alias.generateOf(backingRegistry.categoryName, CaseFormat.LOWER_UNDERSCORE)) { +) : + VirtualizedRegistry( + Alias.generateOf(backingRegistry.categoryName, CaseFormat.LOWER_UNDERSCORE) + ) { override fun onReload() { removeScripted().forEach(backingRegistry::removeRecipe) restoreFromBackup().forEach(backingRegistry::addRecipe) @@ -26,7 +29,9 @@ class RecipeRegistryGrsAdapter( } fun removeRecipe(inputs: List, tier: Int): Boolean { - return backingRegistry.getAllRecipes().filter { it.matches(inputs, tier) } + return backingRegistry + .getAllRecipes() + .filter { it.matches(inputs, tier) } .map { recipe -> val removed = backingRegistry.removeRecipe(recipe) if (!removed) GroovyLog.msg("Failed to remove recipe $recipe") @@ -34,4 +39,4 @@ class RecipeRegistryGrsAdapter( } .all { it } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/JeiPlugin.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/JeiPlugin.kt index d86c66cfa..217a0be14 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/JeiPlugin.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/JeiPlugin.kt @@ -49,58 +49,119 @@ class JeiPlugin : IModPlugin { override fun register(modRegistry: IModRegistry) { jeiHelpers = modRegistry.jeiHelpers - modRegistry.handleRecipes(ClayWorkTableRecipe::class.java, ::ClayWorkTableRecipeWrapper, ClayWorkTableRecipeCategory.UID) - modRegistry.addRecipeCatalyst(ItemStack(ClayiumBlocks.CLAY_WORK_TABLE), ClayWorkTableRecipeCategory.UID) + modRegistry.handleRecipes( + ClayWorkTableRecipe::class.java, + ::ClayWorkTableRecipeWrapper, + ClayWorkTableRecipeCategory.UID + ) + modRegistry.addRecipeCatalyst( + ItemStack(ClayiumBlocks.CLAY_WORK_TABLE), + ClayWorkTableRecipeCategory.UID + ) modRegistry.addRecipes(CWTRecipes.CLAY_WORK_TABLE.recipes, ClayWorkTableRecipeCategory.UID) - modRegistry.addRecipeClickArea(GuiClayWorkTable::class.java, 78, 29, 20, 16, ClayWorkTableRecipeCategory.UID) + modRegistry.addRecipeClickArea( + GuiClayWorkTable::class.java, + 78, + 29, + 20, + 16, + ClayWorkTableRecipeCategory.UID + ) for (recipeRegistry in CRecipes.ALL_REGISTRIES.values) { val specialWrapper = recipeWrappers[recipeRegistry.category.uniqueId] if (specialWrapper != null) { - modRegistry.handleRecipes(Recipe::class.java, specialWrapper, recipeRegistry.category.uniqueId) - modRegistry.addRecipes(recipeRegistry.getAllRecipes(), recipeRegistry.category.uniqueId) + modRegistry.handleRecipes( + Recipe::class.java, + specialWrapper, + recipeRegistry.category.uniqueId + ) + modRegistry.addRecipes( + recipeRegistry.getAllRecipes(), + recipeRegistry.category.uniqueId + ) } else if (recipeRegistry === CRecipes.CHEMICAL_METAL_SEPARATOR) { // Add RecipeDrawable for every single chanced output. // todo better way to do this? - modRegistry.handleRecipes(MetalSeparatorRecipeWrapper.RecipeData::class.java, - ::MetalSeparatorRecipeWrapper, recipeRegistry.category.uniqueId) - modRegistry.addRecipes(recipeRegistry.getAllRecipes() - .filter { it.chancedOutputs != null } - .flatMap { it.chancedOutputs!!.chancedOutputs.mapIndexed { i, _ -> MetalSeparatorRecipeWrapper.RecipeData(it, i) } }, - recipeRegistry.category.uniqueId) + modRegistry.handleRecipes( + MetalSeparatorRecipeWrapper.RecipeData::class.java, + ::MetalSeparatorRecipeWrapper, + recipeRegistry.category.uniqueId + ) + modRegistry.addRecipes( + recipeRegistry + .getAllRecipes() + .filter { it.chancedOutputs != null } + .flatMap { + it.chancedOutputs!!.chancedOutputs.mapIndexed { i, _ -> + MetalSeparatorRecipeWrapper.RecipeData(it, i) + } + }, + recipeRegistry.category.uniqueId + ) } else { - modRegistry.handleRecipes(Recipe::class.java, ::ClayiumRecipeWrapper, recipeRegistry.category.uniqueId) - modRegistry.addRecipes(recipeRegistry.getAllRecipes(), recipeRegistry.category.uniqueId) + modRegistry.handleRecipes( + Recipe::class.java, + ::ClayiumRecipeWrapper, + recipeRegistry.category.uniqueId + ) + modRegistry.addRecipes( + recipeRegistry.getAllRecipes(), + recipeRegistry.category.uniqueId + ) } } for (registry in ClayiumApi.mteManager.allRegistries()) { for (metaTileEntity in registry) { when (metaTileEntity) { - is WorkableMetaTileEntity -> modRegistry.addRecipeCatalyst(metaTileEntity.getStackForm(), - metaTileEntity.recipeRegistry.category.uniqueId) - - is SolarClayFabricatorMetaTileEntity -> modRegistry.addRecipeCatalyst(metaTileEntity.getStackForm(), - metaTileEntity.registry.category.uniqueId) + is WorkableMetaTileEntity -> + modRegistry.addRecipeCatalyst( + metaTileEntity.getStackForm(), + metaTileEntity.recipeRegistry.category.uniqueId + ) + is SolarClayFabricatorMetaTileEntity -> + modRegistry.addRecipeCatalyst( + metaTileEntity.getStackForm(), + metaTileEntity.registry.category.uniqueId + ) } } } - modRegistry.addIngredientInfo(listOf(ItemStack(ClayiumBlocks.CLAY_TREE_SAPLING), ItemStack(ClayiumBlocks.CLAY_TREE_LOG), ItemStack(ClayiumBlocks.CLAY_TREE_LEAVES)), - VanillaTypes.ITEM, "recipe.clayium.clay_tree.description") - modRegistry.addIngredientInfo(ItemStack(ClayiumBlocks.QUARTZ_CRUCIBLE), VanillaTypes.ITEM, "recipe.clayium.quartz_crucible.description") - modRegistry.addIngredientInfo(OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter), VanillaTypes.ITEM, "recipe.clayium.pure_antimatter.description") + modRegistry.addIngredientInfo( + listOf( + ItemStack(ClayiumBlocks.CLAY_TREE_SAPLING), + ItemStack(ClayiumBlocks.CLAY_TREE_LOG), + ItemStack(ClayiumBlocks.CLAY_TREE_LEAVES) + ), + VanillaTypes.ITEM, + "recipe.clayium.clay_tree.description" + ) + modRegistry.addIngredientInfo( + ItemStack(ClayiumBlocks.QUARTZ_CRUCIBLE), + VanillaTypes.ITEM, + "recipe.clayium.quartz_crucible.description" + ) + modRegistry.addIngredientInfo( + OreDictUnifier.get(OrePrefix.gem, CMaterials.pureAntimatter), + VanillaTypes.ITEM, + "recipe.clayium.pure_antimatter.description" + ) } companion object { lateinit var jeiHelpers: IJeiHelpers lateinit var jeiRuntime: IJeiRuntime - //UID -> IRecipeWrapper + // UID -> IRecipeWrapper private val recipeWrappers = mutableMapOf>() - fun registerWrapper(recipeRegistry: RecipeRegistry<*>, wrapperFactory: IRecipeWrapperFactory) { + fun registerWrapper( + recipeRegistry: RecipeRegistry<*>, + wrapperFactory: IRecipeWrapperFactory + ) { recipeWrappers[recipeRegistry.category.uniqueId] = wrapperFactory } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeCategory.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeCategory.kt index 79c2f9419..3905d1589 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeCategory.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeCategory.kt @@ -18,18 +18,29 @@ class ClayiumRecipeCategory( private val clayiumCategory: RecipeCategory, ) : IRecipeCategory { - private val background = guiHelper.createDrawable( - clayiumId("textures/gui/jei.png"), - 5, 11, 166, 65, - ) - private val progressBarBackground = guiHelper.createDrawable( - clayiumId("textures/gui/progress_bar.png"), - 0, 0, 24, 17, - ) - private val progressBar = guiHelper.createAnimatedDrawable( - guiHelper.createDrawable(clayiumId("textures/gui/progress_bar.png"), 0, 17, 24, 17), - 40, IDrawableAnimated.StartDirection.LEFT, false, - ) + private val background = + guiHelper.createDrawable( + clayiumId("textures/gui/jei.png"), + 5, + 11, + 166, + 65, + ) + private val progressBarBackground = + guiHelper.createDrawable( + clayiumId("textures/gui/progress_bar.png"), + 0, + 0, + 24, + 17, + ) + private val progressBar = + guiHelper.createAnimatedDrawable( + guiHelper.createDrawable(clayiumId("textures/gui/progress_bar.png"), 0, 17, 24, 17), + 40, + IDrawableAnimated.StartDirection.LEFT, + false, + ) override fun getUid(): String { return clayiumCategory.uniqueId @@ -62,7 +73,6 @@ class ClayiumRecipeCategory( ingredients.getOutputs(VanillaTypes.ITEM).forEachIndexed { i, output -> stacks.init(i + inputs.size, false, 97 + i * 17, 20) stacks.set(i + inputs.size, output) - } } @@ -70,4 +80,4 @@ class ClayiumRecipeCategory( progressBarBackground.draw(minecraft, 71, 21) progressBar.draw(minecraft, 71, 21) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeWrapper.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeWrapper.kt index 8177f91b1..a261572a9 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeWrapper.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/ClayiumRecipeWrapper.kt @@ -15,13 +15,25 @@ open class ClayiumRecipeWrapper( ingredients.setOutputs(VanillaTypes.ITEM, recipe.outputs) } - override fun drawInfo(minecraft: Minecraft, recipeWidth: Int, recipeHeight: Int, mouseX: Int, mouseY: Int) { - val energyConsumed = NumberFormat.formatWithMaxDigits((recipe.cePerTick.energy.toDouble() * recipe.duration) / 100_000, 3) + override fun drawInfo( + minecraft: Minecraft, + recipeWidth: Int, + recipeHeight: Int, + mouseX: Int, + mouseY: Int + ) { + val energyConsumed = + NumberFormat.formatWithMaxDigits( + (recipe.cePerTick.energy.toDouble() * recipe.duration) / 100_000, + 3 + ) val craftTime = NumberFormat.formatWithMaxDigits(recipe.duration.toDouble(), 3) minecraft.fontRenderer.drawString("Tier: ${recipe.recipeTier}", 6, 43, 0x404040) minecraft.fontRenderer.drawString( "${recipe.cePerTick.format()}/t x ${craftTime}t = ${energyConsumed}CE", - 6, 52, 0x404040 + 6, + 52, + 0x404040 ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/MetalSeparatorRecipeWrapper.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/MetalSeparatorRecipeWrapper.kt index 7afad1e8d..6bab73f05 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/MetalSeparatorRecipeWrapper.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/MetalSeparatorRecipeWrapper.kt @@ -12,10 +12,19 @@ class MetalSeparatorRecipeWrapper( override fun getIngredients(ingredients: IIngredients) { ingredients.setInputLists(VanillaTypes.ITEM, recipe.inputs.map { it.stacks }) - ingredients.setOutput(VanillaTypes.ITEM, recipe.chancedOutputs!!.chancedOutputs[index].result) + ingredients.setOutput( + VanillaTypes.ITEM, + recipe.chancedOutputs!!.chancedOutputs[index].result + ) } - override fun drawInfo(minecraft: Minecraft, recipeWidth: Int, recipeHeight: Int, mouseX: Int, mouseY: Int) { + override fun drawInfo( + minecraft: Minecraft, + recipeWidth: Int, + recipeHeight: Int, + mouseX: Int, + mouseY: Int + ) { super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY) val chance = "${recipe.chancedOutputs!!.chancedOutputs[index].chance / 100.0} %" val chanceTextWidth = minecraft.fontRenderer.getStringWidth(chance) @@ -24,4 +33,4 @@ class MetalSeparatorRecipeWrapper( } class RecipeData(val recipe: Recipe, val index: Int) -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/SolarClayFabricatorRecipeWrapper.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/SolarClayFabricatorRecipeWrapper.kt index ce325e873..586b7b055 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/SolarClayFabricatorRecipeWrapper.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/basic/SolarClayFabricatorRecipeWrapper.kt @@ -7,7 +7,13 @@ import net.minecraft.client.resources.I18n class SolarClayFabricatorRecipeWrapper( recipe: Recipe, ) : ClayiumRecipeWrapper(recipe) { - override fun drawInfo(minecraft: Minecraft, recipeWidth: Int, recipeHeight: Int, mouseX: Int, mouseY: Int) { + override fun drawInfo( + minecraft: Minecraft, + recipeWidth: Int, + recipeHeight: Int, + mouseX: Int, + mouseY: Int + ) { // draw "Tier" at center top val tierText = "Tier: ${recipe.recipeTier}" val tierTextWidth = minecraft.fontRenderer.getStringWidth(tierText) @@ -15,7 +21,9 @@ class SolarClayFabricatorRecipeWrapper( minecraft.fontRenderer.drawString( "${recipe.duration}t = ${I18n.format("recipe.clayium.second", (recipe.duration / 20))} (${recipe.cePerTick.format()}/t)", - 6, 50, 0x404040 + 6, + 50, + 0x404040 ) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeCategory.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeCategory.kt index f8a81b321..16c61afe0 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeCategory.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeCategory.kt @@ -13,11 +13,11 @@ import net.minecraft.client.Minecraft import net.minecraft.client.resources.I18n import net.minecraft.item.ItemStack -class ClayWorkTableRecipeCategory( - guiHelper: IGuiHelper -) : IRecipeCategory { +class ClayWorkTableRecipeCategory(guiHelper: IGuiHelper) : + IRecipeCategory { - private val overlay = guiHelper.createDrawable(clayiumId("textures/gui/clayworktable.png"), 4, 6, 168, 74) + private val overlay = + guiHelper.createDrawable(clayiumId("textures/gui/clayworktable.png"), 4, 6, 168, 74) private val icon = guiHelper.createDrawableIngredient(ItemStack(ClayiumBlocks.CLAY_WORK_TABLE)) override fun getUid(): String { @@ -41,7 +41,7 @@ class ClayWorkTableRecipeCategory( } override fun drawExtras(minecraft: Minecraft) { -// progressBar.draw(minecraft, 44, 23) + // progressBar.draw(minecraft, 44, 23) } override fun setRecipe( @@ -64,4 +64,4 @@ class ClayWorkTableRecipeCategory( companion object { const val UID = "clayium:clay_work_table" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeWrapper.kt b/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeWrapper.kt index e35c25c52..64281b711 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeWrapper.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/jei/clayworktable/ClayWorkTableRecipeWrapper.kt @@ -12,33 +12,46 @@ import net.minecraft.client.Minecraft import net.minecraft.client.renderer.GlStateManager import net.minecraft.item.ItemStack -class ClayWorkTableRecipeWrapper( - val recipe: ClayWorkTableRecipe -) : IRecipeWrapper { +class ClayWorkTableRecipeWrapper(val recipe: ClayWorkTableRecipe) : IRecipeWrapper { - private val progressBar = guiHelper.createAnimatedDrawable( - guiHelper.createDrawable(clayiumId("textures/gui/clayworktable.png"), 176, 0, 80, 16), - recipe.clicks * 5, - IDrawableAnimated.StartDirection.LEFT, - false - ) + private val progressBar = + guiHelper.createAnimatedDrawable( + guiHelper.createDrawable(clayiumId("textures/gui/clayworktable.png"), 176, 0, 80, 16), + recipe.clicks * 5, + IDrawableAnimated.StartDirection.LEFT, + false + ) override fun getIngredients(ingredients: IIngredients) { - ingredients.setInputLists(VanillaTypes.ITEM, listOf(recipe.input.inputStacks, recipe.method.requiredTools.map { ItemStack(it) })) + ingredients.setInputLists( + VanillaTypes.ITEM, + listOf(recipe.input.inputStacks, recipe.method.requiredTools.map { ItemStack(it) }) + ) ingredients.setOutputs(VanillaTypes.ITEM, recipe.outputs) } - override fun drawInfo(minecraft: Minecraft, recipeWidth: Int, recipeHeight: Int, mouseX: Int, mouseY: Int) { + override fun drawInfo( + minecraft: Minecraft, + recipeWidth: Int, + recipeHeight: Int, + mouseX: Int, + mouseY: Int + ) { GlStateManager.pushMatrix() progressBar.draw(minecraft, 44, 23) for (id in ClayWorkTableMethod.ids) { if (id == recipe.method.id) { val cStr = recipe.clicks.toString() - minecraft.fontRenderer.drawString(cStr, 41 + 16*id - 5 + 8 - minecraft.fontRenderer.getStringWidth(cStr) / 2, 36, 0) + minecraft.fontRenderer.drawString( + cStr, + 41 + 16 * id - 5 + 8 - minecraft.fontRenderer.getStringWidth(cStr) / 2, + 36, + 0 + ) GlStateManager.color(1f, 1f, 1f, 1f) - buttons[id + 6].draw(minecraft, 36 + 16*id, 46) + buttons[id + 6].draw(minecraft, 36 + 16 * id, 46) } else { - buttons[id].draw(minecraft, 36 + 16*id, 46) + buttons[id].draw(minecraft, 36 + 16 * id, 46) } } GlStateManager.popMatrix() @@ -48,20 +61,18 @@ class ClayWorkTableRecipeWrapper( private val GUI_IMAGE = clayiumId("textures/gui/clayworktable.png") private val guiHelper = JeiPlugin.jeiHelpers.guiHelper - /** - * 0-5 are disabled buttons, 6-11 are enabled buttons - */ - private val buttons = listOf(List(ClayWorkTableMethod.entries.size) { i -> - if (i == 5) - guiHelper.createDrawable(GUI_IMAGE, 176, 80, 16, 16) - else - guiHelper.createDrawable(GUI_IMAGE, 176 + i*16, 32, 16, 16) - }, - List(ClayWorkTableMethod.entries.size) { i -> - if (i == 5) - guiHelper.createDrawable(GUI_IMAGE, 176, 96, 16, 16) - else - guiHelper.createDrawable(GUI_IMAGE, 176 + i*16, 48, 16, 16) - }).flatten() + /** 0-5 are disabled buttons, 6-11 are enabled buttons */ + private val buttons = + listOf( + List(ClayWorkTableMethod.entries.size) { i -> + if (i == 5) guiHelper.createDrawable(GUI_IMAGE, 176, 80, 16, 16) + else guiHelper.createDrawable(GUI_IMAGE, 176 + i * 16, 32, 16, 16) + }, + List(ClayWorkTableMethod.entries.size) { i -> + if (i == 5) guiHelper.createDrawable(GUI_IMAGE, 176, 96, 16, 16) + else guiHelper.createDrawable(GUI_IMAGE, 176 + i * 16, 48, 16, 16) + } + ) + .flatten() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/TheOneProbeModule.kt b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/TheOneProbeModule.kt index ba131d4e2..7d7132c8a 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/TheOneProbeModule.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/TheOneProbeModule.kt @@ -10,4 +10,4 @@ object TheOneProbeModule { top.registerProvider(ClayEnergyInfoProvider()) top.registerProvider(WorkableInfoProvider()) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/CapabilityInfoProvider.kt b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/CapabilityInfoProvider.kt index d06959961..1c1a8dec8 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/CapabilityInfoProvider.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/CapabilityInfoProvider.kt @@ -13,13 +13,25 @@ abstract class CapabilityInfoProvider : IProbeInfoProvider { abstract val capability: Capability protected abstract fun addProbeInfo( - capability: T, mode: ProbeMode, probeInfo: IProbeInfo, - player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData + capability: T, + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData ) - override fun addProbeInfo(mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { world.getTileEntity(hitData.pos)?.getCapability(capability, null)?.let { capability -> addProbeInfo(capability, mode, probeInfo, player, world, state, hitData) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/ClayEnergyInfoProvider.kt b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/ClayEnergyInfoProvider.kt index eef3fc0f8..2618ddbc1 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/ClayEnergyInfoProvider.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/ClayEnergyInfoProvider.kt @@ -12,11 +12,20 @@ import net.minecraft.world.World import net.minecraftforge.common.capabilities.Capability class ClayEnergyInfoProvider : CapabilityInfoProvider() { - override val capability: Capability = ClayiumTileCapabilities.CLAY_ENERGY_HOLDER + override val capability: Capability = + ClayiumTileCapabilities.CLAY_ENERGY_HOLDER - override fun addProbeInfo(capability: IClayEnergyHolder, mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + capability: IClayEnergyHolder, + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { probeInfo.text(capability.getEnergyStored().format()) } override fun getID() = "$MOD_ID:ce_container_provider" -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/WorkableInfoProvider.kt b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/WorkableInfoProvider.kt index 6f3d74af6..b9ccc45c7 100644 --- a/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/WorkableInfoProvider.kt +++ b/src/main/kotlin/com/github/trc/clayium/integration/theoneprobe/providers/WorkableInfoProvider.kt @@ -14,9 +14,17 @@ import net.minecraftforge.common.capabilities.Capability class WorkableInfoProvider : CapabilityInfoProvider() { override val capability: Capability = ClayiumTileCapabilities.WORKABLE - override fun addProbeInfo(capability: AbstractWorkable, mode: ProbeMode, probeInfo: IProbeInfo, player: EntityPlayer, world: World, state: IBlockState, hitData: IProbeHitData) { + override fun addProbeInfo( + capability: AbstractWorkable, + mode: ProbeMode, + probeInfo: IProbeInfo, + player: EntityPlayer, + world: World, + state: IBlockState, + hitData: IProbeHitData + ) { capability.addProbeInfo(mode, probeInfo, player, world, state, hitData) } override fun getID() = "$MOD_ID:workable_info_provider" -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/github/trc/clayium/network/ClayChunkLoaderCallback.kt b/src/main/kotlin/com/github/trc/clayium/network/ClayChunkLoaderCallback.kt index 6ae6aca41..726a4089f 100644 --- a/src/main/kotlin/com/github/trc/clayium/network/ClayChunkLoaderCallback.kt +++ b/src/main/kotlin/com/github/trc/clayium/network/ClayChunkLoaderCallback.kt @@ -18,4 +18,4 @@ object ClayChunkLoaderCallback : ForgeChunkManager.LoadingCallback { } } } -} \ No newline at end of file +} diff --git a/src/test/kotlin/com/github/trc/clayium/Bootstrap.kt b/src/test/kotlin/com/github/trc/clayium/Bootstrap.kt index 905bf102d..04c08f078 100644 --- a/src/test/kotlin/com/github/trc/clayium/Bootstrap.kt +++ b/src/test/kotlin/com/github/trc/clayium/Bootstrap.kt @@ -13,4 +13,4 @@ object Bootstrap { net.minecraft.init.Bootstrap.register() ClayiumApi.mteManager.createRegistry(MOD_ID) } -} \ No newline at end of file +} diff --git a/src/test/kotlin/com/github/trc/clayium/clayenergy/TestClayEnergyStrings.kt b/src/test/kotlin/com/github/trc/clayium/clayenergy/TestClayEnergyStrings.kt index cd2a2f589..c4af6247c 100644 --- a/src/test/kotlin/com/github/trc/clayium/clayenergy/TestClayEnergyStrings.kt +++ b/src/test/kotlin/com/github/trc/clayium/clayenergy/TestClayEnergyStrings.kt @@ -5,38 +5,17 @@ import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe @Suppress("unused") -class TestClayEnergyStrings : StringSpec({ - "-10μ CE" { - ClayEnergy.micro(-10).format() shouldBe "-10uCE" - } - "0 CE" { - ClayEnergy.ZERO.format() shouldBe "0CE" - } - "10μ CE - minimum unit value" { - ClayEnergy.micro(10).format() shouldBe "10uCE" - } - "13m CE - small value" { - ClayEnergy.milli(13).format() shouldBe "13mCE" - } - "1 CE" { - ClayEnergy.of(1).format() shouldBe "1CE" - } - "57 CE" { - ClayEnergy.of(57).format() shouldBe "57CE" - } - "250 CE" { - ClayEnergy.of(250).format() shouldBe "250CE" - } - "6k CE - kilo value" { - ClayEnergy.of(6000).format() shouldBe "6kCE" - } - "500k CE" { - ClayEnergy.of(500_000).format() shouldBe "500kCE" - } - "53T CE - big value" { - ClayEnergy.of(53_000_000_000_000).format() shouldBe "53TCE" - } - "1.234k CE - decimal value" { - ClayEnergy.of(1234).format() shouldBe "1.234kCE" - } -}) \ No newline at end of file +class TestClayEnergyStrings : + StringSpec({ + "-10μ CE" { ClayEnergy.micro(-10).format() shouldBe "-10uCE" } + "0 CE" { ClayEnergy.ZERO.format() shouldBe "0CE" } + "10μ CE - minimum unit value" { ClayEnergy.micro(10).format() shouldBe "10uCE" } + "13m CE - small value" { ClayEnergy.milli(13).format() shouldBe "13mCE" } + "1 CE" { ClayEnergy.of(1).format() shouldBe "1CE" } + "57 CE" { ClayEnergy.of(57).format() shouldBe "57CE" } + "250 CE" { ClayEnergy.of(250).format() shouldBe "250CE" } + "6k CE - kilo value" { ClayEnergy.of(6000).format() shouldBe "6kCE" } + "500k CE" { ClayEnergy.of(500_000).format() shouldBe "500kCE" } + "53T CE - big value" { ClayEnergy.of(53_000_000_000_000).format() shouldBe "53TCE" } + "1.234k CE - decimal value" { ClayEnergy.of(1234).format() shouldBe "1.234kCE" } + }) diff --git a/src/test/kotlin/com/github/trc/clayium/metatileentity/TestClayDistributor.kt b/src/test/kotlin/com/github/trc/clayium/metatileentity/TestClayDistributor.kt index 7374d2543..115f03e29 100644 --- a/src/test/kotlin/com/github/trc/clayium/metatileentity/TestClayDistributor.kt +++ b/src/test/kotlin/com/github/trc/clayium/metatileentity/TestClayDistributor.kt @@ -16,80 +16,84 @@ import net.minecraft.util.EnumFacing import net.minecraftforge.items.IItemHandler import net.minecraftforge.items.ItemStackHandler -class TestClayDistributor : StringSpec({ - - lateinit var mte: DistributorMetaTileEntity - lateinit var distributor: DistributorMetaTileEntity.DistributorIoHandler - - beforeTest { - Bootstrap.perform() - mte = DistributorMetaTileEntity(clayiumId("distributor"), ClayTiers.CLAY_STEEL) - distributor = mte.ioHandler - } - - "Distribute 64 items to 2 handlers" { - val handler0 = ItemStackHandler(2) - val handler1 = ItemStackHandler(2) - - val map = mutableMapOf().apply { - put(EnumFacing.NORTH, handler0) - put(EnumFacing.SOUTH, handler1) +class TestClayDistributor : + StringSpec({ + lateinit var mte: DistributorMetaTileEntity + lateinit var distributor: DistributorMetaTileEntity.DistributorIoHandler + + beforeTest { + Bootstrap.perform() + mte = DistributorMetaTileEntity(clayiumId("distributor"), ClayTiers.CLAY_STEEL) + distributor = mte.ioHandler } - val source = ItemStackHandler(2).apply { - insertItem(0, ItemStack(Items.CLAY_BALL, 64), false) - insertItem(1, ItemStack(Items.DIAMOND, 64), false) + "Distribute 64 items to 2 handlers" { + val handler0 = ItemStackHandler(2) + val handler1 = ItemStackHandler(2) + + val map = + mutableMapOf().apply { + put(EnumFacing.NORTH, handler0) + put(EnumFacing.SOUTH, handler1) + } + + val source = + ItemStackHandler(2).apply { + insertItem(0, ItemStack(Items.CLAY_BALL, 64), false) + insertItem(1, ItemStack(Items.DIAMOND, 64), false) + } + + distributor.distribute(source, map) + + // Clay Steel Distributor has 64/tick throughput, so DIAMOND shouldn't be transferred + val stack0 = handler0.getStackInSlot(0) + stack0 should haveItem(Items.CLAY_BALL) + stack0 should haveCount(32) + handler0.getStackInSlot(1) should beEmpty() + + val stack1 = handler1.getStackInSlot(0) + stack1 should haveItem(Items.CLAY_BALL) + stack1 should haveCount(32) + handler1.getStackInSlot(1) should beEmpty() } - distributor.distribute(source, map) - - // Clay Steel Distributor has 64/tick throughput, so DIAMOND shouldn't be transferred - val stack0 = handler0.getStackInSlot(0) - stack0 should haveItem(Items.CLAY_BALL) - stack0 should haveCount(32) - handler0.getStackInSlot(1) should beEmpty() + "Distribute 11 items to 2 handlers" { + val handler0 = ItemStackHandler(2) + val handler1 = ItemStackHandler(2) - val stack1 = handler1.getStackInSlot(0) - stack1 should haveItem(Items.CLAY_BALL) - stack1 should haveCount(32) - handler1.getStackInSlot(1) should beEmpty() - } + val map = + mutableMapOf().apply { + put(EnumFacing.NORTH, handler0) + put(EnumFacing.SOUTH, handler1) + } - "Distribute 11 items to 2 handlers" { - val handler0 = ItemStackHandler(2) - val handler1 = ItemStackHandler(2) + val source = + ItemStackHandler(2).apply { + insertItem(0, ItemStack(Items.CLAY_BALL, 3), false) + insertItem(1, ItemStack(Items.DIAMOND, 64), false) + } - val map = mutableMapOf().apply { - put(EnumFacing.NORTH, handler0) - put(EnumFacing.SOUTH, handler1) - } - - val source = ItemStackHandler(2).apply { - insertItem(0, ItemStack(Items.CLAY_BALL, 3), false) - insertItem(1, ItemStack(Items.DIAMOND, 64), false) - } + distributor.distribute(source, map) - distributor.distribute(source, map) + // 3 ClayBall → 2, 1 + // 61 Diamond → 31, 30 + // 2 + 1 + 31 + 30 = 64 + val stack0 = handler0.getStackInSlot(0) + val stack1 = handler1.getStackInSlot(0) - // 3 ClayBall → 2, 1 - // 61 Diamond → 31, 30 - // 2 + 1 + 31 + 30 = 64 - val stack0 = handler0.getStackInSlot(0) - val stack1 = handler1.getStackInSlot(0) + stack0 should haveItem(Items.CLAY_BALL) + stack1 should haveItem(Items.CLAY_BALL) - stack0 should haveItem(Items.CLAY_BALL) - stack1 should haveItem(Items.CLAY_BALL) + val counts0 = Pair(stack0.count, stack1.count) + (counts0 == Pair(1, 2) || counts0 == Pair(2, 1)) shouldBe true - val counts0 = Pair(stack0.count, stack1.count) - (counts0 == Pair(1, 2) || counts0 == Pair(2, 1)) shouldBe true + val stack01 = handler0.getStackInSlot(1) + val stack11 = handler1.getStackInSlot(1) - val stack01 = handler0.getStackInSlot(1) - val stack11 = handler1.getStackInSlot(1) + stack01 should haveItem(Items.DIAMOND) + stack11 should haveItem(Items.DIAMOND) - stack01 should haveItem(Items.DIAMOND) - stack11 should haveItem(Items.DIAMOND) - - val counts1 = Pair(stack01.count, stack11.count) - (counts1 == Pair(30, 31) || counts1 == Pair(31, 30)) shouldBe true - } -}) \ No newline at end of file + val counts1 = Pair(stack01.count, stack11.count) + (counts1 == Pair(30, 31) || counts1 == Pair(31, 30)) shouldBe true + } + }) diff --git a/src/test/kotlin/com/github/trc/clayium/network/TestPacketDataList.kt b/src/test/kotlin/com/github/trc/clayium/network/TestPacketDataList.kt index 2e5490b7a..108853801 100644 --- a/src/test/kotlin/com/github/trc/clayium/network/TestPacketDataList.kt +++ b/src/test/kotlin/com/github/trc/clayium/network/TestPacketDataList.kt @@ -9,39 +9,40 @@ import io.kotest.matchers.shouldBe import net.minecraft.nbt.NBTTagCompound import net.minecraft.nbt.NBTTagList -class TestPacketDataList : StringSpec({ +class TestPacketDataList : + StringSpec({ + beforeTest { Bootstrap.perform() } - beforeTest { - Bootstrap.perform() - } + "Test PacketDataList" { + val updates = PacketDataList() + updates.add(0, byteArrayOf(0, 1, 2, 3)) + updates.add(1, byteArrayOf(4, 5, 6, 7)) + updates.add(1, byteArrayOf(1)) - "Test PacketDataList" { - val updates = PacketDataList() - updates.add(0, byteArrayOf(0, 1, 2, 3)) - updates.add(1, byteArrayOf(4, 5, 6, 7)) - updates.add(1, byteArrayOf(1)) + val tagList: NBTTagList = updates.dumpToNbt() + tagList.shouldHaveSize(3) - val tagList: NBTTagList = updates.dumpToNbt() - tagList.shouldHaveSize(3) - - for ((i, entryBase) in tagList.withIndex()) { - val entry = entryBase as NBTTagCompound - for (discriminator in entry.keySet) { - when (i) { - 0 -> { - discriminator.toInt() shouldBe 0 - entry.getByteArray(discriminator).toList() shouldContainAll byteArrayOf(0, 1, 2, 3).toList() - } - 1 -> { - discriminator.toInt() shouldBe 1 - entry.getByteArray(discriminator).toList() shouldContainAll byteArrayOf(4, 5, 6, 7).toList() - } - 2 -> { - discriminator.toInt() shouldBe 1 - entry.getByteArray(discriminator).toList() shouldContainAll byteArrayOf(1).toList() + for ((i, entryBase) in tagList.withIndex()) { + val entry = entryBase as NBTTagCompound + for (discriminator in entry.keySet) { + when (i) { + 0 -> { + discriminator.toInt() shouldBe 0 + entry.getByteArray(discriminator).toList() shouldContainAll + byteArrayOf(0, 1, 2, 3).toList() + } + 1 -> { + discriminator.toInt() shouldBe 1 + entry.getByteArray(discriminator).toList() shouldContainAll + byteArrayOf(4, 5, 6, 7).toList() + } + 2 -> { + discriminator.toInt() shouldBe 1 + entry.getByteArray(discriminator).toList() shouldContainAll + byteArrayOf(1).toList() + } } } } } - } -}) \ No newline at end of file + }) diff --git a/src/test/kotlin/com/github/trc/clayium/util/ItemStackMatcher.kt b/src/test/kotlin/com/github/trc/clayium/util/ItemStackMatcher.kt index 05c479242..fc4403c8b 100644 --- a/src/test/kotlin/com/github/trc/clayium/util/ItemStackMatcher.kt +++ b/src/test/kotlin/com/github/trc/clayium/util/ItemStackMatcher.kt @@ -5,26 +5,29 @@ import io.kotest.matchers.MatcherResult import net.minecraft.item.Item import net.minecraft.item.ItemStack -fun haveCount(count: Int) = Matcher { value -> - MatcherResult( - value.count == count, - { "ItemStack should have count $count, but has ${value.count}" }, - { "ItemStack should not have count $count" }, - ) -} +fun haveCount(count: Int) = + Matcher { value -> + MatcherResult( + value.count == count, + { "ItemStack should have count $count, but has ${value.count}" }, + { "ItemStack should not have count $count" }, + ) + } -fun haveItem(item: Item) = Matcher { value -> - MatcherResult( - value.item == item, - { "ItemStack should have item $item, but has ${value.item}" }, - { "ItemStack should not have item $item" }, - ) -} +fun haveItem(item: Item) = + Matcher { value -> + MatcherResult( + value.item == item, + { "ItemStack should have item $item, but has ${value.item}" }, + { "ItemStack should not have item $item" }, + ) + } -fun beEmpty() = Matcher { value -> - MatcherResult( - value.isEmpty, - { "ItemStack should be empty" }, - { "ItemStack should not be empty" }, - ) -} \ No newline at end of file +fun beEmpty() = + Matcher { value -> + MatcherResult( + value.isEmpty, + { "ItemStack should be empty" }, + { "ItemStack should not be empty" }, + ) + } diff --git a/src/test/kotlin/com/github/trc/clayium/util/TestCUtils.kt b/src/test/kotlin/com/github/trc/clayium/util/TestCUtils.kt index fe4b48bef..8d868c506 100644 --- a/src/test/kotlin/com/github/trc/clayium/util/TestCUtils.kt +++ b/src/test/kotlin/com/github/trc/clayium/util/TestCUtils.kt @@ -11,47 +11,54 @@ import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.items.ItemStackHandler @Suppress("unused") -class TestCUtils : StringSpec({ +class TestCUtils : + StringSpec({ + beforeTest { Bootstrap.perform() } - beforeTest { - Bootstrap.perform() - } + "ItemStacks List Serialization" { + val originalStacks = + listOf( + ItemStack(Items.DIAMOND), + ItemStack.EMPTY, + ItemStack.EMPTY, + ItemStack(Items.IRON_INGOT), + ItemStack(Items.GOLD_INGOT) + ) - "ItemStacks List Serialization" { + val data = NBTTagCompound() + CUtils.writeItems(originalStacks, "stacks", data) + val deserialized = CUtils.readItems("stacks", data) - val originalStacks = listOf( - ItemStack(Items.DIAMOND), - ItemStack.EMPTY, - ItemStack.EMPTY, - ItemStack(Items.IRON_INGOT), - ItemStack(Items.GOLD_INGOT) - ) + deserialized.shouldHaveSize(originalStacks.size) + deserialized.forEachIndexed { i, stack -> + ItemStack.areItemStacksEqual(stack, originalStacks[i]) shouldBe true + } + } + + "IItemHandler Serialization" { + val originalHandler = ItemStackHandler(5) + originalHandler.setStackInSlot(0, ItemStack(Items.DIAMOND)) + originalHandler.setStackInSlot(1, ItemStack(Items.IRON_INGOT)) + originalHandler.setStackInSlot(4, ItemStack(Items.GOLD_INGOT, 64)) - val data = NBTTagCompound() - CUtils.writeItems(originalStacks, "stacks", data) - val deserialized = CUtils.readItems("stacks", data) + val data = NBTTagCompound() + CUtils.writeItems(originalHandler, "stacks", data) - deserialized.shouldHaveSize(originalStacks.size) - deserialized.forEachIndexed { i, stack -> - ItemStack.areItemStacksEqual(stack, originalStacks[i]) shouldBe true + val newHandler = ItemStackHandler(5) + CUtils.readItems(newHandler, "stacks", data) + ItemStack.areItemStacksEqual( + newHandler.getStackInSlot(0), + originalHandler.getStackInSlot(0) + ) shouldBe true + ItemStack.areItemStacksEqual( + newHandler.getStackInSlot(1), + originalHandler.getStackInSlot(1) + ) shouldBe true + newHandler.getStackInSlot(2).isEmpty shouldBe true + newHandler.getStackInSlot(3).isEmpty shouldBe true + ItemStack.areItemStacksEqual( + newHandler.getStackInSlot(4), + originalHandler.getStackInSlot(4) + ) shouldBe true } - } - - "IItemHandler Serialization" { - val originalHandler = ItemStackHandler(5) - originalHandler.setStackInSlot(0, ItemStack(Items.DIAMOND)) - originalHandler.setStackInSlot(1, ItemStack(Items.IRON_INGOT)) - originalHandler.setStackInSlot(4, ItemStack(Items.GOLD_INGOT, 64)) - - val data = NBTTagCompound() - CUtils.writeItems(originalHandler, "stacks", data) - - val newHandler = ItemStackHandler(5) - CUtils.readItems(newHandler, "stacks", data) - ItemStack.areItemStacksEqual(newHandler.getStackInSlot(0), originalHandler.getStackInSlot(0)) shouldBe true - ItemStack.areItemStacksEqual(newHandler.getStackInSlot(1), originalHandler.getStackInSlot(1)) shouldBe true - newHandler.getStackInSlot(2).isEmpty shouldBe true - newHandler.getStackInSlot(3).isEmpty shouldBe true - ItemStack.areItemStacksEqual(newHandler.getStackInSlot(4), originalHandler.getStackInSlot(4)) shouldBe true - } -}) \ No newline at end of file + }) diff --git a/src/test/kotlin/com/github/trc/clayium/util/TestTileEntityAccess.kt b/src/test/kotlin/com/github/trc/clayium/util/TestTileEntityAccess.kt index bdc523c0e..e21ec6e19 100644 --- a/src/test/kotlin/com/github/trc/clayium/util/TestTileEntityAccess.kt +++ b/src/test/kotlin/com/github/trc/clayium/util/TestTileEntityAccess.kt @@ -10,34 +10,34 @@ import net.minecraft.tileentity.TileEntity import net.minecraft.util.math.BlockPos import net.minecraft.world.World -class TestTileEntityAccess : StringSpec({ - - lateinit var world: World - lateinit var tileEntity: TileEntity - val pos = BlockPos(1, 2, 3) - - beforeTest { - Bootstrap.perform() - - world = mockk() - tileEntity = mockk() - - every { tileEntity.getPos() } returns pos - every { tileEntity.isInvalid } returns false - } - - "not null get(IfLoaded)" { - every { world.getTileEntity(pos) } returns tileEntity - every { world.isBlockLoaded(pos) } returns true - - val access = TileEntityAccess(world, pos) - access.get() shouldBe tileEntity - access.getIfLoaded() shouldBe tileEntity - - every { world.isBlockLoaded(pos) } returns false - access.getIfLoaded() shouldBe null - every { tileEntity.isInvalid } returns true - every { world.getTileEntity(pos) } returns null - access.get() shouldBe null - } -}) \ No newline at end of file +class TestTileEntityAccess : + StringSpec({ + lateinit var world: World + lateinit var tileEntity: TileEntity + val pos = BlockPos(1, 2, 3) + + beforeTest { + Bootstrap.perform() + + world = mockk() + tileEntity = mockk() + + every { tileEntity.getPos() } returns pos + every { tileEntity.isInvalid } returns false + } + + "not null get(IfLoaded)" { + every { world.getTileEntity(pos) } returns tileEntity + every { world.isBlockLoaded(pos) } returns true + + val access = TileEntityAccess(world, pos) + access.get() shouldBe tileEntity + access.getIfLoaded() shouldBe tileEntity + + every { world.isBlockLoaded(pos) } returns false + access.getIfLoaded() shouldBe null + every { tileEntity.isInvalid } returns true + every { world.getTileEntity(pos) } returns null + access.get() shouldBe null + } + })