From 4f47a25f1e9e2b41492dae867784723cd789c658 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:18:18 +0200 Subject: [PATCH 01/32] udpate 'zone.rong:mixinbooter:8.9' --- .gitignore | 2 -- build.gradle | 8 +------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 5383aa56..1d56db91 100755 --- a/.gitignore +++ b/.gitignore @@ -82,5 +82,3 @@ local.properties run/ logs/ - -lib/groovy* diff --git a/build.gradle b/build.gradle index 5eb02432..7ee53e09 100644 --- a/build.gradle +++ b/build.gradle @@ -457,7 +457,7 @@ configurations { } } -String mixinProviderSpec = 'zone.rong:mixinbooter:9.1' +String mixinProviderSpec = 'zone.rong:mixinbooter:8.9' dependencies { implementation 'org.projectlombok:lombok:1.18.26' if (usesMixins.toBoolean()) { @@ -525,12 +525,6 @@ pluginManager.withPlugin('org.jetbrains.kotlin.kapt') { } } -configurations.configureEach { - resolutionStrategy.dependencySubstitution { - substitute module('org.scala-lang:scala-library:2.11.1') using module('org.scala-lang:scala-library:2.11.5') because('To allow mixing with Java 8 targets') - } -} - if (getFile('dependencies.gradle').exists()) { apply from: 'dependencies.gradle' } else if (getFile('dependencies.gradle.kts').exists()) { From 114108c08b1f75f094dbfbaf5ba7e766ff2b94d9 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:18:36 +0200 Subject: [PATCH 02/32] include pyrotechg, ae2, galacticraft to dependencies --- dependencies.gradle | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index eb3e4790..ee99ea52 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,36 +1,15 @@ - -//file:noinspection DependencyNotationArgument -// TODO remove when fixed in RFG ^ -/* - * Add your dependencies here. Common configurations: - * - implementation("group:name:version:classifier"): if you need this for internal implementation details of the mod. - * Available at compiletime and runtime for your environment. - * - * - compileOnlyApi("g:n:v:c"): if you need this for internal implementation details of the mod. - * Available at compiletime but not runtime for your environment. - * - * - annotationProcessor("g:n:v:c"): mostly for java compiler plugins, if you know you need this, use it, otherwise don't worry - * - * - testCONFIG("g:n:v:c"): replace CONFIG by one of the above, same as above but for the test sources instead of main - * - * You can exclude transitive dependencies (dependencies of the chosen dependency) by appending { transitive = false } if needed. - * - * To add a mod with CurseMaven, replace '("g:n:v:c")' in the above with 'rfg.deobf("curse.maven:project_slug-project_id:file_id")' - * Example: implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:4527757") - * - * To shadow a dependency, use 'shadowImplementation'. For more info, see https://github.com/GregTechCEu/Buildscripts/blob/master/docs/shadow.md - * - * For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph - */ dependencies { //Hard Dependencies implementation rfg.deobf("curse.maven:codechicken-lib-1-8-242818:2779848") // CCL 3.2.3.358 - implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:5519022-deobf-5519023-sources-5519024") // 2.8.10 + implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:5519022") // 2.8.10 implementation rfg.deobf("curse.maven:gregicality-multiblocks-564858:5619513") // 1.2.11 implementation rfg.deobf("curse.maven:gregtech-food-option-477021:6147619") // 1.12.4 - + implementation rfg.deobf("curse.maven:pyrotech-306676:6253355") + implementation rfg.deobf("curse.maven:galacticraft-legacy-564236:6364107") + implementation rfg.deobf("curse.maven:asmodeuscore-303101:6058953") + implementation rfg.deobf("curse.maven:ae2-extended-life-570458:6302098") //Soft Dependency implementation "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.684" implementation rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31 From 96d21db2219db2407fabdbf8825a7a4c09ce3102 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:18:46 +0200 Subject: [PATCH 03/32] update mod version to 0.9 --- gradle.properties | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index afaae675..7bcddc16 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ modGroup = gtb # Version of your mod. # This field can be left empty if you want your mod's version to be determined by the latest git tag instead. -modVersion = 0.2 +modVersion = 0.9 # Whether to use the old jar naming structure (modid-mcversion-version) instead of the new version (modid-version) includeMCVersionJar = false @@ -61,7 +61,7 @@ coreModClass = containsMixinsAndOrCoreModOnly = false # Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins. -forceEnableMixins = false +forceEnableMixins = true # Adds CurseMaven, Modrinth Maven, BlameJared maven, and some more well-known 1.12.2 repositories includeWellKnownRepositories = true @@ -85,7 +85,6 @@ relocateShadowedDependencies = true # Useful for debugging a server and client simultaneously. If not enabled, it will be in the standard location "run/" separateRunDirectories = false - # Publishing to modrinth requires you to set the MODRINTH_API_KEY environment variable to your current modrinth API token. # The project's ID on Modrinth. Can be either the slug or the ID. @@ -102,8 +101,8 @@ modrinthProjectId = modrinthRelations = \ required-project:gregtech-ce-unofficial;\ required-project:gregicality-multiblocks;\ - requiredDependency:gregtech-food-option;\ - requiredDependency:mixin-booter; + requiredDependency:gregtech-food-option; + # Publishing to CurseForge requires you to set the CURSEFORGE_API_KEY environment variable to one of your CurseForge API tokens. @@ -122,7 +121,6 @@ curseForgeRelations = \ requiredDependency:gregtech-ce-unofficial;\ requiredDependency:gregicality-multiblocks;\ requiredDependency:gregtech-food-option;\ - requiredDependency:mixin-booter;\ incompatible:gregtechce # This project's release type on CurseForge and/or Modrinth From 3ee367ca7e57150ac0b60b9e531baed90d051067 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:18:55 +0200 Subject: [PATCH 04/32] update readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 88f1f370..2a6be559 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,6 @@ GT6 and Greg for his great mods and ideas. Supersymmetry (SUSY) for their Idea of Catalytic Reformation Unit and its corresponding recipes -[InventoryBogoSorter](https://github.com/CleanroomMC/InventoryBogoSorter) and [Supercritical](https://github.com/SymmetricDevs/Supercritical) for MixinLoader template and examples - From 287466e74755555af276d116c965a4ca8d99e818 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:06 +0200 Subject: [PATCH 05/32] PRECISION_LASER_RECIPES Recipemap --- src/main/java/gtb/api/recipes/GTBRecipeMaps.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gtb/api/recipes/GTBRecipeMaps.java b/src/main/java/gtb/api/recipes/GTBRecipeMaps.java index 7e658393..5df3cbb5 100644 --- a/src/main/java/gtb/api/recipes/GTBRecipeMaps.java +++ b/src/main/java/gtb/api/recipes/GTBRecipeMaps.java @@ -334,4 +334,6 @@ public final class GTBRecipeMaps { public static final RecipeMap TUBE_FURNACE_RECIPES = new RecipeMap<>( "tube_furnace", 4, 4, 2, 2, new SimpleRecipeBuilder(), false); + public static final RecipeMap PRECISION_LASER_RECIPES = new RecipeMap<>( + "precision_laser", 4, 2, 1, 1, new SimpleRecipeBuilder(), false); } From 66427abeed22a36545e1d57528dbbb28cf35880c Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:16 +0200 Subject: [PATCH 06/32] fix Curing Oven Overlay --- src/main/java/gtb/api/render/GTBTextures.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gtb/api/render/GTBTextures.java b/src/main/java/gtb/api/render/GTBTextures.java index 0854de5c..6f443248 100644 --- a/src/main/java/gtb/api/render/GTBTextures.java +++ b/src/main/java/gtb/api/render/GTBTextures.java @@ -39,10 +39,10 @@ public final class GTBTextures { "multiblock/cvd_unit"); public static SimpleOverlayRenderer LARGE_CVD_UNIT_OVERLAY = new SimpleOverlayRenderer( "multiblock/large_cvd_unit"); - public static SimpleOverlayRenderer CURING_OVEN_OVERLAY = new SimpleOverlayRenderer( - "multiblock/curing_oven"); public static SimpleOverlayRenderer CORROSION_PROOF_CARBON_STEEL_CASING = new SimpleOverlayRenderer( "gtb_multiblock_casing/corrosion_proof_carbon_steel_casing"); + public static final OrientedOverlayRenderer CURING_OVEN_OVERLAY = new OrientedOverlayRenderer( + "machines/curing_oven"); public static OrientedOverlayRenderer BEAM_SHRINKING_DEVICE_OVERLAY = new OrientedOverlayRenderer( "machines/beam_shrinking_device"); public static OrientedOverlayRenderer VACUUM_EJECTOR_OVERLAY = new OrientedOverlayRenderer( From 199fde69cfd72e4df529a19bd0bd11e64e7de0c8 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:18 +0200 Subject: [PATCH 07/32] Create BlockPlaceAbility.java --- .../block/blocks/BlockPlaceAbility.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/gtb/common/block/blocks/BlockPlaceAbility.java diff --git a/src/main/java/gtb/common/block/blocks/BlockPlaceAbility.java b/src/main/java/gtb/common/block/blocks/BlockPlaceAbility.java new file mode 100644 index 00000000..7ec26f79 --- /dev/null +++ b/src/main/java/gtb/common/block/blocks/BlockPlaceAbility.java @@ -0,0 +1,40 @@ +package gtb.common.block.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.world.World; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import micdoodle8.mods.galacticraft.core.GCBlocks; + +@Mod.EventBusSubscriber +public class BlockPlaceAbility { + + @SubscribeEvent + public static void onBlockPlaced(BlockEvent.PlaceEvent event) { + World world = event.getWorld(); + BlockPos placedPos = event.getPos(); + Block block = event.getPlacedBlock().getBlock(); + + if (block != GCBlocks.landingPad) return; + + BlockPos below = placedPos.down(); + IBlockState stateBelow = world.getBlockState(below); + Block blockBelow = stateBelow.getBlock(); + int meta = blockBelow.getMetaFromState(stateBelow); + + // Check if the block below is the correct rocket base block + if (!blockBelow.getRegistryName().toString().equals("gtb:gtb_multiblock_casing2") || meta != 5) { + if (!world.isRemote && event.getPlayer() != null) { + event.getPlayer().sendStatusMessage( + new TextComponentString("You must place the Launch Pad on Rocket Base Block!"), + true); + } + event.setCanceled(true); + } + } +} From 8b04c4017ea33dabadf45235a1b942992dd5f80b Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:24 +0200 Subject: [PATCH 08/32] add Rocket Block Base --- .../java/gtb/common/block/blocks/GTBMultiblockCasing2.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java index f3e11333..4fba3b37 100644 --- a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java +++ b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java @@ -36,7 +36,8 @@ public enum CasingType implements IStringSerializable { SONCIATOR_CASING("sonicator_casing"), THERMAL_EVAPORATION_CASING("thermal_evaporation_casing"), FUSED_QUARTZ_BLOCK("fused_quartz_block"), - BLADE_ASSEMBLY_CASING("blade_assembly_casing"); + BLADE_ASSEMBLY_CASING("blade_assembly_casing"), + ROCKET_BLOCK_BASE("rocket_block_base"); private final String name; From 948525381e74670c230ab0fd6421faff13cf9147 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:40 +0200 Subject: [PATCH 09/32] Fix Overlays --- .../common/metatileentities/GTBMetaTileEntities.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java index 05a4d23c..c23c7f6a 100644 --- a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java +++ b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java @@ -97,7 +97,9 @@ public final class GTBMetaTileEntities { public static MetaTileEntityFluidizedBedReactor FLUIDIZED_BED_REACTOR; public static MetaTileEntityTubeFurnace TUBE_FURNACE; public static MetaTileEntityHeatExchanger HEAT_EXCHANGER; + public static MetaTileEntityPrecisionLaser PRECISION_LASER; public static MetaTileEntityFlashChromatographySystem FLASH_CHROMATOGRAPHY_SYSTEM; + public static MetaTileEntityRocketLaunchPad ROCKET_LAUNCH_PAD; public static SimpleMachineMetaTileEntity[] CRYSTALLIZERS = new SimpleMachineMetaTileEntity[15]; public static SimpleMachineMetaTileEntity[] DEHYDRATORS = new SimpleMachineMetaTileEntity[15]; @@ -251,6 +253,10 @@ public static void init() { new MetaTileEntityTubeFurnace(gtb("tube_furnace"))); HEAT_EXCHANGER = registerMetaTileEntity(3070, new MetaTileEntityHeatExchanger(gtb("heat_exchanger"))); + PRECISION_LASER = registerMetaTileEntity(3071, + new MetaTileEntityPrecisionLaser(gtb("precision_laser"))); + ROCKET_LAUNCH_PAD = registerMetaTileEntity(3072, + new MetaTileEntityRocketLaunchPad(gtb("rocket_launch_pad"))); registerSimpleMetaTileEntity( CRYSTALLIZERS, 4012, "crystallizers", @@ -264,7 +270,7 @@ public static void init() { registerSimpleMetaTileEntity( MICROSCOPE, 4044, "microscope", - GTBRecipeMaps.MICROSCOPE_RECIPES, Textures.ASSEMBLER_OVERLAY, + GTBRecipeMaps.MICROSCOPE_RECIPES, GTBTextures.MICROSCOPE_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); registerSimpleMetaTileEntity( @@ -279,10 +285,10 @@ public static void init() { GTBTextures.ION_IMPLANTER_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); registerSimpleMetaTileEntity(ROASTER, 4130, "roaster", GTBRecipeMaps.ROASTER_RECIPES, - GTBTextures.DEHYDRATOR_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); + GTBTextures.ROASTER_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); registerSimpleMetaTileEntity(DRYER, 4150, "dryer", GTBRecipeMaps.DRYER_RECIPES, - GTBTextures.DEHYDRATOR_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); + GTBTextures.DRYER_OVERLAY, true, GTBUtil::gtb, GTUtility.hvCappedTankSizeFunction); registerSimpleMetaTileEntity(ELECTRON_BEAM_LITHOGRAPHER, 4170, "electron_beam_lithographer", GTBRecipeMaps.ELECTRON_BEAM_LITHOGRAPHER_RECIPES, From db1f48c952cb15d06a3be2bc492efe5d4c4819ba Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:44 +0200 Subject: [PATCH 10/32] Update MetaTileEntityCuringOven.java --- .../metatileentities/multiblocks/MetaTileEntityCuringOven.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java index 04d614d7..7a061b01 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java @@ -18,6 +18,7 @@ import gregtech.api.util.RelativeDirection; import gregtech.client.renderer.ICubeRenderer; import gregtech.client.renderer.texture.Textures; +import gregtech.client.renderer.texture.cube.OrientedOverlayRenderer; import gregtech.common.blocks.*; import gtb.api.recipes.GTBRecipeMaps; @@ -63,7 +64,7 @@ private static IBlockState getPipeState() { @Nonnull @Override - protected ICubeRenderer getFrontOverlay() { + protected OrientedOverlayRenderer getFrontOverlay() { return GTBTextures.CURING_OVEN_OVERLAY; } From 76017ce5c74f26ce0125239141986e12545b99f9 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:46 +0200 Subject: [PATCH 11/32] Create MetaTileEntityPrecisionLaser.java --- .../MetaTileEntityPrecisionLaser.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityPrecisionLaser.java diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityPrecisionLaser.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityPrecisionLaser.java new file mode 100644 index 00000000..717d379c --- /dev/null +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityPrecisionLaser.java @@ -0,0 +1,83 @@ +package gtb.common.metatileentities.multiblocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.metatileentity.multiblock.IMultiblockPart; +import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController; +import gregtech.api.pattern.BlockPattern; +import gregtech.api.pattern.FactoryBlockPattern; +import gregtech.api.pattern.TraceabilityPredicate; +import gregtech.api.util.RelativeDirection; +import gregtech.client.renderer.ICubeRenderer; +import gregtech.client.renderer.texture.Textures; +import gregtech.common.blocks.BlockBoilerCasing; +import gregtech.common.blocks.BlockMetalCasing; +import gregtech.common.blocks.MetaBlocks; + +import gregicality.multiblocks.api.render.GCYMTextures; +import gregicality.multiblocks.common.block.GCYMMetaBlocks; +import gregicality.multiblocks.common.block.blocks.BlockLargeMultiblockCasing; + +import gtb.api.recipes.GTBRecipeMaps; + +public class MetaTileEntityPrecisionLaser extends RecipeMapMultiblockController { + + public MetaTileEntityPrecisionLaser(ResourceLocation metaTileEntityId) { + super(metaTileEntityId, GTBRecipeMaps.PRECISION_LASER_RECIPES); + } + + public IBlockState getCasingState() { + return GCYMMetaBlocks.LARGE_MULTIBLOCK_CASING.getState(BlockLargeMultiblockCasing.CasingType.ENGRAVER_CASING); + } + + @Override + protected @NotNull BlockPattern createStructurePattern() { + return FactoryBlockPattern.start(RelativeDirection.RIGHT, RelativeDirection.BACK, RelativeDirection.UP) + .aisle("~~~~~", "~~C~~", "~~C~~", "~~~~~", "~~~~~", "~~~~~", "~~~~~", "~CCC~", "~CSC~") + .aisle("~~C~~", "~C~C~", "~C~C~", "~~B~~", "~~B~~", "~~B~~", "~~~~~", "C~~~C", "CCCCC") + .aisle("~CCC~", "C~~~C", "~C~C~", "~~~~~", "~~~~~", "~~~~~", "~~~~~", "C~~~C", "CCCCC") + .aisle("~~C~~", "CC~CC", "C~~~C", "~CCC~", "~~~~~", "~~~~~", "~~~~~", "C~~~C", "CCCCC") + .aisle("~~C~~", "CC~CC", "C~~~C", "C~~~C", "~CCC~", "~CCC~", "~CTC~", "CTTTC", "CCCCC") + .aisle("~~~~~", "~CCC~", "C~~~C", "C~~~C", "C~~~C", "C~~~C", "C~~~C", "T~~~T", "CCCCC") + .aisle("~~~~~", "~~~~~", "~CCC~", "C~~~C", "C~~~C", "C~~~C", "T~~~T", "T~~~T", "CCCCC") + .aisle("~~~~~", "~~~~~", "~~~~~", "~CCC~", "CCCCC", "CCCCC", "CCTCC", "TTTTT", "CCCCC") + .where('S', selfPredicate()) + .where('T', + states(MetaBlocks.METAL_CASING.getState(BlockMetalCasing.MetalCasingType.STEEL_SOLID))) + .where('~', any()) + .where('B', states(MetaBlocks.BOILER_CASING.getState(BlockBoilerCasing.BoilerCasingType.STEEL_PIPE))) + .where('C', states(getCasingState()).setMinGlobalLimited(30) + .or(autoAbilities())) + .build(); + } + + @Override + public TraceabilityPredicate autoAbilities() { + return autoAbilities(true, true, true, true, true, true, false); + } + + @SideOnly(Side.CLIENT) + @Override + public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { + return GCYMTextures.ENGRAVER_CASING; + } + + @SideOnly(Side.CLIENT) + @NotNull + @Override + protected ICubeRenderer getFrontOverlay() { + return Textures.ASSEMBLER_OVERLAY; + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) { + return new MetaTileEntityPrecisionLaser(metaTileEntityId); + } +} From a2493ceeacf5eb911be4011b2ff92436b087d1f6 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:48 +0200 Subject: [PATCH 12/32] Create MetaTileEntityRocketLaunchPad.java --- .../MetaTileEntityRocketLaunchPad.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java new file mode 100644 index 00000000..cbdfaa07 --- /dev/null +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java @@ -0,0 +1,87 @@ +package gtb.common.metatileentities.multiblocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.metatileentity.multiblock.IMultiblockPart; +import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController; +import gregtech.api.pattern.BlockPattern; +import gregtech.api.pattern.FactoryBlockPattern; +import gregtech.api.pattern.TraceabilityPredicate; +import gregtech.api.util.RelativeDirection; +import gregtech.client.renderer.ICubeRenderer; +import gregtech.client.renderer.texture.Textures; + +import gtb.api.recipes.GTBRecipeMaps; +import gtb.api.render.GTBTextures; +import gtb.common.block.GTBMetaBlocks; +import gtb.common.block.blocks.GTBMultiblockCasing2; + +public class MetaTileEntityRocketLaunchPad extends RecipeMapMultiblockController { + + public MetaTileEntityRocketLaunchPad(ResourceLocation metaTileEntityId) { + super(metaTileEntityId, GTBRecipeMaps.HIGH_VACUUM_EVAPORATION_RECIPES); + } + + public IBlockState getCasingState() { + return GTBMetaBlocks.GTB_MULTIBLOCK_CASING2 + .getState(GTBMultiblockCasing2.CasingType.THERMAL_EVAPORATION_CASING); + } + + @Override + protected @NotNull BlockPattern createStructurePattern() { + return FactoryBlockPattern.start(RelativeDirection.RIGHT, RelativeDirection.BACK, RelativeDirection.UP) + .aisle( + "CCC", + "CCC", + "CCC", + "CCC") + .aisle( + "CCC", + "CCC", + "CCC", + "CCC") + .aisle( "~CCC~", + "CZZZC", + "CZZZC", + "CZZZC", + "~CSC~") + .where('S', selfPredicate()) + .where('~', any()) + .where('C', states(getCasingState()).setMinGlobalLimited(5) + .or(autoAbilities())) + .where('Z', + states(GTBMetaBlocks.GTB_MULTIBLOCK_CASING2 + .getState(GTBMultiblockCasing2.CasingType.ROCKET_BLOCK_BASE))) + .build(); + } + + @Override + public TraceabilityPredicate autoAbilities() { + return autoAbilities(true, true, true, true, true, true, true); + } + + @SideOnly(Side.CLIENT) + @Override + public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { + return GTBTextures.THERMAL_CASING; + } + + @SideOnly(Side.CLIENT) + @NotNull + @Override + protected ICubeRenderer getFrontOverlay() { + return Textures.POLARIZER_OVERLAY; + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) { + return new MetaTileEntityRocketLaunchPad(metaTileEntityId); + } +} From 1543bebb3973fed548a32905b14254451b36460e Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:54 +0200 Subject: [PATCH 13/32] apply Spotless --- src/main/java/gtb/GregtechBeyondCore.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/gtb/GregtechBeyondCore.java b/src/main/java/gtb/GregtechBeyondCore.java index ecb98eeb..d0eb8a6a 100644 --- a/src/main/java/gtb/GregtechBeyondCore.java +++ b/src/main/java/gtb/GregtechBeyondCore.java @@ -40,7 +40,6 @@ public void onPreInit(@NotNull FMLPreInitializationEvent event) { for (GTBBlockWireCoil.GTBCoilType type : GTBBlockWireCoil.GTBCoilType.values()) { HEATING_COILS.put(GTBMetaBlocks.GTB_BLOCK_WIRE_COIL.getState(type), type); } - proxy.preLoad(); } } From 990edb92bda54aa712e07d254cae7161df457007 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:19:59 +0200 Subject: [PATCH 14/32] RecipeMaps.FORMING_PRESS_RECIPES.setMaxFluidInputs(2); --- src/main/java/gtb/loaders/recipe/GTBRecipeLoader.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gtb/loaders/recipe/GTBRecipeLoader.java b/src/main/java/gtb/loaders/recipe/GTBRecipeLoader.java index 7f9b6b14..fbc5ae15 100644 --- a/src/main/java/gtb/loaders/recipe/GTBRecipeLoader.java +++ b/src/main/java/gtb/loaders/recipe/GTBRecipeLoader.java @@ -28,6 +28,7 @@ public static void init() { RecipeMaps.ARC_FURNACE_RECIPES.setMaxInputs(2); RecipeMaps.ARC_FURNACE_RECIPES.setMaxFluidOutputs(3); RecipeMaps.ELECTROLYZER_RECIPES.setMaxInputs(3); + RecipeMaps.FORMING_PRESS_RECIPES.setMaxFluidInputs(2); RecipeMaps.BLAST_RECIPES.setMaxFluidOutputs(2); MachineRecipes.init(); From 282d26938631b8a3ee1a595df3bb6f2d0eba995e Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Sun, 22 Jun 2025 17:20:03 +0200 Subject: [PATCH 15/32] Delete concentrate.png --- .../items.material_sets/dull/concentrate.png | Bin 250 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/gregtech/items.material_sets/dull/concentrate.png diff --git a/src/main/resources/assets/gregtech/items.material_sets/dull/concentrate.png b/src/main/resources/assets/gregtech/items.material_sets/dull/concentrate.png deleted file mode 100644 index ec35b1e230da931289ba6352b293f3e9cabe4cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmVPx#v`IukR5(xFlR*jtAq)T`2wm;LC;A1S;un0Ocvz(6dq+ Date: Sun, 22 Jun 2025 17:20:13 +0200 Subject: [PATCH 16/32] Textures --- .../aluminium_layered_ga_as_wafer.json | 6 ++++ .../item/metaitems/annealed_ga_as_wafer.json | 6 ++++ .../metaitems/annealed_layered_substrate.json | 6 ++++ .../metaitems/atomic_layered_ga_as_wafer.json | 6 ++++ .../metaitems/atomic_layered_substrate.json | 6 ++++ .../metaitems/cleaned_doped_ga_as_wafer.json | 6 ++++ .../item/metaitems/deionized_substrate.json | 6 ++++ .../item/metaitems/developed_ga_as_wafer.json | 6 ++++ .../dielectric_electrode_substrate.json | 6 ++++ .../item/metaitems/electron_source_100kv.json | 6 ++++ .../metaitems/engraved_doped_ga_as_wafer.json | 6 ++++ .../engraved_spincoated_ga_as_wafer.json | 6 ++++ .../item/metaitems/engraved_substrate.json | 6 ++++ .../metaitems/etched_exposed_substrate.json | 6 ++++ .../item/metaitems/etched_substrate.json | 6 ++++ .../item/metaitems/exposed_substrate.json | 6 ++++ .../item/metaitems/gated_substrate.json | 6 ++++ .../metaitems/gold_layered_ga_as_wafer.json | 6 ++++ .../graphene_electrode_substrate.json | 6 ++++ .../metaitems/heavily_doped_ga_as_wafer.json | 6 ++++ .../mesa_structured_ga_as_wafer.json | 6 ++++ .../metaitems/metal_layered_substrate.json | 6 ++++ .../metaitems/oscillating_quartz_blank.json | 6 ++++ .../models/item/metaitems/oxidized_anode.json | 6 ++++ .../passivated_quantum_smd_wafer.json | 6 ++++ .../metaitems/porous_sintered_pellet.json | 6 ++++ .../metaitems/precision_resistor_array.json | 6 ++++ .../metaitems/pressed_tantalum_pellet.json | 6 ++++ .../item/metaitems/quantum_smd_capacitor.json | 6 ++++ .../quantum_smd_capacitor_chips.json | 6 ++++ .../item/metaitems/quantum_smd_diode.json | 6 ++++ .../metaitems/quantum_smd_diode_chips.json | 6 ++++ .../item/metaitems/quantum_smd_inductor.json | 6 ++++ .../metaitems/quantum_smd_inductor_chips.json | 6 ++++ .../item/metaitems/quantum_smd_resistor.json | 6 ++++ .../metaitems/quantum_smd_resistor_chips.json | 6 ++++ .../metaitems/quantum_smd_transistor.json | 6 ++++ .../quantum_smd_transistor_chips.json | 6 ++++ .../metaitems/quantum_well_substrate.json | 6 ++++ .../metaitems/resistivated_ga_as_wafer.json | 6 ++++ .../metaitems/resistor_lithography_mask.json | 6 ++++ .../item/metaitems/sod_323_packaging.json | 6 ++++ .../spincoated_resistivated_ga_as_wafer.json | 6 ++++ .../item/metaitems/spincoated_substrate.json | 6 ++++ .../stabilized_voltage_regulator_board.json | 6 ++++ .../item/metaitems/steel_source_casing.json | 6 ++++ .../item/metaitems/tantalum_cap_core.json | 6 ++++ .../item/metaitems/tantalum_capacitor.json | 6 ++++ .../item/metaitems/thin_kapton_k_sheet.json | 6 ++++ .../top_electrode_deposited_substrate.json | 6 ++++ .../metaitems/voltage_reference_core.json | 7 +++++ .../yttrium_barium_cuprate_coil.json | 6 ++++ .../item/metaitems/zener_junction_core.json | 6 ++++ .../rocket_block_base.png | Bin 0 -> 313 bytes .../blockstates/gtb_multiblock_casing.json | 1 + .../blockstates/gtb_multiblock_casing2.json | 6 ++++ src/main/resources/assets/gtb/lang/en_us.lang | 26 ++++-------------- .../aluminium_layered_ga_as_wafer.png | Bin 0 -> 1222 bytes .../items/metaitems/annealed_ga_as_wafer.png | Bin 0 -> 1550 bytes .../metaitems/annealed_layered_substrate.png | Bin 0 -> 462 bytes .../metaitems/atomic_layered_ga_as_wafer.png | Bin 0 -> 1331 bytes .../metaitems/atomic_layered_substrate.png | Bin 0 -> 439 bytes .../metaitems/cleaned_doped_ga_as_wafer.png | Bin 0 -> 1315 bytes .../items/metaitems/deionized_substrate.png | Bin 0 -> 552 bytes .../items/metaitems/developed_ga_as_wafer.png | Bin 0 -> 1540 bytes .../dielectric_electrode_substrate.png | Bin 0 -> 295 bytes .../items/metaitems/electron_source_100kv.png | Bin 0 -> 320 bytes .../metaitems/engraved_doped_ga_as_wafer.png | Bin 0 -> 1071 bytes .../engraved_spincoated_ga_as_wafer.png | Bin 0 -> 1536 bytes .../items/metaitems/engraved_substrate.png | Bin 0 -> 279 bytes .../metaitems/etched_exposed_substrate.png | Bin 0 -> 558 bytes .../items/metaitems/etched_substrate.png | Bin 0 -> 309 bytes .../items/metaitems/exposed_substrate.png | Bin 0 -> 537 bytes .../items/metaitems/gated_substrate.png | Bin 0 -> 369 bytes .../metaitems/gold_layered_ga_as_wafer.png | Bin 0 -> 1174 bytes .../graphene_electrode_substrate.png | Bin 0 -> 257 bytes .../metaitems/heavily_doped_ga_as_wafer.png | Bin 0 -> 1041 bytes .../metaitems/mesa_structured_ga_as_wafer.png | Bin 0 -> 1120 bytes .../metaitems/metal_layered_substrate.png | Bin 0 -> 376 bytes .../metaitems/oscillating_quartz_blank.png | Bin 0 -> 719 bytes .../items/metaitems/oxidized_anode.png | Bin 0 -> 178 bytes .../passivated_quantum_smd_wafer.png | Bin 0 -> 1190 bytes .../metaitems/porous_sintered_pellet.png | Bin 0 -> 233 bytes .../metaitems/precision_resistor_array.png | Bin 0 -> 1236 bytes .../metaitems/pressed_tantalum_pellet.png | Bin 0 -> 255 bytes .../items/metaitems/quantum_smd_capacitor.png | Bin 0 -> 1113 bytes .../metaitems/quantum_smd_capacitor_chips.png | Bin 0 -> 777 bytes .../items/metaitems/quantum_smd_diode.png | Bin 0 -> 1069 bytes .../metaitems/quantum_smd_diode_chips.png | Bin 0 -> 739 bytes .../items/metaitems/quantum_smd_inductor.png | Bin 0 -> 1092 bytes .../metaitems/quantum_smd_inductor_chips.png | Bin 0 -> 744 bytes .../items/metaitems/quantum_smd_resistor.png | Bin 0 -> 1095 bytes .../metaitems/quantum_smd_resistor_chips.png | Bin 0 -> 761 bytes .../metaitems/quantum_smd_transistor.png | Bin 0 -> 1091 bytes .../quantum_smd_transistor_chips.png | Bin 0 -> 749 bytes .../metaitems/quantum_well_substrate.png | Bin 0 -> 227 bytes .../metaitems/resistivated_ga_as_wafer.png | Bin 0 -> 1441 bytes .../metaitems/resistor_lithography_mask.png | Bin 0 -> 341 bytes .../items/metaitems/sod_323_packaging.png | Bin 0 -> 847 bytes .../spincoated_resistivated_ga_as_wafer.png | Bin 0 -> 1601 bytes .../items/metaitems/spincoated_substrate.png | Bin 0 -> 428 bytes .../stabilized_voltage_regulator_board.png | Bin 0 -> 372 bytes .../items/metaitems/steel_source_casing.png | Bin 0 -> 231 bytes .../items/metaitems/tantalum_cap_core.png | Bin 0 -> 237 bytes .../items/metaitems/tantalum_capacitor.png | Bin 0 -> 262 bytes .../items/metaitems/thin_kapton_k_sheet.png | Bin 0 -> 246 bytes .../top_electrode_deposited_substrate.png | Bin 0 -> 345 bytes .../metaitems/voltage_reference_core.png | Bin 0 -> 275 bytes .../metaitems/yttrium_barium_cuprate_coil.png | Bin 0 -> 168 bytes .../items/metaitems/zener_diode_die.png | Bin 0 -> 949 bytes .../items/metaitems/zener_junction_core.png | Bin 0 -> 845 bytes 111 files changed, 331 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/aluminium_layered_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/annealed_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/annealed_layered_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/cleaned_doped_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/deionized_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/developed_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/dielectric_electrode_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/electron_source_100kv.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/engraved_doped_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/engraved_spincoated_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/engraved_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/etched_exposed_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/etched_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/exposed_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/gated_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/gold_layered_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/graphene_electrode_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/heavily_doped_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/mesa_structured_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/metal_layered_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/oscillating_quartz_blank.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/oxidized_anode.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/passivated_quantum_smd_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/porous_sintered_pellet.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/precision_resistor_array.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/pressed_tantalum_pellet.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor_chips.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode_chips.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor_chips.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor_chips.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor_chips.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/quantum_well_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/resistivated_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/resistor_lithography_mask.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/sod_323_packaging.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/spincoated_resistivated_ga_as_wafer.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/spincoated_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/stabilized_voltage_regulator_board.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/steel_source_casing.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/tantalum_cap_core.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/tantalum_capacitor.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/thin_kapton_k_sheet.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/top_electrode_deposited_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/voltage_reference_core.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/yttrium_barium_cuprate_coil.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/zener_junction_core.json create mode 100644 src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/rocket_block_base.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/aluminium_layered_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/annealed_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/annealed_layered_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/cleaned_doped_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/deionized_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/developed_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/dielectric_electrode_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/electron_source_100kv.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/engraved_doped_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/engraved_spincoated_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/engraved_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/etched_exposed_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/etched_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/exposed_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/gated_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/gold_layered_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/graphene_electrode_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/heavily_doped_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/mesa_structured_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/metal_layered_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/oscillating_quartz_blank.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/oxidized_anode.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/passivated_quantum_smd_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/porous_sintered_pellet.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/precision_resistor_array.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/pressed_tantalum_pellet.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor_chips.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode_chips.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor_chips.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor_chips.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor_chips.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/quantum_well_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/resistivated_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/resistor_lithography_mask.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/sod_323_packaging.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/spincoated_resistivated_ga_as_wafer.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/spincoated_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/stabilized_voltage_regulator_board.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/steel_source_casing.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/tantalum_cap_core.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/tantalum_capacitor.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/thin_kapton_k_sheet.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/top_electrode_deposited_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/voltage_reference_core.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/yttrium_barium_cuprate_coil.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/zener_diode_die.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/zener_junction_core.png diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/aluminium_layered_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/aluminium_layered_ga_as_wafer.json new file mode 100644 index 00000000..d21366ea --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/aluminium_layered_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/aluminium_layered_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/annealed_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/annealed_ga_as_wafer.json new file mode 100644 index 00000000..9be88149 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/annealed_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/annealed_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/annealed_layered_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/annealed_layered_substrate.json new file mode 100644 index 00000000..3638193a --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/annealed_layered_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/annealed_layered_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_ga_as_wafer.json new file mode 100644 index 00000000..0ac3e73f --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/atomic_layered_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_substrate.json new file mode 100644 index 00000000..203f334c --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/atomic_layered_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/atomic_layered_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/cleaned_doped_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/cleaned_doped_ga_as_wafer.json new file mode 100644 index 00000000..3f14b602 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/cleaned_doped_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/cleaned_doped_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/deionized_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/deionized_substrate.json new file mode 100644 index 00000000..63084b2b --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/deionized_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/deionized_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/developed_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/developed_ga_as_wafer.json new file mode 100644 index 00000000..fba04db9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/developed_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/developed_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/dielectric_electrode_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/dielectric_electrode_substrate.json new file mode 100644 index 00000000..395db82a --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/dielectric_electrode_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/dielectric_electrode_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/electron_source_100kv.json b/src/main/resources/assets/gregtech/models/item/metaitems/electron_source_100kv.json new file mode 100644 index 00000000..b2c79888 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/electron_source_100kv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/electron_source_100kv" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/engraved_doped_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_doped_ga_as_wafer.json new file mode 100644 index 00000000..d346ac6d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_doped_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/engraved_doped_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/engraved_spincoated_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_spincoated_ga_as_wafer.json new file mode 100644 index 00000000..86699508 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_spincoated_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/engraved_spincoated_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/engraved_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_substrate.json new file mode 100644 index 00000000..d9a9662d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/engraved_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/engraved_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/etched_exposed_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/etched_exposed_substrate.json new file mode 100644 index 00000000..3ceb126d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/etched_exposed_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/etched_exposed_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/etched_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/etched_substrate.json new file mode 100644 index 00000000..8c4bd8fe --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/etched_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/etched_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/exposed_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/exposed_substrate.json new file mode 100644 index 00000000..7829f4fe --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/exposed_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/exposed_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/gated_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/gated_substrate.json new file mode 100644 index 00000000..38e6a457 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/gated_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/gated_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/gold_layered_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/gold_layered_ga_as_wafer.json new file mode 100644 index 00000000..2119aa87 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/gold_layered_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/gold_layered_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/graphene_electrode_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/graphene_electrode_substrate.json new file mode 100644 index 00000000..6d5fd13b --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/graphene_electrode_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/graphene_electrode_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/heavily_doped_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/heavily_doped_ga_as_wafer.json new file mode 100644 index 00000000..3c3b72e3 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/heavily_doped_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/heavily_doped_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/mesa_structured_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/mesa_structured_ga_as_wafer.json new file mode 100644 index 00000000..13671363 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/mesa_structured_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/mesa_structured_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/metal_layered_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/metal_layered_substrate.json new file mode 100644 index 00000000..bb4da718 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/metal_layered_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/metal_layered_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/oscillating_quartz_blank.json b/src/main/resources/assets/gregtech/models/item/metaitems/oscillating_quartz_blank.json new file mode 100644 index 00000000..84adc134 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/oscillating_quartz_blank.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/oscillating_quartz_blank" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/oxidized_anode.json b/src/main/resources/assets/gregtech/models/item/metaitems/oxidized_anode.json new file mode 100644 index 00000000..8e2f61c6 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/oxidized_anode.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/oxidized_anode" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/passivated_quantum_smd_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/passivated_quantum_smd_wafer.json new file mode 100644 index 00000000..bf903ceb --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/passivated_quantum_smd_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/passivated_quantum_smd_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/porous_sintered_pellet.json b/src/main/resources/assets/gregtech/models/item/metaitems/porous_sintered_pellet.json new file mode 100644 index 00000000..f0f60796 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/porous_sintered_pellet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/porous_sintered_pellet" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/precision_resistor_array.json b/src/main/resources/assets/gregtech/models/item/metaitems/precision_resistor_array.json new file mode 100644 index 00000000..45dd62d9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/precision_resistor_array.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/precision_resistor_array" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/pressed_tantalum_pellet.json b/src/main/resources/assets/gregtech/models/item/metaitems/pressed_tantalum_pellet.json new file mode 100644 index 00000000..13040b7e --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/pressed_tantalum_pellet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/pressed_tantalum_pellet" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor.json new file mode 100644 index 00000000..100dac6e --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_capacitor" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor_chips.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor_chips.json new file mode 100644 index 00000000..2b738ceb --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_capacitor_chips.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_capacitor_chips" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode.json new file mode 100644 index 00000000..6b115598 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_diode" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode_chips.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode_chips.json new file mode 100644 index 00000000..5bd5b348 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_diode_chips.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_diode_chips" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor.json new file mode 100644 index 00000000..12306d14 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_inductor" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor_chips.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor_chips.json new file mode 100644 index 00000000..333b84b4 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_inductor_chips.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_inductor_chips" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor.json new file mode 100644 index 00000000..6c2d300f --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_resistor" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor_chips.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor_chips.json new file mode 100644 index 00000000..61957967 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_resistor_chips.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_resistor_chips" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor.json new file mode 100644 index 00000000..4f1e698d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_transistor" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor_chips.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor_chips.json new file mode 100644 index 00000000..0eb062d9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_smd_transistor_chips.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_smd_transistor_chips" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/quantum_well_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_well_substrate.json new file mode 100644 index 00000000..26dad874 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/quantum_well_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/quantum_well_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/resistivated_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/resistivated_ga_as_wafer.json new file mode 100644 index 00000000..98927fe7 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/resistivated_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/resistivated_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/resistor_lithography_mask.json b/src/main/resources/assets/gregtech/models/item/metaitems/resistor_lithography_mask.json new file mode 100644 index 00000000..3bab33fc --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/resistor_lithography_mask.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/resistor_lithography_mask" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/sod_323_packaging.json b/src/main/resources/assets/gregtech/models/item/metaitems/sod_323_packaging.json new file mode 100644 index 00000000..8ff47371 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/sod_323_packaging.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/sod_323_packaging" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_resistivated_ga_as_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_resistivated_ga_as_wafer.json new file mode 100644 index 00000000..82e0b917 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_resistivated_ga_as_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/spincoated_resistivated_ga_as_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_substrate.json new file mode 100644 index 00000000..ea97e892 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/spincoated_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/stabilized_voltage_regulator_board.json b/src/main/resources/assets/gregtech/models/item/metaitems/stabilized_voltage_regulator_board.json new file mode 100644 index 00000000..1f6fd426 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/stabilized_voltage_regulator_board.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/stabilized_voltage_regulator_board" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/steel_source_casing.json b/src/main/resources/assets/gregtech/models/item/metaitems/steel_source_casing.json new file mode 100644 index 00000000..777c1986 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/steel_source_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/steel_source_casing" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_cap_core.json b/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_cap_core.json new file mode 100644 index 00000000..8dba152a --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_cap_core.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/tantalum_cap_core" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_capacitor.json b/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_capacitor.json new file mode 100644 index 00000000..ed5df545 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/tantalum_capacitor.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/tantalum_capacitor" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/thin_kapton_k_sheet.json b/src/main/resources/assets/gregtech/models/item/metaitems/thin_kapton_k_sheet.json new file mode 100644 index 00000000..45e1a7d1 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/thin_kapton_k_sheet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/thin_kapton_k_sheet" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/top_electrode_deposited_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/top_electrode_deposited_substrate.json new file mode 100644 index 00000000..7aede3b8 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/top_electrode_deposited_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/top_electrode_deposited_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/voltage_reference_core.json b/src/main/resources/assets/gregtech/models/item/metaitems/voltage_reference_core.json new file mode 100644 index 00000000..9b553695 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/voltage_reference_core.json @@ -0,0 +1,7 @@ + +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/voltage_reference_core" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/yttrium_barium_cuprate_coil.json b/src/main/resources/assets/gregtech/models/item/metaitems/yttrium_barium_cuprate_coil.json new file mode 100644 index 00000000..2689784e --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/yttrium_barium_cuprate_coil.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/yttrium_barium_cuprate_coil" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/zener_junction_core.json b/src/main/resources/assets/gregtech/models/item/metaitems/zener_junction_core.json new file mode 100644 index 00000000..3a0edb00 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/zener_junction_core.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/zener_diode_die" + } +} diff --git a/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/rocket_block_base.png b/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/rocket_block_base.png new file mode 100644 index 0000000000000000000000000000000000000000..07597916061164cb77b272f8ddf255364e0e24ad GIT binary patch literal 313 zcmV-90mlA`P)Px#^GQTOR5(v#w70ka&j1DN?CdZmUi#MlFr7=u8-^{RX-8u$FH#fKc-rn8};^N{A zwrr^c4FPFh`D_-$%a<=1wr<@DF(4);hJlTZ4Qx9;LtvUg>VEzD#js?_5=;Yd8G@{t zpaJNHplc?|0GJ_CB8*@^qXWENfGGyq{OrwttN}~V0Ay!l3s}4cVDmG&Avg`drWxiX zWJ6F4fF&e+n$Zn`CnQ)>&NHmV8rs;>HpnGw9=AY}GF37YCD|DOn1s8d6E;mI00000 LNkvXXu0mjf99@4U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing.json b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing.json index 8b0052fb..1763abe0 100644 --- a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing.json +++ b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing.json @@ -92,6 +92,7 @@ "all" : "gregtech:blocks/gtb_multiblock_casing/corrosion_proof_carbon_steel_casing" } }, + "perfectly_sealed_vacuum_casing" : { "model" : "minecraft:cube_all", "textures" : { diff --git a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json index 87d00978..e5242c71 100644 --- a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json +++ b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json @@ -32,6 +32,12 @@ "all" : "gregtech:blocks/gtb_multiblock_casing2/fused_quartz_block" } }, + "rocket_block_base" : { + "model" : "minecraft:cube_all", + "textures" : { + "all" : "gregtech:blocks/gtb_multiblock_casing2/rocket_block_base" + } + }, "sonicator_casing" : { "model" : "minecraft:cube_all", "textures" : { diff --git a/src/main/resources/assets/gtb/lang/en_us.lang b/src/main/resources/assets/gtb/lang/en_us.lang index 4b574a26..c90499b0 100644 --- a/src/main/resources/assets/gtb/lang/en_us.lang +++ b/src/main/resources/assets/gtb/lang/en_us.lang @@ -220,21 +220,6 @@ gtb.machine.uv_light.uxv.name=Epic UV-Light IV gtb.machine.uv_light.opv.name=Legendary UV-Light gtb.machine.uv_light.max.name=Legendary UV-Light II -gtb.machine.uv_light.lv.name=Basic UV-Light -gtb.machine.uv_light.mv.name=Advanced UV-Light -gtb.machine.uv_light.hv.name=Advanced UV-Light II -gtb.machine.uv_light.ev.name=Advanced UV-Light III -gtb.machine.uv_light.iv.name=Elite UV-Light -gtb.machine.uv_light.luv.name=Elite UV-Light II -gtb.machine.uv_light.zpm.name=Elite UV-Light III -gtb.machine.uv_light.uv.name=Ultimate UV-Light -gtb.machine.uv_light.uhv.name=Epic UV-Light -gtb.machine.uv_light.uev.name=Epic UV-Light II -gtb.machine.uv_light.uiv.name=Epic UV-Light III -gtb.machine.uv_light.uxv.name=Epic UV-Light IV -gtb.machine.uv_light.opv.name=Legendary UV-Light -gtb.machine.uv_light.max.name=Legendary UV-Light II - gtb.machine.ion_exchange_unit.lv.name=Basic Ion Exchange Unit gtb.machine.ion_exchange_unit.mv.name=Advanced Ion Exchange Unit gtb.machine.ion_exchange_unit.hv.name=Advanced Ion Exchange Unit II @@ -267,6 +252,9 @@ gtb.machine.fluid_compressor.max.name=Legendary Fluid Compressor II # Recipemaps + + + recipemap.oxidation_furnace.name=Oxidation Furnace recipemap.water_tank_recipes.name=Water Collection recipemap.vacuum_furnace_recipes.name=Vacuum Smelting @@ -335,7 +323,6 @@ recipemap.fractional_distillation.name=Fractional Distillation # Multiblock machine controllers - gtb.machine.fractional_distillation_unit.name=Fractional Distillation Unit gtb.machine.mocvd_unit.name=MOCVD Unit gtb.machine.cold_tower.name=Cold Tower @@ -390,13 +377,10 @@ gtb.machine.curing_oven.name=Curing Oven gtb.machine.sealed_reaction_chamber.name=Sealed Reaction Chamber metaitem.electrically_wired_petri_dish.name=Electrically Wired Petri Dish gtb.multiblock.nanoscale_fabricator.tooltip.1=Average Crucible heat cannot exceed the target by more than §c250K§7. - - - -#Materials - gtb.machine.meteorite_prediction_matrix.name=Meteorite Prediction Matrix gtb.machine.meteorite_mining_station.name=Meteorite Mining Station + +#Materials gregtech.material.awakened_draconium=Awakened Draconium gregtech.material.adamantium=Adamantium gregtech.material.cosmic_neutronium=Cosmic Neutronium diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/aluminium_layered_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/aluminium_layered_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..92886a12442c40f763613904dc2168ff93efb1c0 GIT binary patch literal 1222 zcmV;%1UdVOP)Px(fJsC_R9HvFmrHC^WfaHHbXpM|EefQI?l3Hji`rV0hZG3QzP3EHZu&@FNZKd} zk(oOMlt+av)7FJ;AYnz?j=DtyL`$I%79=JvZ72b4VJ^(jnU47%^8fP9%$++kZn(*0 zzTSTKJHKsXxMdK^}4#cS`A=*aosify#BL*V$(r#c1?cJN(FkNR8M)9rCtY*R1|abK2Va2}07N2@EDlPi)B514Z%!*f zIDSBlkFWVvx)yh+ms3+y1^`g}0Ora1T^fPa4gHe5(QJepjYe~9768Ee*FL%>kFLC{ zMou3+qX5p&18RV(w*k7lyNz+&N2>1sHK+iR8dK;`|84QCjvN3gKAB9K`eq8EzYH3Y z(Q_)YuC7j(ZEbC)BprJN3 z789Wt0Nw?vt4+6M|7>IN6fgqz>lFaeFNbnOINmrbwa(w#0gFWdLhTHOO(SAuu?#&m z0Dx2~rL_;kOalSlx!cmT1i{_v(8+8#F%V1JmN zp7xA@mk0^qRRQXx9Y%ZHV%k1ik48sFa{!nkM9Qt(ts*1QaNB*R8lf!zslf1>H8B>QhE0A51& zK=Q`cJ7ylhK!Sm_*l_AQltPqtA9!`stRBVzlwxdcZPg(Jt(+Gl@V|#r9>mI^QRWhP z#^esPZZqkzTQ2rGj^pcO$=?M8!K}zNe+ls=gKrqahxx9ruYaYlukXcV<8ze_ zfHPvTSk3(W{Bs+Gxo7FRt{WO29(GF^HfNN((cb4cPIV%YSe40SR^fgy7)*sip_Jn| k=}OP5C<2upUe5mi04DDyPSEpK^Z)<=07*qoM6N<$f~o!`J^%m! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/annealed_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/annealed_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..5e75dd280aeb1489660f679c39c11d422af93287 GIT binary patch literal 1550 zcmV+p2J!icP)Px)$Vo&&R9HvFS6gfpRT%#MGqbea+1ag7Xrw_2G&RN;O?>gfn;M8bcu7#BMtM;} zq9~LHP}xp5UWiHCkU(NJ7=6(g9@G$tMosidUyKg|5vTkywdPkD=Ij1&zf7ge@V$G)P~8 zCJjW!Sd>NPCE$5kJ#cyupQnDpi>;5rhJaE6u#-l)5&k~ZU z-;MT;cFbpuISKI1gCM}z=oF5~V|aP}x??Rz~L?VGRr_SIj=V!dszJ;9)q9l}_G~l*qh1NcZEu({om(>DN0te0? ziY#!;T4OaqqOK)s2y}IIX(?wAhQP$+1V|D-Dt?V;-Axdp2~Jvo;Fy3T9e~J%W^m&I z4Iv`q9QgAHo=a>*%Z(XG4$vY&kcIB?hU5L!2a!fCK8csY)<K23ixe0&I%1s5~eu2xPsi9=|*eNixcDD}_rJhVf;?4>-PM55g(G1aj%}L4|`ZT#iqh(P;I(BwcVAC|UED%T~zrY{5m!eS8;fF=bulfpZ>{YLTGFWxN?h`|}O z{CmvcVnz_+(-7fSl2idnM2&Ye58)Dl{0G-f!p98CH{IMjOx zsTbPu>*n3a=krEs^=+&7qvHiUJ$MxUdjr_(?S)pe1zQmkmIZw^SmTmiBGB2{sY8TF zB~vI$1+p~)-^an;gK(Z%i|_8=julN-h1sibAMeWvyxRSSxv?e}q^8io1XL}7)w@1? z@M7=QZ|X)l6R3^>7G%Kq_T}H%1+fL{Da?9V&2UX)J>aVQHK_amuvg z@-(bY#qxk;@Hh)Lj@*G;@4OdEjzMS(mc@O9=B|XM6q`Xy!J;OBCh_}ke;5Ma-t#<$ zhlkLT;oDR$2IO=8jMr1gKf|WrE_B@9VH%pYQdmYa@O>XWJw2u1uiK2copHxgLgDY> z3w0woK8za`@5`GNpYuMwA`OCz^Wh*?PPypo>sz=RvNHA+_xI6}5z~%eS+m8oS+46^ z1!f#&fgp$)RMNQu4R#<96nq>WI*P5C&9E9RKsG^9faUJ;nxS>hfrJA^34wE`2aF4t z0Ehun2Ar##U+~R<;-q*Wb)cyLXcxiwB^(|;YFyBEa~qn|%{5&xw&1)Y84C>#L^EOM znkP&Rhe$%|Nk~#4&DQW?G5G9I!sXkxlIXv91dpl>Sid0+J=8MixW2$p>gj=53+!I~ zBt(NkI784vKte(zgwz0c2n!lYS@0)#h@Qd+lgIwwP#T-)+7A)tI_qUEAuT{zGnj@# z!?X>^XztUthIMuH;(><8w(1eAI-(c+T@b&(DO&zAr>YEPG>+Q}A|wdGxo(+4)7I9u za@)3Tqw}Uvc{5r_ke~PW_qXKp`H_P> zD6B3Pi>-W~NF;_`*UfvL_s>%G{U-uT1({F&UmPx$h)G02R5(wqliMr9VHn3hzuC{wGPX8{*@_F4!~7J|79lh@?u0Al?~=>8lN+aU ziaF#gVidJC#f6dcPOn}`DOTM9xNX^c~kYhl| z(?^Tw(<`y(=)3UI#O7z?F9s4YJbB4zc^;~&C#ir?=nE?S9; znRHi>L-g1*retre25al!8Y=$ZDl%WsB&{vqy0m;A} zafiy__yr?9#p!eKB}g&@GD|}6`ja62=3o5pU-*r|8x6Fa5j5zNJ^%m!07*qoM6N<$ Ef_9YIU;qFB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..d24bd852afaafbabf74af62292e0e28c1189be7d GIT binary patch literal 1331 zcmV-31Px(?MXyIR9HvFmrZONRS?JjGjBIZ?Kp`hv_e>i-chZ{3do4CfdKa^AS(7>4s;iIovf7_9#%;QjNT`Jvi@@mPnrsl|;H2)I2fP&`HIPO|;*84-gB)Y>+y_|%_U`miW8#*P zSOZWhmBiX*q$%KxLwq^LC&{;XY4k}j=O7e=koN^g5`(A!QRhAd0_H3@lYgGTbKyP= zZySWw0!;`^2IX@32A^vHH1srd1&vF65ZQwG(tKA^F?i=799e{}7v$Eq=?wtQR%=KD zWLC;Bkl-h?&1|Z^uxzK1v~eQL4+U<2q^2K>x=RRfMQe>mpY`B!dV9n z3b=6gyf4C^A3lh5sn!v|-2EAl z0J$afDu8PNQ2OQ(DL;C$WsbXvKr4gAsEA6G4XxD_L`A7YS>A4b{XYQ3q9mO7>PMIZ zrAr_Kyi@8f1&2z9Gm$a^N*R6YrN9?qn!=I51vxOsV9Mj|;*qXu;P487muV^>q=p~k zYl=_-mU$VRFl?YYp967>w~lnzh6>>O8aWuXuZv7806n5YBp@`nfgTjVMsVhr-@Fpu zvJmaP7tSt%#lRT$?YOQIdMWmcmV==!0M+sPuV+2L_xC^Fu@o;{sp8q`lU@nO#>YUG zAf_KZwCv@5T>u{iuZY?nc{p~sI5*Rg{H}Ls;En+h3RuX^;ja4Nnw_!bG*n}nD=nOb z`FTH%UmbhOk6G1qaj{=V^#JpT_if!g1e(B=ar{>{j)z8u0GorQDtge<9zcyXr=nxV zAE&2$3KRgO4*I=wRW~mr3ZzSkep3~Y0@&3tIeWsVV8`wqFl5$D!DhrZT*>s%^i;MJ zzBcx>*KlwSR_d@itVE+xgYgjAQlj!526;@J{nP{OesBPCVR+qjz0Fb@$<#^&4vszp z?sZ6)3Bn8u3qcAifPsDl&gpty0Hlt|xojuA<)yS4qSYTF%DR$ev9LzfZ5a(X^fm&( zW_zCm;zQnCXl`D?ZZ6igzYCfVXkA?Yu(qmAZMKdF4xAF0wbzXon(f=Sj~qB~V4+ZN-NJ6bvyJuoz;#51wZHsUt15p$WRjbv}BuTdFxiAdp p3WdUK6h)Uib=(!eW}R$w{$Cqs$Un@qL1q8|002ovPDHLkV1h~EVR8Tf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce2f654d03c89447d837b82bfba393dc00dc639 GIT binary patch literal 439 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/electron_source_100kv.png b/src/main/resources/assets/gtb/textures/items/metaitems/electron_source_100kv.png new file mode 100644 index 0000000000000000000000000000000000000000..7369fe88028d9949aa9409a6718e15a612a13644 GIT binary patch literal 320 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/etched_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/etched_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..adad62033b0a349df20d15c15723d457e2c176dd GIT binary patch literal 309 zcmV-50m}Y~P)Px#?@2^KR5(v#WS|f*QmCJSx&~c-P> zi&0zvGQe8gkm2y*!wjsftSAPEii$EQD=RY`eR&?Y0R|D)|DB}F8TRbigVg{nEiHz9 z&rUL2SaB4)3qS_=tGh6)U%wu!0p{lB3>$Cmp@RWOjvT>ofv~VJgNlj@aW2^YKK zQ#OWo(vVPxu{~vM2^#8uB00000NkvXX Hu0mjf%ZGmg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/exposed_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/exposed_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..aa33e2965621914d364d118453f172b2400d2bc4 GIT binary patch literal 537 zcmV+!0_OdRP)Px$(@8`@R5(v#WS|f*QmCH+Za{JWrvKc0LJSOl*ccf8urM&N{6RIF9ZPJs>REwEzMFp-nEtUcaPt4c?gCa$RtCm@tY9aD zG!;zR$H4lBhoQU349o_5;~zV27ld1?GVHnpaWY6#aBw<|CLKCP(pszoOKN6&fQ~}F|7neyl&0B0EFw(k4S#?21aY_I)`!Q0cEp`zy!I4VKmk(^Y{AfV?5HUtz4jY-zh zjEs!WP|^V?7JLl(7`B}Mgb|1!*Zg|^f`L(%2YWgIMI#Tt2so4vEXreWikS}f4#>$c z`ZvoLhMQZu8BD{gF#|EObOt0TBLP-MZUz=cPKH1Kzcc*){}nF7&%?pcTj+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/gated_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/gated_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..6fdecaf4d220beb398d6b0cd0857db9701c64d09 GIT binary patch literal 369 zcmV-%0gnEOP)Px$D@jB_R5(v#WS|f*QmCJSx&~c-P> zi&0zvGT_UFR}5TSTnwzNtSAPEii$E^yLOF1$V>*e0R|D)|DB}F8P={{%OD~mf?~k4 zXU`ZSBO@91Jv+&8VZ~AGE&v(eukOOIe*Joej~_q64FPG^*Vkt-H#cY4cykYN27tWq z=FJ<1U%!4aNJ&XCfV@Do0Y{D;0f)iGix(N#*w`2}H8mN8g@qYZR8)v_!S*MI86I!D z&LHch2@Z#sd+subyC^ew%GeS%02GMJmoEo9+b4Jf*nll-1Hj%14i3g2h@fbEcj^g) zxV;hs^X(rD%m(~m1O8t4$naN{gW>)0Ck#9WV))YmMG1+Vd_mp3K#mIlrWJ@0YZay- P00000NkvXXu0mjfSe%#< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/gold_layered_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/gold_layered_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..0c31c230281d9be38dd8584f27b402ad8992aee0 GIT binary patch literal 1174 zcmV;H1Zn$;P)Px(P)S5VR9HvFmP<@iK@^6k6vRgrjV3JE>B<#?_*Qh!YpbBR;SpVEFe+-Ky#-M~ z)HRQds3fioP<5-uCn8{6n7EgS5g)PDRwy<9A^&80+uO&ANp9}#?c6!vIp;rT#-)~d zxR%+z${N7y^~M05lar$s7Z;Vw<&q1}813!tS*@AzWEzGM8pbn>^B#){TUH=x0cbcB z3W?Xbxw&Eh&%>KusH5Kxs5QH%)Sow{Ix1#b(?ujDKub$Y?56*gQXki;iw{mJx7)4P z20$PXkl$5RRT2qCz6Tcq<|5if)N1%AOe5Kx5w4LJq0y2HE|li4^varfFl6ae}DG}b!5DF zNwMcTL<5^&mg+X^B*J6>@E+Ijj%iglQ6joZngT|^++G3TKieKB!l9B0RbYLV4(JpC z?g>l-qrftB1c*c;Qv0l9zz|@|mvY_Xoit#N02>fN%-u9WgzyGYfN^*Lv7nE)9th|N zu%yPu#*#(=Rlo?sOZ0)@E9VLjt(jpok6Y~fzB85v;IRt;7-kyKh)e)DQTuJ5ULKCw z^Pd2~D6k6PjR}A%F*PzcI4CXHtbev(<1EfG%zp_ z2f!3DQYHX(l@`E^0zM)D&I9INkN^7n`!xU$DRp!E^{z=r?ET+Nd&(mjCbA05PKft+ zO5dsQiAe##CS>;fwR_(ybX6GU*&wSU83`duvk$D?F`*9{Fi0_0R8)u|80Fxm1Bg^7 zemPBiCPmX#X}2J@rQXg=P%-R_9T oRkeUxgt&M@KJ?C4#RS8BZqrJOD>IJF6+GT1qHm@%ZBnEm*( zgp1DPfIZHW7;o?}N?w?eqI>qli61H_)S%XeD+(21k90UTvQbxcx>aGqd;#kc)I$ztaD0e F0szhTU#9>7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/heavily_doped_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/heavily_doped_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3b75a9af8ec6a84851cdd453cdb78f392cc690 GIT binary patch literal 1041 zcmV+s1n&EZP)Px&%Sl8*R9HvFR>^J?K@e?cY{!5RAmEfQKtc*$LK1dy<^v!bN1y!z@x&(%{sA9J zNCY3iJ?xMjIKc^P2&I+;vr2e@B5 z_e#xuyRJ@5?W$kz@`e?e)8Wo+X;7t=rn@H{LVkpK`m zqRwP8s@-m@bULlF(|gK!o6~+J7y@~CYF*v`aZ5iE0IyL@gaV-RR4QfYM#P8=R~TJ6 z^ISX2Ol+y&8wLH%bzQYu+*J#^MZE_#@t*s<~M-!d+Tg>hT!>fas4;?x=(H3)%@-fMWomald!z9N&;C zh>{fo(DUDKgjPon04l!OY?>&bdH^8xu!5*SJJw2mTg~qjOdkjLwF@!O6X32LNa%6ab^gM*ayDKA!xbBP5-Ye!pXXYLH4)4fat_v_lYv z0RZ4eG?=?zrZr+JpMUh1nq&l(L4mS8`^8Bu1pwH#?Lqkj!EQ$Yhz4q=5LteBepJ}e zEXhRx_%^e7$&@4jfQ zGQ@;{Oea!POlc$lsvnK#-p05oKNyy|m+B95Dw#s`_^nOs>1Gz00*DX{ z$m5mmS2|hFZRu9)U(f_Jf<>@Q16g1hhH3x+TCJ9@ebzB`0HbtF5#q|W9K`|~5P`@8 zET9260SGup1P}}RxTIW`on#ApWUEG$sGP=|=nBwUlT^xaE3EHx?1EtkQyxrg$+BO} ze7$PS^E{FC2LO--R)L>dzeWa8Pw&{bdiJG0koh*eRe}Dgv1j5|2bREaZ)@n6p zkYi(G*o|_ZZQIF4qcQ5b?kL_{metB;vn|`UJ8|vBVj!;ZVfOz8qN&0^E!m!r00000 LNkvXXu0mjfVrbJQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/mesa_structured_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/mesa_structured_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..94adc17c422656b3c4b78678ae5e506654217a86 GIT binary patch literal 1120 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 Ef-!n9WB>pF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/porous_sintered_pellet.png b/src/main/resources/assets/gtb/textures/items/metaitems/porous_sintered_pellet.png new file mode 100644 index 0000000000000000000000000000000000000000..e9501fb902451ac3c9b0172d5823e32bf07f5f62 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|7JIrlhFJI~ zrz{XK2wE|}@fe$r-3R$Mhho_0h$T*M$ZYwgA2+Er@!@Ct2;M{44D8a{&Ff9fneDZO z54ZEnOI~ZaowVY(2}72(hcU;7f(-^YIEoEqDt@t^`9CqQcMPx(j!8s8R9HvFmt9PoRT#&g^RfuEC@r9_e99Q3&`)560W!C2ieiixeq0hrxB@QR zg)TaRfw*KdBr~DhNeS1o0%2R(V2nzbO7J5wDIX?_qXUhtuxxFqZswTtyuL3zr7hHy z@HXUdKHl^E&i_2mbIwcPfFE+e_91QneU+ZFmk9e2=@0OKAOwDx`!TLL_dHl<(NWQ; zXbgWs7zhIs#J>62@AowKu7g4iGrjzt0Pb39YAUyTTU%RL&&pAYkO(NiH#74wZN%)< zTlBQ%y)R@#^H>Upf6&341(E1$va?QbL6irC0j4nQGM z0H0sEh<@Xoy1T>Pjs~`Jwx)nL0DXOZxT2w-A!}wzdW> zEiI^6M@I*|RGfn$cV}{rvl$V9(fU08gaQ;6=VF9R-<*vOz*bL)fL^R1O6ctDL0|WVtaaeddx6nim`_&P+3`t3RtaH zSYBSn_G8)tOkfk&XAnXrF;*LK^^gD9XMoZI5C{Rs^*cO(i2(=%o;-Srq&l4rnwpwW z0Y;yjn~UvgwR%qqxZQ3jEiFX_1_uYh<#OSB1x1H3OFFJi^8n@=6XyEAA3fPufWjgT z9$GiXZ}R{ZHD<~>f)D>ffU>eOXl`ys1(ueUWCf&580{0ZUy4I-%#m{sI_`M=>9ajo#t`7+rP! zar6Tw(LY-Ry1Keh0f)l@d3oZgn3a`=QhKDbz~k{?6N`ez#zs`2ySp0>XRG9U zf@GY_1FUl5q=kytEP$s0NGO0NTLl7J832rqh^yZLz#3{#RUyQKd%r_}e?KZPFfafb zjfV4qa0UE+@uDI{!TS0-w6?aQ0`2YXU@k8~=|@Ly#y$<}PE{j-``&K}1t_o3Vg|I^ zCt?GzRn(t3fl2A3a~ELDl_Kx+PhWiuDwPWBN~MzX0ZD<)%}pqOfBQ=Ic3BX9{`>#x3Xk_seg`_BJgxJqG*Hz_tDTBls7#hQE950mhhUw`wod}~S) y@Y6{8P=iBfq0RIA?x>-Lm@{c0`0000M*Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/pressed_tantalum_pellet.png b/src/main/resources/assets/gtb/textures/items/metaitems/pressed_tantalum_pellet.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea1a8f760342b1bdc59c76a06620ddbcc627457 GIT binary patch literal 255 zcmVPx#xk*GpR5(v#WS|f*QmCJS#s*A2@E`2LTnC&MVV8hu6chvN&yrzbn0EOYR)cUG zASlMb$;QeMCdbPlz{bSz{@r_qMK0M;!f*$&kVvYmyKmBCq*lVRthPYnOxzhd~2 zZjGV`uK^&<$l&+0r$iV4(lPnKe@<~}u8kCElC}FF+08U}I%qm6C=S z@b(47Au*an8US@S&%%@czcBM*)d=$%jS~_P>3kTt003r_G7-BM0rUU>002ovPDHLk FV1hxTX~qBm literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor.png new file mode 100644 index 0000000000000000000000000000000000000000..71ef2e622fde19fb987441a7845e41f78efcac1f GIT binary patch literal 1113 zcmV-f1g86mP)Px(6G=otR9HvtS8ZsOWf;Eh=Q-y++iDo%N3|d!Li^D_@hcK5#Hg_#TFa#_ShHWM$3#zQRPuwUpfU+gkwjC0BA{K0l4UsBZ6T- zuwdS<91(UNX&y*-)KURpfAK&Fpn7bcvDhpPLK%RoFN_NVM?3$DtF_fLfDDLoFv!H9 zNI*n*r|O>kuJqubl$A`C0k`4DTyF@VW^BG?KivlaS6&!=om|S@8}mmKB=qR&&HbS zTOiVyx&N+I^#12 z(n*^@tTW=(4R&NZLjWI6ta1Vg-TBNb{bDq&t*miwft`L~!$~fE?bT8HUatTz``%Y> zBTJp*_Uz#hK+{Bpk>Jy?RNe`B2MD=L3lX;>4-x7XTDt(}r$o-Mqbz{^zN0 ztNtMb@Y%!l;sf!^AwBt8w+z$Ihvp>mihYq7la$9i`N zVB5p`#0OI2a=iSU065V6WJ-e8_Y>{=J;1r7$>M|hE|KrEU(X5{5DgfECcQHRuzjjA zp9kDoAvp(Vv0^oOA~bo7f*jm=!sI2oO%FWa=exd{5)KU1gyQiWGrHwJiitsQ(9{>l6UR fG=OOa3eLbkUOFZ)i;Ad000000NkvXXu0mjfwWJZg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor_chips.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor_chips.png new file mode 100644 index 0000000000000000000000000000000000000000..380dd77fa893561e3322951df48d6f695b5c94bf GIT binary patch literal 777 zcmV+k1NQuhP)Px%!%0LzR9Hvtm&b%qpSc4h&9mLL|ujbU&EFbo6>bGqx7s8cMx@dMbNY7_-#roTnm z+Uyx10iqQ!NJLO15CP7f`60_x7<=spu%m6gVJWAkeoAJBGk2LrBLWZ-FvOz;=svdq zMTC6el^?*)_6?#yrSdyodndmDg+X2BVQutue+7}ov-}G`fb_17hSzeU{8ut#iMi0M z)UhHq^KfaBxX|-O0J6DhKY-ooO@_3>#JG`cVO;fB1&o4M6=v`G&r$=Kk>`E@9eXy* z5|m2ZegO;vs3gd>U)YjiZHPi9Kws}CX~W^nq#wZEjxC0ruUO$JTPx&=Sf6CR9HvtS8ZsHQ5e3@Is0ajCNxD!_~D;?Mm`duDJ8`ZN!h#n7&DBw*=#c# zV@lDocfRw{(*E#oDVEkGmN1#5DG_R^eb~p*{c)b>Im`dokG=JDp65Kz&VAk2ecjhN zQ;_7JN^*P{2QbdS|HHuMz6{G9fkTL^XGs>#YOO&l14?T!TGNPgN@+00(CEIQdAU+s zx@b+eqPu&T)lXAFq^*6~0sz1&0A+dnyf`fgrWG!1Kx-wz@!kj^6#zs4Ml-1NmJgJZ zTN9K5uohafdVK)f`g8Cb%0G(i<5CWG@OTp_h4*-IP;D@4LnA%A%NVFX6$1pE`QVes zDKda@nlr!q0Cx1}S{tFtq3B*V3Q8+Da4Z4FFtr$r0Z2&@h?D@!fk4hz#R%Ml=ALLp znF;{7o7v+7*f}uUGB&1xCDA z$RAuJ`V;P{6c%2u{z+692?NxEn5hWPJ##6z6R-qlD`Es->Yd*#Y-S#pr15fEhYw)? zpXEUtMpe_f`Wq;tp|~^=^nVJ0aLSMBK(t{roGC{UYM6F=K)S&9my2mneE@|+Ypm;i zM;MCd<=QW_Q1OXGkR8+Q13(dyIHe3{%JWG(({B$;Yb#LLX9`!hP@mfB12{CaK^nw& z=jZD_Q|85G%zz8dl#A-c3mhnH)!H&9bOMBA?ipdEEqOo~Ra1r?mJ0;=|i5;tTr_-z#X}&_$M7f&d~$ z6u6)>CVCe-WKC&4J8)E#;9bonPx%ok>JNR9HvtmtAX9K@f&#XZ!_f=E9k)@sm-TB}z58|LKBmLSoPHnug` zYU{1EIq{=vC00W$wX`B$hzKJ1lU8PS_MEgA_F|EWB(R+9$>Gei@65crF|flQv%~SB z1JF_6-&df!Yq#Z2K}0}9U=V>2<;wSrK_DWz`e)?6j*X39e_Z6Y3iNdCu|60YelY=} z(ct`@6v!li3_$3h*4BT90rd9lwfw@7yLB*z1M_e}k$BZ4SDE`k1ds1Wz`(0(Kf(Yq z$M;!-25#MnfyhbA!5o05gh4a~oDK$=n~DT(W%YX)z=_O$RUmdNBqQ>=)w(N#i835q zY64+)DlfmaK70!UIN5i=@=HfbH4U^Sumo2Hh>~Y!C-Z>DK(qBV4B%A%K~Z3|6l>1C z{0PLdtK?1{RRj$@n#_YS1n-+)!T_?T4_TIaR27gGjX~0!-+@$mfw92 z12~gCYz-k4%5l>Fy9B~letR8gZ4kmtg^LiO@%B>~z`)rfl7hlmoUG2ty%~UuP>NI2 zFjL7%K`u4c!vM|=9JMTSVcaR;gFDH!>eUN86u0X1xKrTu(#J4>3+Inn&g<=pwxQ2` z;t9SbH>)x|mJ>A=U#)}z3|{QEY^g;CXfvY31-&uJZ>d8*DCcDUVzCtlFm$Qcay1w4 z)l%aT$(E`1GsWIBSuu5Xiq_EIEfodXQYK#E!`Br`m^OQ zfZ?ls3Q$k?0xdqTg0o^be4$oLk+fsj#ux7#_8bgqXI2J*HnTehAX48fE6mtg>Z`+vi>C!!8OM}hxdf#1kZ Vav@yno$UYs002ovPDHLkV1nD2Se*a> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor.png new file mode 100644 index 0000000000000000000000000000000000000000..64d1241d17b144f7c460755783390636969e907f GIT binary patch literal 1092 zcmV-K1iSl*P)Px&{z*hZR9Hvtmwjl>Q5eUcbI$MX4Uq^wQi2o;gp{D9q!FJ9Awelcqn$&~ z%{x-pPHWl~?WcPg{q)F>w6SlT0RYefKxiI66{h&Xq`-w0NGVKk{HzR+@BtA(Nrp!dx|H9-gft)VWX*9F+rKMCj1{=;P5i#XVaSUx|O9!OlMR z#@y-&XOyJ?fa~c!F2L4-nVQ*H29gW_Iu;L-0$tI3lL{L!w0l3eA|((gn*bz?yZME- z6;zc5Ov9DbZWmztz#LXToCg4Sx3rI>?265Ib}FdwtO_W*Re{Is_!E#q!1$ZrgS`5= z6>uT-tqZVoFbC28jt_5^_0mo{qYGGO$~EVi-uN9s{QR>DIaN&{go26Jf6}h(zU+7= z^`#52Yp}r7pV6LDq2cw49~7`NR`8bsArMl+)P@1esd_{Jldt{a!e-@hNg7Y4w7CF# zei!>~7_OREE53qI5;|jr1R_-gKzg9i6ENQbRS4wgLR64l*+|MwxjJCF!1b5oDUV%% zvZ0mQ_P!Mii|56v&zyqFA^^%W7a!%^)B%4sT|ht{;vODJyTOG%vk$M-Pe5h1Y za?Au&11qO(O&2*_M|=sVz!V#+Vd_9d=r>Fa&c!t4R@^6rre9S4ohMuiN4z>0;Nb9P zjeJ2L;_m`l*S3?TzK<_s>6J$|3noyw{lZ3+7png}xK3dKBuISvyK<3QH z`+&JC1or?%HjL&p_tZ2hY-&F`?${Ui%32rT*yw(97KH3d12mL2n~Meqwigjh3td16 z1OrN{dJ616Q!wvTrt5;#iU4J@#sx^!{|Bz?B!D6bkW?Vy3j6^h!~rmGK5LTz0000< KMNUMnLSTYg2k}?{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor_chips.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor_chips.png new file mode 100644 index 0000000000000000000000000000000000000000..c855ebc4bb9c4b8e550d82d4e5d8e6fda3425a82 GIT binary patch literal 744 zcmVP)Px%qDe$SR9Hvtm+NX1K@`W&W%B}xAcBY>g5+9zv!SNcdae3KcGGTOLh9YBl~@f) zZEIVlqEt}?zZz40m63C1CY$)dei)=83540*410d_Kj-{sg0RmY+~@ev2k0yC?<-Kq zA28A>LB<^bsHmhy=7jZEz0}K{olI>a47O3RF7m!Z= ztqS?McYw(7qP`slP#!yOBw)Kb^qT@*AgY9`4F{H=d#eD;&)7dOQ}Ui5N)%_BI{)td z*dILHs2~!MwCXi*=NZGzg-2lkfBS#Ko+qL{Kwp9X aUV&fN+HxUPx(0ZBwbR9HvtS6fJwK@>hS^XsZz38TUw$!(L+HGLJ@*% z6co5xU=S41{YDoe_NCq=NGVY)tt=xY!XPTGL|SjF6X%?n|NlpN-yT+2W*v9`^PTT} z-#4Rx6#s}6*M~HKGz0$+1KSc=njL{lfU9$P4(&=QK?(&zN>EbLihDvxP)gBiKSTTG zl@V{FXWA#)caL-WXv?p(Ju%Jz0MG(JXkI@r%k+y$fe%(7r7*?uy)uA=4-f$;$)F_?v*PLTnu^Dz6n3t(4Yp4K6%EQxIk)7r>#xRlW_ws%csG4TO@=JGb00z{=;MJO-qkSTGFWp7#<(C}GN-e&Yf+ zU(RLLx&TUs)@$p1OBjmh)rK$hpx#2%0CtQoV?V#3v7xadvD6eJ?M%IsG}aa%&}Ral zuAw@k#szR>XtObho6e0JKa=48%rB=-E$yTSLp=qL14e;pWCrqX+Rk}JtK)hmSNTi)|Agm2ff~c>gz3DfUf9DBnp~8#10HVpA z8u0}_#J>xu-`qx#+P|>e6k@@-UE8r3Ybpu4K1Q)U<60Kwy0$4}dOYdfcLAJ8?m>aF zUFa;}1L66WR#NleA{#^;!DvCYopFL40mZR^;TM%OqWr64|9R^>u5P&iP7Uv)9Pob( z(z>lJB&NZ|>;k6ShEZ6I>;h}mWL*W>x8Tae5UCuo_~0@%W4EC|Jw2B;~nGZzgmY%e0n z3SB@52o_`~P+@;hLE*(bHwDRx03|Z!0!Y>W2X5-507V)=nt_xv@E6{U2QYP)x$po0 N002ovPDHLkV1l|4<|_aI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor_chips.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor_chips.png new file mode 100644 index 0000000000000000000000000000000000000000..89daa41b1e5529ee5d22ae5ca2d03d82ac19f021 GIT binary patch literal 761 zcmVPx%vq?ljR9Hvtms@MoK@i1fXa1n5_@D?Ph__NHnx-YzYS4;zt@?#bd^V|HKL|j1hWJei{dm-Mhu2mS0=Xs(|Lei>L#54{;9zXOM?w?}`dA zbpJ^lz`ksYHNrHzJ?|ZG$#7qkrrOJi{W2YT8pZ2h(~uO|(*YaYDyI(Qmjgv?9lz@5QIaR7%7?ywla z-&46-?J;nCAYr@Cf%QENnn!;qK3OcrL z4pia*jvei=Nb_7r7({LaqXk{t`A!HW&~a>NVX~+tx^|-+2XNweMhDScr|SY|cNj+X zVRT&(T6O-}c^$=9uMfom^q%ZefcZ?m7QirYbojVD=u^=L6M_6WQ6RMM_`t9m8;>|I*z!fHSAFItSnagzN7Hy00J*be*8W)jgq$ r{kP%({`T*NMQ=n+fTjcgy#v1hlCgLpQ^(w100000NkvXXu0mjfwFF!z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor.png new file mode 100644 index 0000000000000000000000000000000000000000..f6ddbecd0e509d145c9194df27879254e39ade19 GIT binary patch literal 1091 zcmV-J1ibr+P)Px&{YgYYR9Hvtmwjl?Q546|x%b&-LnLprVUiG{ybW1Hnh>R=_(Sps<&PCf(LB#% zEB;tbDU$d1d5M)sY0;884d+zz%@A;l{ z?+{Y_!4$`b9)KPN{vQRFwDvMm5j2Ec%`>xjRw)GvHK0xd35jay!}b5 zYT`BBitg!JRvS+Rk(RgiwEzGH0no_!dPaH>Od&0-K`FGs=~-JK3;+p0D}l#y$Bb41839Wxn?TR<-3A6OqbMyqMJus1QoVx7z>&p#TYl0#aZL!OwQCtadP~)B93$ zG@~K~090l+`v9xk^Ng^G3@jM{Je$+O3Y1K24FgfY$nGUDfjA`)N^6Gl_xfIV%i9WF zWq{IfI^(4eu(o}ys2|M(06d-B%2Jk0{vko^4mG8~sX#z~sZe@58x$h+yYL~*Ymi%n z;~7tUfb|`d2<`9q&{*(A6qxco%r$wy?wWFs3>D^|=5|#N14Io2DnIhB+`im+IOCBI zu%Tm`^`F(AQ(@q7VGHMS=hScBF4=Szgq7gu5Ny{?0T^`dn;2V^rzLqjkY4WtZ2CDn zD8s008VcV5Y6bD>UnR$s`xpRf&CZuJ_!U6!C2!=gazoCv+bZz;%f9qlAE3B%o^iGB z1S9i2od1RwiszF85SmX*6%YXB-&F*qgMgCPa@jjW&ve<+MnI}Fq}2^nq*eO>TRMwu zf%x6|{({%sXcBWi1I9Fv`2yE_I}b~eVB%MYGkDHPw{sb()M+eFyY2&Q>s)3yIraro zgPc>p@CA3cM8PMUb7wZ`2a*=&2TF~kDRE^uD6Jv)gbwaJQ7`O{Rrvrrx>g$E3+s^n zj&QH2iCb#2kO0sI)9{B${NTzjP)3wUTpqz~d*rcR+}DlkGIo!pvGYDaqH7HqRLX_V z0yz-wENWyoC+D~PqveLB7gm6nG=4FUQiyFq@6d<;TaJ^u^7p!Ux#fz15xtk#=POs+ZN-i-rVt7ZFm0FCYv; z0m%T6iB%OzX4vb0WdG)Ntplu002ov JPDHLkV1gS%2FCyZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor_chips.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor_chips.png new file mode 100644 index 0000000000000000000000000000000000000000..0853ac2f78ba6a0be1466cd9884f7effd73cc7d6 GIT binary patch literal 749 zcmVPx%r%6OXR9HvtmwiiAK@`T%%k2vkiCJ3;5s2w-Y@4>#R+d>-A8Eb2>W2t>&r(^< zWm`5=ks=8pfq8r$t-!yp zz(D_ABb`D-K*)eZz(o3#HADht)@Sq?U3b5$tMC7~$sH9)_wO@NF+%xb1|oFD<((Z6 z#()CAWTBQ<-uVG!()*2k;dtK<9T^lLFcT0X;2!&=fPe%0w0|Q^ZFYbFH2QYlG&&UWa6+Sr6qp;a| zU~P%=Al6u$O4Sq)Gt4}x`vF|OG+<<;mM;hZx?&95Og0Zu`^CywB}z+&b!DvxZ%Z5Q=^JdCzeA9aJB2?*hQ zw~pd_4;K9Z#;)Zoz^DK;A3V-?^*Ihzg$CuMAetojZW9Cs>^WWNYrg6>Bmxm4<);@LMv^wLqkDr%|^TgZjPkWGf z|L}(QH$B_9wfmCF8BZ|Omx{N&_2*0GjrNy}ZtFGw&Qr~-!R6Amc;cfL7r%WA^5PVZ avog$kT_*Tm*Px)TS-JgR9HvFS8Y-oM-Y9}vqDrtB`IS*94ra2jH^YXJ5<~*$c@F0t^x6TAJRCbXH`y*t(|hfG=S_BE#$fOf zNs=f4;VpPVws?ibtO803Q0C!K0XqhajC(P1D}Xd@@xj|8R2QpQ*;qybLI?!*ssh+U z8Sr`m1SU{0fZfwBM#B-BJ5Aii##{h$^1)z$_r3QDV6CH0HXKhjDh+i5nGSS5>bLHilBdmb>+n|Tp(N=zc&V6 zY$|K?>DgIK+yJnpM?m45p|0X+Mm zjzSVNb0FvO>eZ`jF>e46>fLw$VEFeULJ`nA?kRxB^;H8PSs$O064X;O!3hF6y^!Dn zdhI_IK>bA>!4;^4DqOf(rq=+Jr8eZDY3Ur!j!FsEG_Y(gfyO77kP=%oFlF?OG0r=d z1Dnmdnfj#WWp zrv?j&xR(kL0R0G{ zCK8C8@(K0uKM^D1h%b z1%PZFVsNLQv=2BbM=8Z<%L1Td0BX$|T;ULiP?gE)lU#GHSXodkp{66+toy)iS+?1tK8$$b9s?STS#vb9=vV$13&ABY1{ zIVo5>jtn$*8bB^?TwnnUcLR{k%C0E19Zvz!b}P(42GX$|j%^tfbYk*45t#&yXAO8~ z$#<`Tq%_%b{60Fcnege>x^+D%Q#cgTf33~Mk;D>EDzf5%vm=`ap8fOf&0`3P3-J85U1ugtlYyqNwm7UZoB_qcnbzjQVHfr00000NkvXXu0mjfHEoVs literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/resistor_lithography_mask.png b/src/main/resources/assets/gtb/textures/items/metaitems/resistor_lithography_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..762b273d0fa4aa4aabe957bc36452550991f57ce GIT binary patch literal 341 zcmV-b0jmCqP)Px$4@pEpR9Hvtmcb2!FbqYLBU5CF9AOwb7##+VECJUH0Jl~|vQ&O!;vh{tf`kpXYgXtMB`u zAvCkwz|R4w`%yhsDxCx}A~t{kTI)udY>Atu>G2tV2mrp611gH5xjukW>V*}i7zo%2 zHvHBU7cK*(u(q~Z;TN&U-UbGFU}4S8^gV)=je$j nmYAMr2atkd++hZ8fV~FZx$W2?I6KKc00000NkvXXu0mjft^JBK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/sod_323_packaging.png b/src/main/resources/assets/gtb/textures/items/metaitems/sod_323_packaging.png new file mode 100644 index 0000000000000000000000000000000000000000..4af43aa66f0ffdadad2623f555718bad6bc062f3 GIT binary patch literal 847 zcmV-V1F-ywP)Px&2}wjjR9Hvtl}~6BK@`T{CT(I;3RVh=RxA=w3xYyX5Il&2hhnv&C>9hEQScB@ zG&V_VZPKQdKovm|DhO3jDHtmLL8uo!1qHp7_Rxq*d+5QULXtLZM&8WM?!0s(!9B!7 z_A*N{``&N9_q{h7l=;!hoF6Ix6$Snu1zOT8nCJ*xOs?jEfUQRP5V*l(%82sqg*U^0 zGBO=Z*XjTOOasuESbcSITL7uKEBs6{CTJP}W03IvqyUFA^|*(hUnSd6*J}&l+gzAv ziV9$!5zj0IIF?z*m?D*=*c>|xt>cH_(eosXq{d2uIkIstv>(_3qfH5zyn0`)sE`5x z9(%r1fD_q9CfI}wTrvRg#ZJQSfweqfDG)L_?yU{Xz*NUDKbGk#23UrN?kNgzD!WOj zuhszo8e_*f0G|GtzvHhEGI`sr7~nesd<{M|>uS_ig9q+$3UFqAE20(Vhlaj30|37- z2B9X$eG*_gnBb?9=aTD?`x6B?H{Y!LPuHH8g29@;76M=eQJ7o>m<_!W#umzBNWR{6 zB`Ls#gBzuq8pI@d&ZS^`Mf5x}ZDBtSZxRGf{e zg%a`VmlPn7Yh}DR`UX@3o#T#dTLw^Ab1P#?fQ8P_MrBkl#Htb$AhdXtA)ncY_`e3u z$QA-%Ww>I-#5T-#PVl+T4pD&q zrSs+-;7SO)%+_o#Y5o`6v^s5iKny|+7-JA{-k|{TykD6EX1Ez|lP!RT^aM9HZ$EzB z35bi1K?-m)e_6i^lySuX=B|5e0j%oI(kaNb1@JriDS)jkHa@0P$3~!k{j>s5QK0M! Z`~hn~XfPgD(PIDr002ovPDHLkV1kuCb|L@( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_resistivated_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_resistivated_ga_as_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..319c8b53eae17b7e91798c542a75b7cec31e54eb GIT binary patch literal 1601 zcmV-H2EO@;P)Px)`$M-V;TvqGRtVw&-sOXhyOyzJo^Xy8~Ka8 z#}!`yBW@NL%9TPZB(yUfch3rp0Rwq4%N7D=r_Y=|eY%(MoxkWi$H%P!G#U+2(9Dd0 z0Lrfrf}Le$W#v|T-gt4d*%S?;fwL?FIfDI80I>rJf#__zX0v&ty{}yqPb^5&E|MfM z09=?vCWjb|o?vuP04E-t{Q!~^2ni6$xDg}Y1kh|YWcBSjilaqL&Wu)DR3ey@+krA2&;jVl4@$tlLu9KwKT0966UTLEZ5 z?^7^W0N=HAv^U!Z;L+lvZ!&Qy0L}N&(Gd!T0=74|BLlU2nrsl25Tt9t6P|`h2c*nM z8gaP^P++vz|BehisT*rdd?^zb04y&ri}!tG84z5+;hu7Ri1FGam`e~!K`5KxNKz10 zAsXCLAYhK1f)A}&1@))DK?aBB4SIT)R1tjV z)G<#PPym@^kRZrdcPxXcgPnIf24H$&GG<-N&Kz9*DT+^TO9NLdbwG-Cs}1ltrXD(o zrcRWm)q~61}5qwdSnnP7I-K_jjie@Vaqk^4Pbw_ zlZ)`Fomi*}3dblafN%+bN04D2qAW)O3BSlX;z{Fa^~z5`nwDt6fR-rG-dHmR=6;%wCglW_F-EUSfr&875J(V`5?EQFGB#ho zF#uDG6H#y)RP#)e5dSgvh9Qy4OkA_KzHR{Ka{y-3R7HV$mXZr1Q~-VMg9i+ssLz)` zoTBwl&cNfkm0_%V1)(BUx-}(wY0`3k5MX~}58f9sTfYmdYn0%0e;s5l1E5RPh}7A7 z+`|Z}U?+J0Dl#y$Fm1iwg4lN~)u@THlt6_D!NJynRYCp9uL%ASEDp}Gt-R6+&5CW% z3UD+AP#0^jTL$1keHw6+2w~5HE6`v_*xGQA4%kXm<9D#%ip^+laSr4O;wl)SzB%cY z0E`85L={&Vfdk&Zeq{h=>*|DB&r#_is0roG$jTx11S5t7hdal{fB`@i2c0 zZOUq%g1Op#a4{h36NDKa9)b*B00+GVA?SEswbE?w#BTV%hteS*XD=eL1I7Ww!#j1i zK6(f!_7cFyxla&}d3c6N5; z*|TSZ%M*O|*Bb-SM_#^sS=im(Jvn_me_GpX6eJ-{)5?n%FNXd4y7;$$H_WRf>2x|p zuU@P9cdlQlRQk3b$@>2Q=08PF>1M)l00000NkvXXu0mjfN#M}d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..03b613b48d29fb234bccb06bcbe12f588ec21051 GIT binary patch literal 428 zcmV;d0aN~oP)Px$W=TXrR5(v#WS|f*QmCH+Za{JWrvKc0LJSOl*ccf8urM&N{6RIFb{pUJ?@`ybN)kPG;Er5Rq%3u546WyWfN zfT%dbf47+ooczDAyMUFGmErjUU%UqV^_YU&1>u&e3=4}q@EXA2GLL~n@GGVZ!lOI> z%b3~{^ujN%UIspP9)_lLv{=Y&+4`S{OO&7&aE3u{>%RYN-0TEh01Jc0Bx`9#M#g6- z=>QZ9-#4Z+@UXMujK(+S71+}OC>nYAMHra>u`?W4l*ix{Go9fd({Bc*f2?r&H_I1> zn_IdWOv9@&12M961|%sX0aiwC1{Ow6hClzmGyMMl6)wZi!@Px$E=fc|R5(v#WFP^!xw-w{wQCn6vKAB$F0)`72^uhA!i4{Vf`WM6#L3CY5Ed2& zw;06*3l}c@FDxvK(|}8tE`jAfefq@E(a{0cOSA!!l9CM1pFd|{XJ==)efu^;R#p~n z1HKq#GH46WXYk)KfngGJ1_Ma5goFgcix)2#-o1NA*Z^#PSiD!0frCpNEG59p$S|>j z8@CId`qVIl$b4aVA|u1_xTXZGY2sQn1`ZxcFk6U^kzrvg52^v)X~F+tHfQ=JVmN{* z1Gdgu%ix_B%rI~U;PXP~Vt#la3JEYXtn63D9f*@AO=4Jn?H+^BvR4f6qQt=FMrtWB zC?sE96mqa-uTPcuZg9)VF$Nt+4BF^ty>xgi@&}KZHwHT zmbl`$0K-ikeSQ9GItmI5%j|1@Ff5a|tLb-O_>anp4s2|!}CXG z4Uc^NpR|OZza}!yRTsxm;#;5;OXk;vd$@?2>=>4ULgPg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_capacitor.png b/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_capacitor.png new file mode 100644 index 0000000000000000000000000000000000000000..0abb81eeab21d670c6ebb57e66752ea654537bb5 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|4tTmahFJI~ zrz{XK2wE|paXaH={y*-9HrE+fN4;V5vHLK;wO7{l|NMA+Nr?>-O_>anp4s2|!}CXG z4Uc^NpR|OZza~CB|9UwOkExu)?Iigyf?e z=324ssp*<1wqY6b96g1j3~L%a)-Zl(aPMP{2w9|>-c_v3aL71NP_BSe4(JyKPgg&e IbxsLQ06So1G5`Po literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/thin_kapton_k_sheet.png b/src/main/resources/assets/gtb/textures/items/metaitems/thin_kapton_k_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..246cb6b62cd6c51d566a80e8ab0a762cb9d87558 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Hh8)?hFJJ- zo$SbWNI}4r-Ft6~r*FygW545?;*{XwUHvjPBO$w@+U7Klt{} z(tjUKUaxBU{dLlXhZ0PYLct6_Zv6V$a#+HrQ)_|&i=i7=aEPjQBU|x>St`O;5?qUv z7F`c-*b@Do^SRsUr!$VkczJJ#WY_t4R`Ic}gzIXaB`!@G)2u)9z0%!qq%)K^%sOH7 ul!$`R2G?mdagXLyNxrN9e`wnLUu?JLH3{})ES3Peox#)9&t;ucLK6TkTx8q; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/top_electrode_deposited_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/top_electrode_deposited_substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..36dd1cb860715f0aec7fde1c47fad36279236f70 GIT binary patch literal 345 zcmV-f0jBPx$6G=otR5(v#WS|f*QmCH+Za{JWrvKc0LPVLz%f-e}8fgaB3pXI8dDZ`GTP84= zMYj+%gpZqzp()u0(*PcR5r&Ivni=#%YB3Bsyr7gJFF%jr{6|>^yas@D-rUm7pzc!& zH{{L9c?{_p=?rVn{|1W@GyvTYL;lBLn_&Q_0cmau49iY_fhz>LBqBNjMKewp7#kV? zw@v6q@jJ-o-8*(Oh*&0}h!f=n7o~3ud+u?8HNH7M55*9W0gXx4(u|CZ&rqTf6bm2_ zY{&`^FqqZIhTt_I-d2!d;oNO4LTBpzz{-_+Dparel{lP3kl#Mrh=9A)Je*ZZTd zqtkPpp{%ToEj&E@67Pg5Q&KAa{jp>YWUDbem2yFB-uVanlbH^yJmX=TkjBZ$*(RWim6a`*55B*@|6pMsZ^Na=J$r24m2Akms?}7L^d WrU~X|Dc%BljKR~@&t;ucLK6UlEohGb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/yttrium_barium_cuprate_coil.png b/src/main/resources/assets/gtb/textures/items/metaitems/yttrium_barium_cuprate_coil.png new file mode 100644 index 0000000000000000000000000000000000000000..cc64826e4ccaab51c8ca67c070aa5001b40cc1ae GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|l001;LoEE0 zQx*sq1g)6QnA5PX=|z2*m|9zLd7ROtQ*6=+OO*c2?`@s=@JMfZ&yr2;&5UksZvQ3i z>{A(959<4IvIX7j5ql=~zkcstezS(g_`b%FZv`Aj4o;k)aWX*Uxf=u1mzUmuxh%VY PwlR3R`njxgN@xNA?bbU( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/zener_diode_die.png b/src/main/resources/assets/gtb/textures/items/metaitems/zener_diode_die.png new file mode 100644 index 0000000000000000000000000000000000000000..828bc650f133bbfe08084b98097c6a43eeff8bfc GIT binary patch literal 949 zcmV;m14{gfP)Px&Z%IT!R9HvFSIKS@K@{woGZvPV{s0k`~`*s zHxMKed;?1&BqAiPStSb_F9Y>NwVr!=79XOFWQ{%3{iC zS1J`V9*<2B1oFXmT)79fk;gb^b`yVtDjWA_;UymZ7f#guM1nAGcU;d=G%-`@h6<7}n#5xt?-3^GJq#K$Fqg?sgfU_xc%2 z+2=WJ4mG565vvoX;(iWZ#q`_dseEh2vb Xs+`b2sYB(o00000NkvXXu0mjfvIeoF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/zener_junction_core.png b/src/main/resources/assets/gtb/textures/items/metaitems/zener_junction_core.png new file mode 100644 index 0000000000000000000000000000000000000000..29cbd343622609b89ed611469b2c1cba97cd34e8 GIT binary patch literal 845 zcmV-T1G4;yP)Px&2T4RhR9HvFmrZUHK@f$<@sGSql­@h7+fhy@2g0uJH}*kd0D#DW7L0e1i; zVv!ppN+e6R{4?ma_(sn?Ju{wFERDu)_f)-l^{T3;mp$;O_rU(M&H$#!0UaV#e|e*5=p_Vek-;8-AvB4FzTq!j>;m&;{{dN3FS2l~!k z&YcxcYa1ht049@3AxCl`$Nhf4v<(2FcLut!Q42tkE9&uhoNYFnY&05$sG-@xq=d{q z?sZHg0pNT%9G29=1R!AG_2uX6*RxN7rQL29_6wXG>q4w`0<8d;&1QuRZMWMXHW`x< zT@sy~)kTa`D&x=XS@!b$uB;NR&*$?4pA`U#UXIu6b?|e&dXzmsy(yzYa1H{;(5*cV zwy8P}0HFBQYE{;^#0LXz$N~JmIn7?2-Ihy$M2vb)tWrU)hYA2iFVX441EfJ~DG;&X z(1$Z40N608UP$?X@Ggf2h!#gGL2tzl@Xghi@;`!tP5rI_Q29}M@2ec;4C`+v+Qvd@PB66H7D(?d_6w@B3$u&hvYXP8s=m&tx?A676rT@eLQVmLU zGpf-*G6fQ$81NeQ6eQbU%Od3o3zT6k0ChhakEbE-dhxVt(g)6&5!k9|K!1n@hKKri zOna*ANRJOC+0ySHPd*$BB{AU9haf#VKW@eO^^#-Cr7{2;E@(8>3IG@L@w^^3xHGCmzcL68HZDaCMaw z>mju-6}_)DMUK73L#ZFdp^zgvj`aKT?mQe?+&M!hmG`3{^_=xpiM-QNw{40iqh=oEA{eC+;z X?yGk{MINx300000NkvXXu0mjf_1k|i literal 0 HcmV?d00001 From 74d1abd75001789dcea002fd3846473be200b0ac Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 21:47:17 +0200 Subject: [PATCH 17/32] added proper dependencies --- dependencies.gradle | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index ee99ea52..41c6182e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,15 +1,49 @@ + + +//file:noinspection DependencyNotationArgument +// TODO remove when fixed in RFG ^ +/* + * Add your dependencies here. Common configurations: + * - implementation("group:name:version:classifier"): if you need this for internal implementation details of the mod. + * Available at compiletime and runtime for your environment. + * + * - compileOnlyApi("g:n:v:c"): if you need this for internal implementation details of the mod. + * Available at compiletime but not runtime for your environment. + * + * - annotationProcessor("g:n:v:c"): mostly for java compiler plugins, if you know you need this, use it, otherwise don't worry + * + * - testCONFIG("g:n:v:c"): replace CONFIG by one of the above, same as above but for the test sources instead of main + * + * You can exclude transitive dependencies (dependencies of the chosen dependency) by appending { transitive = false } if needed. + * + * To add a mod with CurseMaven, replace '("g:n:v:c")' in the above with 'rfg.deobf("curse.maven:project_slug-project_id:file_id")' + * Example: implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:4527757") + * + * To shadow a dependency, use 'shadowImplementation'. For more info, see https://github.com/GregTechCEu/Buildscripts/blob/master/docs/shadow.md + * + * For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph + */ dependencies { //Hard Dependencies implementation rfg.deobf("curse.maven:codechicken-lib-1-8-242818:2779848") // CCL 3.2.3.358 - implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:5519022") // 2.8.10 + implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:5519022-deobf-5519023-sources-5519024") // 2.8.10 implementation rfg.deobf("curse.maven:gregicality-multiblocks-564858:5619513") // 1.2.11 implementation rfg.deobf("curse.maven:gregtech-food-option-477021:6147619") // 1.12.4 - implementation rfg.deobf("curse.maven:pyrotech-306676:6253355") implementation rfg.deobf("curse.maven:galacticraft-legacy-564236:6364107") implementation rfg.deobf("curse.maven:asmodeuscore-303101:6058953") implementation rfg.deobf("curse.maven:ae2-extended-life-570458:6302098") + + + implementation rfg.deobf("curse.maven:pyrotech-306676:6253355") + + //Pyrotech dependencies + //No need for implementation right now + runtimeOnly rfg.deobf("curse.maven:athenaeum-284350:4633750") //1.19.6 + runtimeOnly rfg.deobf("curse.maven:dropt-284973:5405050") //1.19.4 + runtimeOnly rfg.deobf("curse.maven:patchouli-306770:3162874")//1.0-23.6.jar + //Soft Dependency implementation "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.684" implementation rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31 From 1e508fce0ba74c2bf54cc5606798d1d0c5a3c49f Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 22:52:33 +0200 Subject: [PATCH 18/32] Revert "udpate 'zone.rong:mixinbooter:8.9'" This reverts commit 4f47a25f1e9e2b41492dae867784723cd789c658. --- .gitignore | 2 ++ build.gradle | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1d56db91..5383aa56 100755 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,5 @@ local.properties run/ logs/ + +lib/groovy* diff --git a/build.gradle b/build.gradle index 7ee53e09..5eb02432 100644 --- a/build.gradle +++ b/build.gradle @@ -457,7 +457,7 @@ configurations { } } -String mixinProviderSpec = 'zone.rong:mixinbooter:8.9' +String mixinProviderSpec = 'zone.rong:mixinbooter:9.1' dependencies { implementation 'org.projectlombok:lombok:1.18.26' if (usesMixins.toBoolean()) { @@ -525,6 +525,12 @@ pluginManager.withPlugin('org.jetbrains.kotlin.kapt') { } } +configurations.configureEach { + resolutionStrategy.dependencySubstitution { + substitute module('org.scala-lang:scala-library:2.11.1') using module('org.scala-lang:scala-library:2.11.5') because('To allow mixing with Java 8 targets') + } +} + if (getFile('dependencies.gradle').exists()) { apply from: 'dependencies.gradle' } else if (getFile('dependencies.gradle.kts').exists()) { From 69491147643d0518e7fcb87bc0263b9ce1738044 Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 22:52:49 +0200 Subject: [PATCH 19/32] Revert "update readme" This reverts commit 3ee367ca7e57150ac0b60b9e531baed90d051067. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2a6be559..88f1f370 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ GT6 and Greg for his great mods and ideas. Supersymmetry (SUSY) for their Idea of Catalytic Reformation Unit and its corresponding recipes +[InventoryBogoSorter](https://github.com/CleanroomMC/InventoryBogoSorter) and [Supercritical](https://github.com/SymmetricDevs/Supercritical) for MixinLoader template and examples + From bd4f1919f61b9f8814f0a0afc53647cb3474f52a Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 22:53:00 +0200 Subject: [PATCH 20/32] Revert "Update MetaTileEntityCuringOven.java" This reverts commit db1f48c952cb15d06a3be2bc492efe5d4c4819ba. --- .../metatileentities/multiblocks/MetaTileEntityCuringOven.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java index 7a061b01..04d614d7 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java @@ -18,7 +18,6 @@ import gregtech.api.util.RelativeDirection; import gregtech.client.renderer.ICubeRenderer; import gregtech.client.renderer.texture.Textures; -import gregtech.client.renderer.texture.cube.OrientedOverlayRenderer; import gregtech.common.blocks.*; import gtb.api.recipes.GTBRecipeMaps; @@ -64,7 +63,7 @@ private static IBlockState getPipeState() { @Nonnull @Override - protected OrientedOverlayRenderer getFrontOverlay() { + protected ICubeRenderer getFrontOverlay() { return GTBTextures.CURING_OVEN_OVERLAY; } From 8aa1d0a5f5863b40a46477fe2382bbef665659f8 Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 22:57:09 +0200 Subject: [PATCH 21/32] fixed rocket launch pad structure pattern --- .../MetaTileEntityRocketLaunchPad.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java index cbdfaa07..ac26f3e6 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java @@ -38,15 +38,17 @@ public IBlockState getCasingState() { protected @NotNull BlockPattern createStructurePattern() { return FactoryBlockPattern.start(RelativeDirection.RIGHT, RelativeDirection.BACK, RelativeDirection.UP) .aisle( - "CCC", - "CCC", - "CCC", - "CCC") + "~CCC~", + "~CCC~", + "~CCC~", + "~CCC~", + "~CCC~") .aisle( - "CCC", - "CCC", - "CCC", - "CCC") + "~CCC~", + "~CCC~", + "~CCC~", + "~CCC~", + "~CCC~") .aisle( "~CCC~", "CZZZC", "CZZZC", From 1c19d9bba25d74ba94d87c481a3b6283f7736494 Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 24 Jun 2025 23:00:07 +0200 Subject: [PATCH 22/32] useless override --- .../multiblocks/MetaTileEntityRocketLaunchPad.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java index ac26f3e6..e84c8ad9 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java @@ -64,11 +64,6 @@ public IBlockState getCasingState() { .build(); } - @Override - public TraceabilityPredicate autoAbilities() { - return autoAbilities(true, true, true, true, true, true, true); - } - @SideOnly(Side.CLIENT) @Override public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { From 4d0460ae39c547dbc9af5a925fe133b61ab941aa Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:30:58 +0200 Subject: [PATCH 23/32] Update GTBRecipeMaps.java --- src/main/java/gtb/api/recipes/GTBRecipeMaps.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/gtb/api/recipes/GTBRecipeMaps.java b/src/main/java/gtb/api/recipes/GTBRecipeMaps.java index 5df3cbb5..e496698b 100644 --- a/src/main/java/gtb/api/recipes/GTBRecipeMaps.java +++ b/src/main/java/gtb/api/recipes/GTBRecipeMaps.java @@ -307,9 +307,6 @@ public final class GTBRecipeMaps { public static final RecipeMap HIGH_VACUUM_EVAPORATION_RECIPES = new RecipeMap<>( "high_vacuum_evaporation_recipes", 2, 1, 1, 1, new SimpleRecipeBuilder(), false); - public static final RecipeMap CRUCIBLE_RECIPES = new RecipeMap<>( - "crucible", 4, 1, 2, 1, new SimpleRecipeBuilder(), false); - public static final RecipeMap ATOMIC_LAYER_DEPOSITION_RECIPES = new RecipeMap<>( "atomic_layer_deposition", 4, 1, 2, 0, new SimpleRecipeBuilder(), false); @@ -336,4 +333,16 @@ public final class GTBRecipeMaps { public static final RecipeMap PRECISION_LASER_RECIPES = new RecipeMap<>( "precision_laser", 4, 2, 1, 1, new SimpleRecipeBuilder(), false); + + public static final RecipeMap ROCKET_LAUNCH_PAD_RECIPES = new RecipeMap<>( + "rocket_launch_pad", 4, 2, 1, 1, new SimpleRecipeBuilder(), false); + + public static final RecipeMap ROCKET_ASSEMBLY_RECIPES = new RecipeMap<>( + "rocket_assembly_recipes", 16, 1, 4, 0, new SimpleRecipeBuilder(), false); + + public static final RecipeMap ALLOY_KILN = new RecipeMap<>( + "alloy_kiln", 2, 2, 2, 1, new SimpleRecipeBuilder(), false); + + public static final RecipeMap CRUCIBLE_RECIPES = new RecipeMap<>( + "crucible_recipes", 2, 2, 2, 1, new SimpleRecipeBuilder(), false); } From 14df0f67867e3418cfcd60432b803607cf06ba09 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:00 +0200 Subject: [PATCH 24/32] Update GTBTextures.java --- src/main/java/gtb/api/render/GTBTextures.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gtb/api/render/GTBTextures.java b/src/main/java/gtb/api/render/GTBTextures.java index 6f443248..e9c08c23 100644 --- a/src/main/java/gtb/api/render/GTBTextures.java +++ b/src/main/java/gtb/api/render/GTBTextures.java @@ -81,6 +81,8 @@ public final class GTBTextures { "machines/ion_implanter"); public static OrientedOverlayRenderer ELECTRON_BEAM_LITHOGRAPHER_OVERLAY = new OrientedOverlayRenderer( "machines/electron_beam"); + public static SimpleOverlayRenderer PORCELAIN_TILES = new SimpleOverlayRenderer( + "gtb_multiblock_casing2/galvanized_porcelain_tiles"); private GTBTextures() {} From dd00844605e0c1c1d21ab5ac82fcc92716b03d27 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:02 +0200 Subject: [PATCH 25/32] Update GTBMultiblockCasing2.java --- .../java/gtb/common/block/blocks/GTBMultiblockCasing2.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java index 4fba3b37..f5d9ca6c 100644 --- a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java +++ b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java @@ -37,7 +37,8 @@ public enum CasingType implements IStringSerializable { THERMAL_EVAPORATION_CASING("thermal_evaporation_casing"), FUSED_QUARTZ_BLOCK("fused_quartz_block"), BLADE_ASSEMBLY_CASING("blade_assembly_casing"), - ROCKET_BLOCK_BASE("rocket_block_base"); + ROCKET_BLOCK_BASE("rocket_block_base"), + GALVANIZED_PORCELAIN_TILES("galvanized_porcelain_tiles"); private final String name; From b51a1c2fc6a80f49e7dc5e3fbad2cfb0bd82c51d Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:05 +0200 Subject: [PATCH 26/32] Update GTBMetaTileEntities.java --- .../gtb/common/metatileentities/GTBMetaTileEntities.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java index c23c7f6a..758301c7 100644 --- a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java +++ b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java @@ -100,6 +100,8 @@ public final class GTBMetaTileEntities { public static MetaTileEntityPrecisionLaser PRECISION_LASER; public static MetaTileEntityFlashChromatographySystem FLASH_CHROMATOGRAPHY_SYSTEM; public static MetaTileEntityRocketLaunchPad ROCKET_LAUNCH_PAD; + public static MetaTileEntityRocketAssemblingMachine ROCKET_ASSEMBLING_MACHINE; + public static MetaTileEntityAlloyKiln ALLOY_KILN; public static SimpleMachineMetaTileEntity[] CRYSTALLIZERS = new SimpleMachineMetaTileEntity[15]; public static SimpleMachineMetaTileEntity[] DEHYDRATORS = new SimpleMachineMetaTileEntity[15]; @@ -255,8 +257,12 @@ public static void init() { new MetaTileEntityHeatExchanger(gtb("heat_exchanger"))); PRECISION_LASER = registerMetaTileEntity(3071, new MetaTileEntityPrecisionLaser(gtb("precision_laser"))); - ROCKET_LAUNCH_PAD = registerMetaTileEntity(3072, + ROCKET_ASSEMBLING_MACHINE = registerMetaTileEntity(3072, + new MetaTileEntityRocketAssemblingMachine(gtb("rocket_assembling_machine"))); + ROCKET_LAUNCH_PAD = registerMetaTileEntity(3073, new MetaTileEntityRocketLaunchPad(gtb("rocket_launch_pad"))); + ALLOY_KILN = registerMetaTileEntity(3074, + new MetaTileEntityAlloyKiln(gtb("alloy_kiln"))); registerSimpleMetaTileEntity( CRYSTALLIZERS, 4012, "crystallizers", From 131012e8d1b1b992112de1fb017cb2ec33c0d0b2 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:07 +0200 Subject: [PATCH 27/32] Create MetaTileEntityAlloyKiln.java --- .../multiblocks/MetaTileEntityAlloyKiln.java | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityAlloyKiln.java diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityAlloyKiln.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityAlloyKiln.java new file mode 100644 index 00000000..3a03620a --- /dev/null +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityAlloyKiln.java @@ -0,0 +1,129 @@ +package gtb.common.metatileentities.multiblocks; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.ModularUI; +import gregtech.api.gui.widgets.*; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.MetaTileEntityUIFactory; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.metatileentity.multiblock.IMultiblockPart; +import gregtech.api.metatileentity.multiblock.RecipeMapPrimitiveMultiblockController; +import gregtech.api.pattern.BlockPattern; +import gregtech.api.pattern.FactoryBlockPattern; +import gregtech.client.renderer.ICubeRenderer; +import gregtech.client.renderer.texture.Textures; + +import codechicken.lib.raytracer.CuboidRayTraceResult; +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.pipeline.IVertexOperation; +import codechicken.lib.vec.Matrix4; +import gtb.api.recipes.GTBRecipeMaps; +import gtb.api.render.GTBTextures; +import gtb.common.block.GTBMetaBlocks; +import gtb.common.block.blocks.GTBMultiblockCasing2; + +public class MetaTileEntityAlloyKiln extends RecipeMapPrimitiveMultiblockController { + + public MetaTileEntityAlloyKiln(ResourceLocation metaTileEntityId) { + super(metaTileEntityId, GTBRecipeMaps.ALLOY_KILN); + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) { + return new MetaTileEntityAlloyKiln(metaTileEntityId); + } + + @Override + protected BlockPattern createStructurePattern() { + return FactoryBlockPattern.start() + .aisle("XXX", "XXX", "~X~") + .aisle("XXX", "X~X", "~X~") + .aisle("XXX", "XSX", "~X~") + .where('X', + states(GTBMetaBlocks.GTB_MULTIBLOCK_CASING2 + .getState(GTBMultiblockCasing2.CasingType.GALVANIZED_PORCELAIN_TILES)) + .or(autoAbilities())) + .where('~', any()) + .where('S', selfPredicate()) + .build(); + } + + @Override + protected ModularUI.Builder createUITemplate(EntityPlayer entityPlayer) { + return ModularUI.builder(GuiTextures.BACKGROUND_STEAM.get(true), 176, 166) + .shouldColor(false) + + .widget(new LabelWidget(5, 5, getMetaFullName())) + .widget(new SlotWidget(importItems, 0, 52, 30, true, true) + .setBackgroundTexture(GuiTextures.SLOT_STEAM.get(true))) + .widget(new SlotWidget(importItems, 1, 52, 48, true, true) + .setBackgroundTexture(GuiTextures.SLOT_STEAM.get(true))) + + .widget(new RecipeProgressWidget(recipeMapWorkable::getProgressPercent, 76, 41, 20, 15, + GuiTextures.PROGRESS_BAR_COMPRESS_STEAM.get(true), ProgressWidget.MoveType.HORIZONTAL, + GTBRecipeMaps.ALLOY_KILN)) + + .widget(new SlotWidget(exportItems, 0, 103, 30, true, false) + .setBackgroundTexture(GuiTextures.SLOT_STEAM.get(true))) + .widget(new SlotWidget(exportItems, 1, 103, 48, true, false) + .setBackgroundTexture(GuiTextures.SLOT_STEAM.get(true))) + + .widget(new TankWidget(importFluids.getTankAt(0), 10, 22, 20, 58) + .setBackgroundTexture(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(true)) + .setContainerClicking(true, true)) + + .bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT_STEAM.get(true), 0); + } + + @SideOnly(Side.CLIENT) + @Override + public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { + return GTBTextures.PORCELAIN_TILES; + } + + @SideOnly(Side.CLIENT) + @Override + protected ICubeRenderer getFrontOverlay() { + return Textures.PRIMITIVE_BLAST_FURNACE_OVERLAY; + } + + @Override + public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) { + super.renderMetaTileEntity(renderState, translation, pipeline); + getFrontOverlay().renderOrientedState(renderState, translation, pipeline, getFrontFacing(), + recipeMapWorkable.isActive(), recipeMapWorkable.isWorkingEnabled()); + } + + @Override + public boolean hasMaintenanceMechanics() { + return false; + } + + @Override + public boolean onRightClick(EntityPlayer playerIn, EnumHand hand, EnumFacing facing, + CuboidRayTraceResult hitResult) { + // try to fill a bucket (or similar) with creosote on right click (if not sneaking) + if (playerIn.getHeldItem(hand).hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) { + if (!playerIn.isSneaking()) { + return getWorld().isRemote || FluidUtil.interactWithFluidHandler(playerIn, hand, getFluidInventory()); + } else { + // allow opening UI on shift-right-click with fluid container item + if (getWorld() != null && !getWorld().isRemote) { + MetaTileEntityUIFactory.INSTANCE.openUI(getHolder(), (EntityPlayerMP) playerIn); + } + return true; + } + } + return super.onRightClick(playerIn, hand, facing, hitResult); + } +} From 8ef01ca81c3bf4ae3d87aa9168851d3a3218e937 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:10 +0200 Subject: [PATCH 28/32] Update MetaTileEntityCuringOven.java --- .../metatileentities/multiblocks/MetaTileEntityCuringOven.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java index 04d614d7..7a061b01 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityCuringOven.java @@ -18,6 +18,7 @@ import gregtech.api.util.RelativeDirection; import gregtech.client.renderer.ICubeRenderer; import gregtech.client.renderer.texture.Textures; +import gregtech.client.renderer.texture.cube.OrientedOverlayRenderer; import gregtech.common.blocks.*; import gtb.api.recipes.GTBRecipeMaps; @@ -63,7 +64,7 @@ private static IBlockState getPipeState() { @Nonnull @Override - protected ICubeRenderer getFrontOverlay() { + protected OrientedOverlayRenderer getFrontOverlay() { return GTBTextures.CURING_OVEN_OVERLAY; } From 21ddf2917d3bd620d3e49a619a3b038c00e3012f Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:12 +0200 Subject: [PATCH 29/32] Create MetaTileEntityRocketAssemblingMachine.java --- ...MetaTileEntityRocketAssemblingMachine.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketAssemblingMachine.java diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketAssemblingMachine.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketAssemblingMachine.java new file mode 100644 index 00000000..6d44ae67 --- /dev/null +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketAssemblingMachine.java @@ -0,0 +1,84 @@ +package gtb.common.metatileentities.multiblocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.metatileentity.multiblock.IMultiblockPart; +import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController; +import gregtech.api.pattern.BlockPattern; +import gregtech.api.pattern.FactoryBlockPattern; +import gregtech.api.pattern.TraceabilityPredicate; +import gregtech.api.util.RelativeDirection; +import gregtech.client.renderer.ICubeRenderer; +import gregtech.client.renderer.texture.Textures; +import gregtech.common.blocks.BlockGlassCasing; +import gregtech.common.blocks.MetaBlocks; + +import gregicality.multiblocks.api.unification.GCYMMaterials; +import gregicality.multiblocks.common.block.GCYMMetaBlocks; +import gregicality.multiblocks.common.block.blocks.BlockLargeMultiblockCasing; + +import gtb.api.recipes.GTBRecipeMaps; + +public class MetaTileEntityRocketAssemblingMachine extends RecipeMapMultiblockController { + + public MetaTileEntityRocketAssemblingMachine(ResourceLocation metaTileEntityId) { + super(metaTileEntityId, GTBRecipeMaps.ROCKET_ASSEMBLY_RECIPES); + } + + public IBlockState getCasingState() { + return GCYMMetaBlocks.LARGE_MULTIBLOCK_CASING + .getState(BlockLargeMultiblockCasing.CasingType.NONCONDUCTING_CASING); + } + + @Override + protected @NotNull BlockPattern createStructurePattern() { + return FactoryBlockPattern.start(RelativeDirection.RIGHT, RelativeDirection.BACK, RelativeDirection.UP) + .aisle("CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", + "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC") + .aisle("CCCCC", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", + "~~~~~", "F~~~F", "CCCCC", "G~~~G", "G~~~G", "G~~~G", "CCSCC") + .aisle("CCCCC", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", + "~~~~~", "F~~~F", "CCCCC", "G~~~G", "G~~~G", "G~~~G", "CCCCC") + .aisle("CCCCC", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", "~~~~~", "F~~~F", + "~~~~~", "F~~~F", "CCCCC", "G~~~G", "G~~~G", "G~~~G", "CCCCC") + .aisle("CCCCC", "~F~F~", "~~~~~", "~F~F~", "~~~~~", "~F~F~", "~~~~~", "~F~F~", "~~~~~", "~F~F~", + "~~~~~", "~F~F~", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC") + .where('S', selfPredicate()) + .where('~', any()) + .where('C', states(getCasingState()).setMinGlobalLimited(150) + .or(autoAbilities())) + .where('F', frames(GCYMMaterials.HSLASteel)) + .where('G', states(MetaBlocks.TRANSPARENT_CASING.getState(BlockGlassCasing.CasingType.LAMINATED_GLASS))) + .build(); + } + + @Override + public TraceabilityPredicate autoAbilities() { + return autoAbilities(true, true, true, true, true, true, true); + } + + @SideOnly(Side.CLIENT) + @Override + public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { + return Textures.SOLID_STEEL_CASING; + } + + @SideOnly(Side.CLIENT) + @NotNull + @Override + protected ICubeRenderer getFrontOverlay() { + return Textures.ASSEMBLER_OVERLAY; + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) { + return new MetaTileEntityRocketAssemblingMachine(metaTileEntityId); + } +} From 2b1a32045d81cb2ea73d3ed2685739de58e75ad7 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:14 +0200 Subject: [PATCH 30/32] Update MetaTileEntityRocketLaunchPad.java --- .../MetaTileEntityRocketLaunchPad.java | 411 +++++++++++++++++- 1 file changed, 387 insertions(+), 24 deletions(-) diff --git a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java index e84c8ad9..042a7908 100644 --- a/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java @@ -1,7 +1,22 @@ package gtb.common.metatileentities.multiblocks; +import static asmodeuscore.core.handler.ColorBlockHandler.world; + +import java.util.List; + import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -14,67 +29,415 @@ import gregtech.api.pattern.BlockPattern; import gregtech.api.pattern.FactoryBlockPattern; import gregtech.api.pattern.TraceabilityPredicate; +import gregtech.api.unification.material.Materials; import gregtech.api.util.RelativeDirection; import gregtech.client.renderer.ICubeRenderer; import gregtech.client.renderer.texture.Textures; +import gregtech.common.blocks.MetaBlocks; +import gregtech.common.blocks.StoneVariantBlock; + +import gregicality.multiblocks.api.render.GCYMTextures; +import gregicality.multiblocks.common.block.GCYMMetaBlocks; +import gregicality.multiblocks.common.block.blocks.BlockLargeMultiblockCasing; import gtb.api.recipes.GTBRecipeMaps; -import gtb.api.render.GTBTextures; import gtb.common.block.GTBMetaBlocks; import gtb.common.block.blocks.GTBMultiblockCasing2; +import micdoodle8.mods.galacticraft.api.entity.IFuelable; public class MetaTileEntityRocketLaunchPad extends RecipeMapMultiblockController { + private final FluidTank fuelTank; + public MetaTileEntityRocketLaunchPad(ResourceLocation metaTileEntityId) { - super(metaTileEntityId, GTBRecipeMaps.HIGH_VACUUM_EVAPORATION_RECIPES); + super(metaTileEntityId, GTBRecipeMaps.ROCKET_LAUNCH_PAD_RECIPES); + + this.fuelTank = new FluidTank(8000) { + + @Override + public boolean canFillFluidType(FluidStack fluid) { + if (fluid == null) return false; + // Accept fluids whose name is "fuel" or common Galacticraft fuel fluids + String fluidName = fluid.getFluid().getName(); + return "fuel".equals(fluidName) || "gc_fuel".equals(fluidName) || "rocket_fuel".equals(fluidName); + } + }; + } + + @Override + public void update() { + super.update(); + + if (getWorld().isRemote || !isStructureFormed()) return; + + IFuelable fuelableRocket = findFuelableRocket(); + if (fuelableRocket == null) return; + + FluidStack fluid = fuelTank.getFluid(); + if (fluid != null && fluid.amount > 0) { + Fluid fuelFluid = fluid.getFluid(); + if (fuelFluid == null) return; + + int fuelToTransfer = Math.min(40, fluid.amount); + + // This is the expected call: + int used = fuelableRocket.addFuel(fluid, true); + + if (used > 0) { + fuelTank.drain(used, true); + } else {} + } + } + + private IFuelable findFuelableRocket() { + World world = getWorld(); + if (world == null || getPos() == null) { + return null; + } + + BlockPos controllerPos = getPos(); + AxisAlignedBB searchBox = new AxisAlignedBB(controllerPos).grow(5); + + List entities = world.getEntitiesWithinAABB(Entity.class, searchBox); + for (Entity entity : entities) { + if (entity instanceof IFuelable) { + return (IFuelable) entity; + } + } + return null; + } + + @Override + public boolean hasCapability(Capability capability, EnumFacing side) { + if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { + return true; + } + return super.hasCapability(capability, side); + } + + @Override + public T getCapability(Capability capability, EnumFacing side) { + if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { + return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(fuelTank); + } + return super.getCapability(capability, side); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + compound.setTag("FuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + return compound; + } + + @Override + public void readFromNBT(NBTTagCompound compound) { + super.readFromNBT(compound); + fuelTank.readFromNBT(compound.getCompoundTag("FuelTank")); } public IBlockState getCasingState() { - return GTBMetaBlocks.GTB_MULTIBLOCK_CASING2 - .getState(GTBMultiblockCasing2.CasingType.THERMAL_EVAPORATION_CASING); + return GCYMMetaBlocks.LARGE_MULTIBLOCK_CASING + .getState(BlockLargeMultiblockCasing.CasingType.CORROSION_PROOF_CASING); } @Override protected @NotNull BlockPattern createStructurePattern() { return FactoryBlockPattern.start(RelativeDirection.RIGHT, RelativeDirection.BACK, RelativeDirection.UP) .aisle( - "~CCC~", - "~CCC~", - "~CCC~", - "~CCC~", - "~CCC~") - .aisle( - "~CCC~", - "~CCC~", - "~CCC~", - "~CCC~", - "~CCC~") - .aisle( "~CCC~", - "CZZZC", - "CZZZC", - "CZZZC", - "~CSC~") + "~~~CCCCC~~~", + "~~CLLLLLC~~", + "~CLLLLLLLC~", + "CLLLCCCLLLC", + "CLLCRRRCLLC", + "CLLCRRRCLLC", + "CLLCRRRCLLC", + "CLLLCCCLLLC", + "~CLLLLLLLC~", + "~~CLLLLLC~~", + "~~~CCSCC~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~FFFCFFF~~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~F~~~~~~~F~", + "~~F~~~~~F~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~C~C~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") + .aisle( + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~C~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~", + "~~~~~~~~~~~") .where('S', selfPredicate()) .where('~', any()) - .where('C', states(getCasingState()).setMinGlobalLimited(5) + .where('C', states(getCasingState()).setMinGlobalLimited(80) .or(autoAbilities())) - .where('Z', + .where('R', states(GTBMetaBlocks.GTB_MULTIBLOCK_CASING2 .getState(GTBMultiblockCasing2.CasingType.ROCKET_BLOCK_BASE))) + .where('L', + states(MetaBlocks.STONE_BLOCKS.get(StoneVariantBlock.StoneVariant.SMOOTH) + .getState(StoneVariantBlock.StoneType.CONCRETE_LIGHT))) + .where('F', frames(Materials.Steel)) .build(); } + @Override + public TraceabilityPredicate autoAbilities() { + return autoAbilities(true, true, true, true, true, true, true); + } + @SideOnly(Side.CLIENT) @Override public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) { - return GTBTextures.THERMAL_CASING; + return GCYMTextures.CORROSION_PROOF_CASING; } @SideOnly(Side.CLIENT) @NotNull @Override protected ICubeRenderer getFrontOverlay() { - return Textures.POLARIZER_OVERLAY; + return Textures.ASSEMBLER_OVERLAY; } @Override From 8a4b46eec758f6bd3a2869f1b773904a579d1a40 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:16 +0200 Subject: [PATCH 31/32] Create MixinEntityLanderBase.java --- .../gregtech/MixinEntityLanderBase.java | 458 ++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 src/main/java/gtb/mixins/gregtech/MixinEntityLanderBase.java diff --git a/src/main/java/gtb/mixins/gregtech/MixinEntityLanderBase.java b/src/main/java/gtb/mixins/gregtech/MixinEntityLanderBase.java new file mode 100644 index 00000000..b064c8bc --- /dev/null +++ b/src/main/java/gtb/mixins/gregtech/MixinEntityLanderBase.java @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2023 Team Galacticraft + * + * Licensed under the MIT license. + * See LICENSE file in the project root for details. + */ +package gtb.mixins.gregtech; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.spongepowered.asm.mixin.Mixin; + +import io.netty.buffer.ByteBuf; +import micdoodle8.mods.galacticraft.core.GCFluids; +import micdoodle8.mods.galacticraft.core.GalacticraftCore; +import micdoodle8.mods.galacticraft.core.entities.EntityAdvancedMotion; +import micdoodle8.mods.galacticraft.core.entities.EntityLanderBase; +import micdoodle8.mods.galacticraft.core.entities.IScaleableFuelLevel; +import micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats; +import micdoodle8.mods.galacticraft.core.inventory.IInventorySettable; +import micdoodle8.mods.galacticraft.core.network.PacketDynamic; +import micdoodle8.mods.galacticraft.core.network.PacketDynamicInventory; +import micdoodle8.mods.galacticraft.core.util.FluidUtil; +import micdoodle8.mods.galacticraft.core.util.WorldUtil; + +@Mixin(value = EntityLanderBase.class, remap = false) + +public abstract class MixinEntityLanderBase extends EntityAdvancedMotion + implements IInventorySettable, IScaleableFuelLevel { + + private final int FUEL_TANK_CAPACITY = 50000; + public FluidTank fuelTank = new FluidTank(this.FUEL_TANK_CAPACITY); + protected boolean hasReceivedPacket; + private boolean lastShouldMove; + private UUID persistantRiderUUID; + private Boolean shouldMoveClient; + private Boolean shouldMoveServer; + private ArrayList prevData; + private boolean networkDataChanged; + private boolean syncAdjustFlag = true; + + public MixinEntityLanderBase(World var1) { + super(var1); + this.setSize(3.0F, 3.0F); + } + + @Override + public void updatePassenger(Entity passenger) { + if (this.isPassenger(passenger)) { + passenger.setPosition(this.posX, this.posY + this.getMountedYOffset() + passenger.getYOffset(), this.posZ); + } + } + + @Override + public boolean shouldSendAdvancedMotionPacket() { + return this.shouldMoveClient != null && this.shouldMoveServer != null; + } + + @Override + public boolean canSetPositionClient() { + return this.shouldSendAdvancedMotionPacket(); + } + + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotationDirect(double x, double y, double z, float yaw, float pitch, + int posRotationIncrements, boolean b) { + super.setPositionAndRotationDirect(x, y, z, yaw, pitch, posRotationIncrements, b); + if (this.syncAdjustFlag && this.world.isBlockLoaded(new BlockPos(x, 255D, z))) { + EntityPlayer p = FMLClientHandler.instance().getClientPlayerEntity(); + double dx = x - p.posX; + double dz = z - p.posZ; + if (dx * dx + dz * dz < 1024) { + if (!this.world.loadedEntityList.contains(this)) { + try { + this.world.loadedEntityList.add(this); + } catch (Exception e) { + e.printStackTrace(); + } + } + + this.posX = x; + this.posY = y; + this.posZ = z; + + int cx = MathHelper.floor(x / 16.0D); + int cz = MathHelper.floor(z / 16.0D); + + if (!this.addedToChunk || this.chunkCoordX != cx || this.chunkCoordZ != cz) { + if (this.addedToChunk && this.world + .isBlockLoaded(new BlockPos(this.chunkCoordX << 4, 255, this.chunkCoordZ << 4), true)) { + this.world.getChunk(this.chunkCoordX, this.chunkCoordZ).removeEntityAtIndex(this, + this.chunkCoordY); + } + + this.addedToChunk = true; + this.world.getChunk(cx, cz).addEntity(this); + } + + this.syncAdjustFlag = false; + } + } + } + + @Override + public int getScaledFuelLevel(int i) { + final double fuelLevel = this.fuelTank.getFluid() == null ? 0 : this.fuelTank.getFluid().amount; + + return (int) (fuelLevel * i / this.FUEL_TANK_CAPACITY); + } + + public MixinEntityLanderBase(World var1, double var2, double var4, double var6, float yOffset) { + this(var1); + this.setPosition(var2, var4, var6); + } + + public MixinEntityLanderBase(EntityPlayerMP player, float yOffset) { + this(player.world, player.posX, player.posY, player.posZ, yOffset); + + GCPlayerStats stats = GCPlayerStats.get(player); + this.stacks = NonNullList.withSize(stats.getRocketStacks().size() + 1, ItemStack.EMPTY); + this.fuelTank.setFluid(new FluidStack(GCFluids.fluidFuel, stats.getFuelLevel())); + + for (int i = 0; i < stats.getRocketStacks().size(); i++) { + if (!stats.getRocketStacks().get(i).isEmpty()) { + this.stacks.set(i, stats.getRocketStacks().get(i).copy()); + } else { + this.stacks.get(i).setCount(0); + } + } + + this.setPositionAndRotation(player.posX, player.posY, player.posZ, 0, 0); + + player.startRiding(this, true); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if (this.ticks < 40 && this.posY > 150) { + if (this.getPassengers().isEmpty()) { + final EntityPlayer player = this.world.getClosestPlayerToEntity(this, 5); + + if (player != null && player.getRidingEntity() == null) { + player.startRiding(this); + } + } + } + + if (!this.world.isRemote) { + this.checkFluidTankTransfer(this.stacks.size() - 1, this.fuelTank); + } + + AxisAlignedBB box = this.getEntityBoundingBox().grow(0.2D, 0.4D, 0.2D); + + final List var15 = this.world.getEntitiesWithinAABBExcludingEntity(this, box); + + if (var15 != null && !var15.isEmpty()) { + for (Entity entity : var15) { + if (!this.getPassengers().contains(entity)) { + this.pushEntityAway(entity); + } + } + } + } + + private void checkFluidTankTransfer(int slot, FluidTank tank) { + FluidUtil.tryFillContainerFuel(tank, this.stacks, slot); + } + + private void pushEntityAway(Entity entityToPush) { + if (!this.getPassengers().contains(entityToPush) && this.getRidingEntity() != entityToPush) { + double d0 = this.posX - entityToPush.posX; + double d1 = this.posZ - entityToPush.posZ; + double d2 = MathHelper.absMax(d0, d1); + + if (d2 >= 0.009999999776482582D) { + d2 = MathHelper.sqrt(d2); + d0 /= d2; + d1 /= d2; + double d3 = 1.0D / d2; + + if (d3 > 1.0D) { + d3 = 1.0D; + } + + d0 *= d3; + d1 *= d3; + d0 *= 0.05000000074505806D; + d1 *= 0.05000000074505806D; + d0 *= 1.0F - entityToPush.entityCollisionReduction; + d1 *= 1.0F - entityToPush.entityCollisionReduction; + entityToPush.addVelocity(-d0, 0.0D, -d1); + } + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + int invSize = nbt.getInteger("rocketStacksLength"); + if (invSize < 5) { + invSize = 5; + } + this.stacks = NonNullList.withSize(invSize, ItemStack.EMPTY); + ItemStackHelper.loadAllItems(nbt, this.stacks); + + if (nbt.hasKey("fuelTank")) { + this.fuelTank.readFromNBT(nbt.getCompoundTag("fuelTank")); + } + + if (nbt.hasKey("RiderUUID_LSB")) { + this.persistantRiderUUID = new UUID(nbt.getLong("RiderUUID_LSB"), nbt.getLong("RiderUUID_MSB")); + } + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + if (world.isRemote) + return; + nbt.setInteger("rocketStacksLength", this.stacks.size()); + + ItemStackHelper.saveAllItems(nbt, this.stacks); + + if (this.fuelTank.getFluid() != null) { + nbt.setTag("fuelTank", this.fuelTank.writeToNBT(new NBTTagCompound())); + } + + UUID id = this.getOwnerUUID(); + + if (id != null) { + nbt.setLong("RiderUUID_LSB", id.getLeastSignificantBits()); + nbt.setLong("RiderUUID_MSB", id.getMostSignificantBits()); + } + } + + @Override + public boolean shouldMove() { + if (this.shouldMoveClient == null || this.shouldMoveServer == null) { + return false; + } + + if (this.ticks < 40) { + return false; + } + + return !this.onGround; + } + + public abstract double getInitialMotionY(); + + @Override + public void tickInAir() { + if (this.world.isRemote) { + if (!this.shouldMove()) { + this.motionY = this.motionX = this.motionZ = 0.0F; + } + + if (this.shouldMove() && !this.lastShouldMove) { + this.motionY = this.getInitialMotionY(); + } + + this.lastShouldMove = this.shouldMove(); + } + } + + @Override + public ArrayList getNetworkedData() { + final ArrayList objList = new ArrayList(); + + if (!this.world.isRemote) { + Integer cargoLength = this.stacks != null ? this.stacks.size() : 0; + objList.add(cargoLength); + objList.add(this.fuelTank.getFluid() == null ? 0 : this.fuelTank.getFluid().amount); + } + + if (this.world.isRemote) { + this.shouldMoveClient = this.shouldMove(); + objList.add(this.shouldMoveClient); + } else { + this.shouldMoveServer = this.shouldMove(); + objList.add(this.shouldMoveServer); + // Server send rider information for client to check + objList.add(this.getPassengers().isEmpty() ? -1 : this.getPassengers().get(0).getEntityId()); + } + + this.networkDataChanged = !objList.equals(this.prevData); + this.prevData = objList; + return objList; + } + + @Override + public boolean networkedDataChanged() { + return this.networkDataChanged || this.shouldMoveClient == null || this.shouldMoveServer == null; + } + + @Override + public boolean canRiderInteract() { + return true; + } + + @Override + public int getPacketTickSpacing() { + return 2; + } + + @Override + public double getPacketSendDistance() { + return 250.0D; + } + + @Override + public void readNetworkedData(ByteBuf buffer) { + try { + if (this.world.isRemote) { + if (!this.hasReceivedPacket) { + GalacticraftCore.packetPipeline.sendToServer(new PacketDynamic(this)); + this.hasReceivedPacket = true; + } + + int cargoLength = buffer.readInt(); + if (this.stacks == null || this.stacks.isEmpty()) { + this.stacks = NonNullList.withSize(cargoLength, ItemStack.EMPTY); + GalacticraftCore.packetPipeline.sendToServer(new PacketDynamicInventory(this)); + } + + this.fuelTank.setFluid(new FluidStack(GCFluids.fluidFuel, buffer.readInt())); + + this.shouldMoveServer = buffer.readBoolean(); + + // Check has correct rider on client + int shouldBeMountedId = buffer.readInt(); + if (this.getPassengers().isEmpty()) { + if (shouldBeMountedId > -1) { + Entity e = FMLClientHandler.instance().getWorldClient().getEntityByID(shouldBeMountedId); + if (e != null) { + if (e.dimension != this.dimension) { + if (e instanceof EntityPlayer) { + e = WorldUtil.forceRespawnClient(this.dimension, e.world.getDifficulty().getId(), + e.world.getWorldInfo().getTerrainType().getName(), + ((EntityPlayerMP) e).interactionManager.getGameType().getID()); + e.startRiding(this); + this.syncAdjustFlag = true; + } + } else { + e.startRiding(this); + this.syncAdjustFlag = true; + } + } + } + } else if (this.getPassengers().get(0).getEntityId() != shouldBeMountedId) { + if (shouldBeMountedId == -1) { + this.removePassengers(); + } else { + Entity e = FMLClientHandler.instance().getWorldClient().getEntityByID(shouldBeMountedId); + if (e != null) { + if (e.dimension != this.dimension) { + if (e instanceof EntityPlayer) { + e = WorldUtil.forceRespawnClient(this.dimension, e.world.getDifficulty().getId(), + e.world.getWorldInfo().getTerrainType().getName(), + ((EntityPlayerMP) e).interactionManager.getGameType().getID()); + e.startRiding(this, true); + this.syncAdjustFlag = true; + } + } else { + e.startRiding(this, true); + this.syncAdjustFlag = true; + } + } + } + } + } else { + this.shouldMoveClient = buffer.readBoolean(); + } + } catch (final Exception e) { + e.printStackTrace(); + } + } + + @Override + public boolean allowDamageSource(DamageSource damageSource) { + return !damageSource.isExplosion(); + } + + @Override + public List getItemsDropped() { + return this.stacks; + } + + @Override + public int getSizeInventory() { + return this.stacks.size(); + } + + @Override + public void setSizeInventory(int size) { + this.stacks = NonNullList.withSize(size, ItemStack.EMPTY); + } + + @Override + public boolean isItemValidForSlot(int var1, ItemStack var2) { + return false; + } + + @Override + public double getPacketRange() { + return 50.0D; + } + + @Override + public UUID getOwnerUUID() { + if (!this.getPassengers().isEmpty() && !(this.getPassengers().get(0) instanceof EntityPlayer)) { + return null; + } + + UUID id; + + if (!this.getPassengers().isEmpty()) { + id = this.getPassengers().get(0).getPersistentID(); + + this.persistantRiderUUID = id; + } else { + id = this.persistantRiderUUID; + } + + return id; + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender() { + double height = this.posY + (double) this.getEyeHeight(); + if (height > 255D) + height = 255D; + BlockPos blockpos = new BlockPos(this.posX, height, this.posZ); + return this.world.isBlockLoaded(blockpos) ? this.world.getCombinedLight(blockpos, 0) : 0; + } +} From 231f0e354d6780ce8159ad2f20e72027d7d7a2d8 Mon Sep 17 00:00:00 2001 From: BLocky104 Date: Thu, 26 Jun 2025 00:31:29 +0200 Subject: [PATCH 32/32] Textures --- .../models/item/metaitems/advanced_nozzle.json | 6 ++++++ .../item/metaitems/carbon_carbon_plate.json | 6 ++++++ ...hed_electrode_deposited_ga_as_substrate.json | 6 ++++++ .../item/metaitems/fused_quartz_panel.json | 6 ++++++ .../item/metaitems/piezoelectric_actuator.json | 6 ++++++ .../spincoated_deposited_alumina_wafer.json | 6 ++++++ .../galvanized_porcelain_tiles.png | Bin 0 -> 225 bytes .../gtb/blockstates/gtb_multiblock_casing2.json | 6 ++++++ .../items/metaitems/advanced_nozzle.png | Bin 0 -> 188 bytes .../items/metaitems/carbon_carbon_plate.png | Bin 0 -> 226 bytes ...ched_electrode_deposited_ga_as_substrate.png | Bin 0 -> 525 bytes .../items/metaitems/fused_quartz_panel.png | Bin 0 -> 203 bytes .../items/metaitems/patterned_alumina_wafer.png | Bin 671 -> 658 bytes .../items/metaitems/piezoelectric_actuator.png | Bin 0 -> 216 bytes .../spincoated_deposited_alumina_wafer.png | Bin 0 -> 597 bytes src/main/resources/mixins.gtb.gregtech.json | 1 + 16 files changed, 43 insertions(+) create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/advanced_nozzle.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/carbon_carbon_plate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/etched_electrode_deposited_ga_as_substrate.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/fused_quartz_panel.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/piezoelectric_actuator.json create mode 100644 src/main/resources/assets/gregtech/models/item/metaitems/spincoated_deposited_alumina_wafer.json create mode 100644 src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/advanced_nozzle.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/carbon_carbon_plate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/etched_electrode_deposited_ga_as_substrate.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/fused_quartz_panel.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/piezoelectric_actuator.png create mode 100644 src/main/resources/assets/gtb/textures/items/metaitems/spincoated_deposited_alumina_wafer.png diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/advanced_nozzle.json b/src/main/resources/assets/gregtech/models/item/metaitems/advanced_nozzle.json new file mode 100644 index 00000000..249c3187 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/advanced_nozzle.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/advanced_nozzle" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/carbon_carbon_plate.json b/src/main/resources/assets/gregtech/models/item/metaitems/carbon_carbon_plate.json new file mode 100644 index 00000000..be071b7c --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/carbon_carbon_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/carbon_carbon_plate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/etched_electrode_deposited_ga_as_substrate.json b/src/main/resources/assets/gregtech/models/item/metaitems/etched_electrode_deposited_ga_as_substrate.json new file mode 100644 index 00000000..7d202f40 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/etched_electrode_deposited_ga_as_substrate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/etched_electrode_deposited_ga_as_substrate" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/fused_quartz_panel.json b/src/main/resources/assets/gregtech/models/item/metaitems/fused_quartz_panel.json new file mode 100644 index 00000000..39a61998 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/fused_quartz_panel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/fused_quartz_panel" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/piezoelectric_actuator.json b/src/main/resources/assets/gregtech/models/item/metaitems/piezoelectric_actuator.json new file mode 100644 index 00000000..8a8a88fa --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/piezoelectric_actuator.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/piezoelectric_actuator" + } +} diff --git a/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_deposited_alumina_wafer.json b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_deposited_alumina_wafer.json new file mode 100644 index 00000000..c4d4ffad --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/metaitems/spincoated_deposited_alumina_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtb:items/metaitems/spincoated_deposited_alumina_wafer" + } +} diff --git a/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles.png b/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9e8634016f0251613f4c65c36808ac506688b3 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_!9ghFJJ7 zoxGRpfC5j8@`~o}_x8U!^!W62!#kGD`sHjK`C<2+qgR$p(fbw1#&qv@GH15#)Swp; z3<}p30vy=Mb@{9^88-a zFy~8-p@8DC71lT2_OUs)2uFxsnC6-%n`3O@GNbhPfh}2r6|TR%;}z~_GacW*h#~L$ XiW)<1`@0{3&Sda(^>bP0l+XkK|36i2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json index e5242c71..34924953 100644 --- a/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json +++ b/src/main/resources/assets/gtb/blockstates/gtb_multiblock_casing2.json @@ -38,6 +38,12 @@ "all" : "gregtech:blocks/gtb_multiblock_casing2/rocket_block_base" } }, + "galvanized_porcelain_tiles" : { + "model" : "minecraft:cube_all", + "textures" : { + "all" : "gregtech:blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles" + } + }, "sonicator_casing" : { "model" : "minecraft:cube_all", "textures" : { diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/advanced_nozzle.png b/src/main/resources/assets/gtb/textures/items/metaitems/advanced_nozzle.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfa937430385117f227766a3a5163a28d9d2363 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|$~;{hLoEE0 zQx*sqJi0W0?%cofk$JDKtc9iHnZ@A9SK($*x0%bG0abkF>Dm#4l!g%5w0?FJFkC2Q|KnE#?1B( kAFgZN#^yqa3=y0ReO+OKI@LXmKo>B0y85}Sb4q9e0H#zx-~a#s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/carbon_carbon_plate.png b/src/main/resources/assets/gtb/textures/items/metaitems/carbon_carbon_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..49810e904f8063d28dc29279b27e34a7df34c424 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6Jd|hFJJ7 zoopz?A}HW`JIJ`m*t~#w=i$?L4~V8Pb>7ll6|vj&Sjo$l1@}Mic1YNGLW$pZ!PdIu zlw&gv{p0wSD{pn;wY1qWj^M^1t~FbIJA^zm4_bylkXy6uHj5L-hkMiSJ+`^E?@*5+ zhvFIc9Zj2`OnjhK*817X=YXaBJtw=JVo?_kzhJTT(QKV^>9gQJ|9O2IzDzMJxWD_4 aw0*fmg5b`ur>#JDGI+ZBxvXPx$$4Nv%R5(v#WS|f*QmCH+Zh*0|@qdtEeC#X?;yi2&x8Ht)vq9o7zx-nO^z#qg zzO!e~g7u;pz{JGF(AU?;&{JQ@Aj-|g!1#}Yfk9Z1;llM>4CXTY43ih`VK8$xW%&2+ z9|K+k8Y;^ec-WX3w6(PvcAq%Mpd!S{aOd53hEsb_Gla!>Gu(Un0@DCTEA#(fe*c5J zfJaiE;mh-fV3*u~{~c`Lh7Cs;T)Zq9K79X$-2grgR)&(sc7{3qoeb9=zXbbNikF?? z+2@}OcIGAwJ#Et&0s?Fpo_zd{X+Twk`~R!2zJd){*j3N)`s*)-FTegWDDew2TzK`G zL0^KGVfNB};4t7}Wn$QW>?CR+M!4GkXJO=FNUyB|2cj4!AH%(m@4>DBg+3^D_G~-O z5EW|2aO=%i?1AWMq|V?Tm&q`#rJCW@*WV0!a$*cG-o6J1ASfW0tv-Z14167|{=fM8 z8y<-A^70H1A3g+oLyVi1fk#}HVb+wT#0BDt6)PBiKDrJLeLfaGhJQ?7!3Kf6Ky*3) z`5P2)7hik^#{|p(HxE~acR$}@4+G?U0SYu&;2|erm>P_fNN%R0I5z?Sa1rMb?WuSg P00000NkvXXu0mjfzbx)5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/fused_quartz_panel.png b/src/main/resources/assets/gtb/textures/items/metaitems/fused_quartz_panel.png new file mode 100644 index 0000000000000000000000000000000000000000..c64bd8843f8cec13c00386e1a5c0cec54f0932b3 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|T0LDHLoEFF zPR`{zpuo}gmgAzRRf7A=hB!r=L&u~gHlCaz{7jzp>qlj8ktrf)mb1RtD=!z3o%`$_ zgJrtb(iv+E**Z^rnaQA{%y3KStK;m3DD6zq8@mlYvn;m0(a*rbxMcB)wZB9euCBkk zgR%NH*PnEjoS&D44xjI^bZ!^1O7;IFC;hKi{cYWR!RP5uJb?~k@O1TaS?83{1OQc@ BONIad literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/patterned_alumina_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/patterned_alumina_wafer.png index 05c7a4715e658c58e069c761f816033dcfd45781..c96b02cf3a4277ab56e263163ac1d290c8ae24ee 100644 GIT binary patch delta 620 zcmV-y0+aop1(F4jF@H=+L_t(oN5z*xYZE~f$KP&i$)Q*%BB43!K?EsyXfOE&y#(7* z1Wy$`s0VXu5lebdX{nUjL(xN^lnN<$>lg6ktrUs}#f#F=lW0g9(`|O;ZF$R^*`1w9 zGMYJsnV0$h-kbltNgU|&aQdtd9RaNDR|5{*JZ&WMFHK)F-hbC9&{Vj6?g>E4b2qg6 zYXiC!ClVb*DgYN(l^ccR%yG{1{HPi)@7+}DC>MIkoQo5M3L+7J#P2pXtz43|-_zkf zukVk?^kNe{a|Af4twVOyguAUE^EsO+kszP0E**C1)$dq0c>1D0wD230GwRdJ`#?>CP0$7&qc!kioJ9ds^9X!0l0V~070}`9u!CRj0AN-1R#qm z0dV2zyJdsO5A>9BA-T265d6%!>EyW7AEju@=AX9k9TKKVxx>lAY2v9BAOQ|xTigf$ zgC1`k#=2y$nNxz=KPJ5X1fmm9GMmb%9RcXv-pzX70saDlD9JE@x!j)s0000oAJ;3@GXG3ox1`HoPB!@ih4HQ1j+Oz9h=L2 zcw@0I;?Q$+h~gdh%@C?KA>8>0x7(GzsustZ6(N|v&2V!>2o6A&_TG{R)YX_^v_C*$ zugVty9a|QH@qddgI>#=UU>Y`;2`K<;xS#-tc+s#n!17=-)ukU8z3BEJ08kuL!9s8V zvQi`F(`h5AGj2K&Ck?Zp1klaE==qlkQ9So*K`PNw)TRK_nH%n$#{*`dyj9DD2*8Sy zwUq!^=Rp97;+_EF0iz3$IQ`fHl6JO9Gax(N{tRGp^MA_W0YV%EfEc}HS+F+V#+y(C zzzc<(>pHD}>6n{N#7Xl6U~jXb%BWTq3> zZEGKVYAWutcs?PBDf_L!C6mt^f>uQ+w=@VaNhI%@u&l8|WvR~LopH=|!2-!G6KCEP zUDdRk;TH4Jb8>fBuQ&)PIhlQ2*`$1NH5bfc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_deposited_alumina_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_deposited_alumina_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8f49e29716f6a536a62fbcbc76f900b8c6aa58 GIT binary patch literal 597 zcmV-b0;>IqP)Px%4@pEpR9HvFmpe-XK@fl^=Ytf2AR@uuMg$RTZ2Si{ViXaq6fM-kRDvk6Q4~eg zLbM2oD45#cA%fV5jY3EzD#jSkTx3q>nBCiZc-bUdh2715-_Fg>-o>E7E!JQ@{7Yc_ zI#=Ps#m|D$e?8d~dfiYH!-C5{rXaL2*&Dci;Do4fG6|CK72t5Ma3e_GIrf>RtdDUZ z0hNRxAcx(KK=T1~cSaL{)&%69#vB2wVt^5|gh(g_DB)%*8Epaxw-eR^IGpcyxXusS zJXZNkaYpv`s!(%A>0&f}oY2yi&A9Vmd+ zZLaBDOA>Cq{N(`doSLTqFRMBQINUP=a!s$Rz}n@#D+hE5r1PV~F*HpRGN~ak31tDi zP!{4BT5^C3ARL>o0NrM~1qiMbz|NJkJK-_t6i~s1I#5f2)#ni*2Pph50a*egV61_ANemB!00000NkvXXu0mjfJa`5j literal 0 HcmV?d00001 diff --git a/src/main/resources/mixins.gtb.gregtech.json b/src/main/resources/mixins.gtb.gregtech.json index cb16f0b9..60941d30 100644 --- a/src/main/resources/mixins.gtb.gregtech.json +++ b/src/main/resources/mixins.gtb.gregtech.json @@ -7,6 +7,7 @@ "mixins": [ "MixinCokeOvenStructure", "MixinEBFStructure", + "MixinEntityLanderBase", "MixinPBFStructure", "MixinVacuumFreezerStructure" ]