Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4f47a25
udpate 'zone.rong:mixinbooter:8.9'
BLocky104 Jun 22, 2025
114108c
include pyrotechg, ae2, galacticraft to dependencies
BLocky104 Jun 22, 2025
96d21db
update mod version to 0.9
BLocky104 Jun 22, 2025
3ee367c
update readme
BLocky104 Jun 22, 2025
287466e
PRECISION_LASER_RECIPES Recipemap
BLocky104 Jun 22, 2025
66427ab
fix Curing Oven Overlay
BLocky104 Jun 22, 2025
199fde6
Create BlockPlaceAbility.java
BLocky104 Jun 22, 2025
8b04c40
add Rocket Block Base
BLocky104 Jun 22, 2025
9485253
Fix Overlays
BLocky104 Jun 22, 2025
db1f48c
Update MetaTileEntityCuringOven.java
BLocky104 Jun 22, 2025
76017ce
Create MetaTileEntityPrecisionLaser.java
BLocky104 Jun 22, 2025
a2493ce
Create MetaTileEntityRocketLaunchPad.java
BLocky104 Jun 22, 2025
1543beb
apply Spotless
BLocky104 Jun 22, 2025
990edb9
RecipeMaps.FORMING_PRESS_RECIPES.setMaxFluidInputs(2);
BLocky104 Jun 22, 2025
282d269
Delete concentrate.png
BLocky104 Jun 22, 2025
e4abf01
Textures
BLocky104 Jun 22, 2025
74d1abd
added proper dependencies
tekcay Jun 24, 2025
1e508fc
Revert "udpate 'zone.rong:mixinbooter:8.9'"
tekcay Jun 24, 2025
6949114
Revert "update readme"
tekcay Jun 24, 2025
bd4f191
Revert "Update MetaTileEntityCuringOven.java"
tekcay Jun 24, 2025
8aa1d0a
fixed rocket launch pad structure pattern
tekcay Jun 24, 2025
1c19d9b
useless override
tekcay Jun 24, 2025
4d0460a
Update GTBRecipeMaps.java
BLocky104 Jun 25, 2025
14df0f6
Update GTBTextures.java
BLocky104 Jun 25, 2025
dd00844
Update GTBMultiblockCasing2.java
BLocky104 Jun 25, 2025
b51a1c2
Update GTBMetaTileEntities.java
BLocky104 Jun 25, 2025
131012e
Create MetaTileEntityAlloyKiln.java
BLocky104 Jun 25, 2025
8ef01ca
Update MetaTileEntityCuringOven.java
BLocky104 Jun 25, 2025
21ddf29
Create MetaTileEntityRocketAssemblingMachine.java
BLocky104 Jun 25, 2025
2b1a320
Update MetaTileEntityRocketLaunchPad.java
BLocky104 Jun 25, 2025
8a4b46e
Create MixinEntityLanderBase.java
BLocky104 Jun 25, 2025
231f0e3
Textures
BLocky104 Jun 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@


//file:noinspection DependencyNotationArgument
// TODO remove when fixed in RFG ^
/*
Expand Down Expand Up @@ -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"
Expand Down
10 changes: 4 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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.
Expand All @@ -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.

Expand All @@ -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
Expand Down
1 change: 0 additions & 1 deletion src/main/java/gtb/GregtechBeyondCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
17 changes: 14 additions & 3 deletions src/main/java/gtb/api/recipes/GTBRecipeMaps.java
Original file line number Diff line number Diff line change
Expand Up @@ -307,9 +307,6 @@ public final class GTBRecipeMaps {
public static final RecipeMap<SimpleRecipeBuilder> HIGH_VACUUM_EVAPORATION_RECIPES = new RecipeMap<>(
"high_vacuum_evaporation_recipes", 2, 1, 1, 1, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> CRUCIBLE_RECIPES = new RecipeMap<>(
"crucible", 4, 1, 2, 1, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> ATOMIC_LAYER_DEPOSITION_RECIPES = new RecipeMap<>(
"atomic_layer_deposition", 4, 1, 2, 0, new SimpleRecipeBuilder(), false);

Expand All @@ -334,4 +331,18 @@ public final class GTBRecipeMaps {
public static final RecipeMap<SimpleRecipeBuilder> TUBE_FURNACE_RECIPES = new RecipeMap<>(
"tube_furnace", 4, 4, 2, 2, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> PRECISION_LASER_RECIPES = new RecipeMap<>(
"precision_laser", 4, 2, 1, 1, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> ROCKET_LAUNCH_PAD_RECIPES = new RecipeMap<>(
"rocket_launch_pad", 4, 2, 1, 1, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> ROCKET_ASSEMBLY_RECIPES = new RecipeMap<>(
"rocket_assembly_recipes", 16, 1, 4, 0, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> ALLOY_KILN = new RecipeMap<>(
"alloy_kiln", 2, 2, 2, 1, new SimpleRecipeBuilder(), false);

public static final RecipeMap<SimpleRecipeBuilder> CRUCIBLE_RECIPES = new RecipeMap<>(
"crucible_recipes", 2, 2, 2, 1, new SimpleRecipeBuilder(), false);
}
6 changes: 4 additions & 2 deletions src/main/java/gtb/api/render/GTBTextures.java
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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() {}

Expand Down
40 changes: 40 additions & 0 deletions src/main/java/gtb/common/block/blocks/BlockPlaceAbility.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
18 changes: 15 additions & 3 deletions src/main/java/gtb/common/metatileentities/GTBMetaTileEntities.java
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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",
Expand All @@ -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(
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -63,7 +64,7 @@ private static IBlockState getPipeState() {

@Nonnull
@Override
protected ICubeRenderer getFrontOverlay() {
protected OrientedOverlayRenderer getFrontOverlay() {
return GTBTextures.CURING_OVEN_OVERLAY;
}

Expand Down
Loading