diff --git a/dependencies.gradle b/dependencies.gradle index eb3e4790..41c6182e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,4 +1,5 @@ + //file:noinspection DependencyNotationArgument // TODO remove when fixed in RFG ^ /* @@ -30,6 +31,18 @@ dependencies { 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: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" 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 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(); } } diff --git a/src/main/java/gtb/api/recipes/GTBRecipeMaps.java b/src/main/java/gtb/api/recipes/GTBRecipeMaps.java index 7e658393..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); @@ -334,4 +331,18 @@ 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); + + 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); } diff --git a/src/main/java/gtb/api/render/GTBTextures.java b/src/main/java/gtb/api/render/GTBTextures.java index 0854de5c..e9c08c23 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( @@ -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() {} 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); + } + } +} diff --git a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java index f3e11333..f5d9ca6c 100644 --- a/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java +++ b/src/main/java/gtb/common/block/blocks/GTBMultiblockCasing2.java @@ -36,7 +36,9 @@ 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"), + GALVANIZED_PORCELAIN_TILES("galvanized_porcelain_tiles"); private final String name; diff --git a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java index 05a4d23c..758301c7 100644 --- a/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java +++ b/src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java @@ -97,7 +97,11 @@ 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 MetaTileEntityRocketAssemblingMachine ROCKET_ASSEMBLING_MACHINE; + public static MetaTileEntityAlloyKiln ALLOY_KILN; public static SimpleMachineMetaTileEntity[] CRYSTALLIZERS = new SimpleMachineMetaTileEntity[15]; public static SimpleMachineMetaTileEntity[] DEHYDRATORS = new SimpleMachineMetaTileEntity[15]; @@ -251,6 +255,14 @@ 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_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", @@ -264,7 +276,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 +291,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, 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); + } +} 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; } 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); + } +} 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); + } +} 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..042a7908 --- /dev/null +++ b/src/main/java/gtb/common/metatileentities/multiblocks/MetaTileEntityRocketLaunchPad.java @@ -0,0 +1,447 @@ +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; + +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.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.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.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 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( + "~~~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(80) + .or(autoAbilities())) + .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 GCYMTextures.CORROSION_PROOF_CASING; + } + + @SideOnly(Side.CLIENT) + @NotNull + @Override + protected ICubeRenderer getFrontOverlay() { + return Textures.ASSEMBLER_OVERLAY; + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) { + return new MetaTileEntityRocketLaunchPad(metaTileEntityId); + } +} 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(); 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; + } +} 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 ec35b1e2..00000000 Binary files a/src/main/resources/assets/gregtech/items.material_sets/dull/concentrate.png and /dev/null differ 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/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/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/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_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/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/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/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/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/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_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/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/galvanized_porcelain_tiles.png b/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles.png new file mode 100644 index 00000000..5b9e8634 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/galvanized_porcelain_tiles.png differ 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 00000000..07597916 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/gtb_multiblock_casing2/rocket_block_base.png differ 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..34924953 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,18 @@ "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" + } + }, + "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/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/advanced_nozzle.png b/src/main/resources/assets/gtb/textures/items/metaitems/advanced_nozzle.png new file mode 100644 index 00000000..2dfa9374 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/advanced_nozzle.png differ 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 00000000..92886a12 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/aluminium_layered_ga_as_wafer.png differ 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 00000000..5e75dd28 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/annealed_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/annealed_layered_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/annealed_layered_substrate.png new file mode 100644 index 00000000..e484fccd Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/annealed_layered_substrate.png differ 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 00000000..d24bd852 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_ga_as_wafer.png differ 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 00000000..0ce2f654 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/atomic_layered_substrate.png differ 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 00000000..49810e90 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/carbon_carbon_plate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/cleaned_doped_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/cleaned_doped_ga_as_wafer.png new file mode 100644 index 00000000..36a4ce66 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/cleaned_doped_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/deionized_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/deionized_substrate.png new file mode 100644 index 00000000..4fad79c1 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/deionized_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/developed_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/developed_ga_as_wafer.png new file mode 100644 index 00000000..d405fd36 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/developed_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/dielectric_electrode_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/dielectric_electrode_substrate.png new file mode 100644 index 00000000..e6c45ea4 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/dielectric_electrode_substrate.png differ 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 00000000..7369fe88 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/electron_source_100kv.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/engraved_doped_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_doped_ga_as_wafer.png new file mode 100644 index 00000000..a3abd1f2 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_doped_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/engraved_spincoated_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_spincoated_ga_as_wafer.png new file mode 100644 index 00000000..ef941f92 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_spincoated_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/engraved_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_substrate.png new file mode 100644 index 00000000..6326a514 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/engraved_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/etched_electrode_deposited_ga_as_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/etched_electrode_deposited_ga_as_substrate.png new file mode 100644 index 00000000..07517eff Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/etched_electrode_deposited_ga_as_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/etched_exposed_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/etched_exposed_substrate.png new file mode 100644 index 00000000..ad7bc219 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/etched_exposed_substrate.png differ 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 00000000..adad6203 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/etched_substrate.png differ 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 00000000..aa33e296 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/exposed_substrate.png differ 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 00000000..c64bd884 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/fused_quartz_panel.png differ 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 00000000..6fdecaf4 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/gated_substrate.png differ 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 00000000..0c31c230 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/gold_layered_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/graphene_electrode_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/graphene_electrode_substrate.png new file mode 100644 index 00000000..d1be1cac Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/graphene_electrode_substrate.png differ 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 00000000..3a3b75a9 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/heavily_doped_ga_as_wafer.png differ 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 00000000..94adc17c Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/mesa_structured_ga_as_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/metal_layered_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/metal_layered_substrate.png new file mode 100644 index 00000000..b0a64ca2 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/metal_layered_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/oscillating_quartz_blank.png b/src/main/resources/assets/gtb/textures/items/metaitems/oscillating_quartz_blank.png new file mode 100644 index 00000000..8a71bdc8 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/oscillating_quartz_blank.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/oxidized_anode.png b/src/main/resources/assets/gtb/textures/items/metaitems/oxidized_anode.png new file mode 100644 index 00000000..86435e3d Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/oxidized_anode.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/passivated_quantum_smd_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/passivated_quantum_smd_wafer.png new file mode 100644 index 00000000..ebff7269 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/passivated_quantum_smd_wafer.png differ 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 05c7a471..c96b02cf 100644 Binary files a/src/main/resources/assets/gtb/textures/items/metaitems/patterned_alumina_wafer.png and b/src/main/resources/assets/gtb/textures/items/metaitems/patterned_alumina_wafer.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/piezoelectric_actuator.png b/src/main/resources/assets/gtb/textures/items/metaitems/piezoelectric_actuator.png new file mode 100644 index 00000000..edb5fb5a Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/piezoelectric_actuator.png differ 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 00000000..e9501fb9 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/porous_sintered_pellet.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/precision_resistor_array.png b/src/main/resources/assets/gtb/textures/items/metaitems/precision_resistor_array.png new file mode 100644 index 00000000..b2c75fe0 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/precision_resistor_array.png differ 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 00000000..1ea1a8f7 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/pressed_tantalum_pellet.png differ 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 00000000..71ef2e62 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor.png differ 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 00000000..380dd77f Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_capacitor_chips.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode.png new file mode 100644 index 00000000..5f6cc7ba Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode_chips.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode_chips.png new file mode 100644 index 00000000..5824a84b Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_diode_chips.png differ 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 00000000..64d1241d Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor.png differ 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 00000000..c855ebc4 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_inductor_chips.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor.png new file mode 100644 index 00000000..72f224ad Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor.png differ 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 00000000..89daa41b Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_resistor_chips.png differ 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 00000000..f6ddbecd Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor.png differ 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 00000000..0853ac2f Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_smd_transistor_chips.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/quantum_well_substrate.png b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_well_substrate.png new file mode 100644 index 00000000..2827a9ad Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/quantum_well_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/resistivated_ga_as_wafer.png b/src/main/resources/assets/gtb/textures/items/metaitems/resistivated_ga_as_wafer.png new file mode 100644 index 00000000..e6d74fb8 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/resistivated_ga_as_wafer.png differ 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 00000000..762b273d Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/resistor_lithography_mask.png differ 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 00000000..4af43aa6 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/sod_323_packaging.png differ 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 00000000..ef8f49e2 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_deposited_alumina_wafer.png differ 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 00000000..319c8b53 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_resistivated_ga_as_wafer.png differ 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 00000000..03b613b4 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/spincoated_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/stabilized_voltage_regulator_board.png b/src/main/resources/assets/gtb/textures/items/metaitems/stabilized_voltage_regulator_board.png new file mode 100644 index 00000000..d0064200 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/stabilized_voltage_regulator_board.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/steel_source_casing.png b/src/main/resources/assets/gtb/textures/items/metaitems/steel_source_casing.png new file mode 100644 index 00000000..a0ac4977 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/steel_source_casing.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_cap_core.png b/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_cap_core.png new file mode 100644 index 00000000..d996bb44 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_cap_core.png differ 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 00000000..0abb81ee Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/tantalum_capacitor.png differ 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 00000000..246cb6b6 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/thin_kapton_k_sheet.png differ 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 00000000..36dd1cb8 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/top_electrode_deposited_substrate.png differ diff --git a/src/main/resources/assets/gtb/textures/items/metaitems/voltage_reference_core.png b/src/main/resources/assets/gtb/textures/items/metaitems/voltage_reference_core.png new file mode 100644 index 00000000..f923b91c Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/voltage_reference_core.png differ 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 00000000..cc64826e Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/yttrium_barium_cuprate_coil.png differ 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 00000000..828bc650 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/zener_diode_die.png differ 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 00000000..29cbd343 Binary files /dev/null and b/src/main/resources/assets/gtb/textures/items/metaitems/zener_junction_core.png differ 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" ]