Skip to content

Commit

Permalink
Add Large Rock Breaker (#321)
Browse files Browse the repository at this point in the history
  • Loading branch information
tier940 authored Feb 10, 2025
1 parent bc81504 commit bd8fa8b
Show file tree
Hide file tree
Showing 7 changed files with 170 additions and 18 deletions.
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ dependencies {

// Debug GTFO
if (project.debug_all.toBoolean() || project.debug_gtfo.toBoolean()) {
runtimeOnlyNonPublishable rfg.deobf("curse.maven:gregtech-food-option-477021:5487400") // GTFO 1.11.2.1
runtimeOnlyNonPublishable rfg.deobf("curse.maven:gregtech-food-option-477021:6147619") // GTFO 1.12.4
}

// Boot error fix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class GTEMetaTileEntities {
// Single Machine

// Multi Machine
public static MetaTileEntityLargeRockBreaker LARGE_ROCK_BREAKER;
public static MetaTileEntityLargeCrackingUnit LARGE_CRACKER;
public static MetaTileEntityVoidOreMiner VOIDOREMINER;
public static MetaTileEntityAdvancedChemicalPlant ADVANCED_CHEMICAL_PLANT;
Expand All @@ -29,7 +30,8 @@ public static void init() {
// Free: 11004~11999

// Multi Machine
// Free: 12000~12001
LARGE_ROCK_BREAKER = registerMetaTileEntity(12001,
new MetaTileEntityLargeRockBreaker(gteId("large_rock_breaker")));
LARGE_CRACKER = registerMetaTileEntity(12002,
new MetaTileEntityLargeCrackingUnit(gteId("large_cracking_unit")));
VOIDOREMINER = registerMetaTileEntity(12003,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
package com.github.gtexpert.core.common.metatileentities.multi;

import java.util.List;

import net.minecraft.block.state.IBlockState;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import gregtech.api.gui.resources.TextureArea;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
import gregtech.api.metatileentity.multiblock.IMultiblockPart;
import gregtech.api.metatileentity.multiblock.MultiblockAbility;
import gregtech.api.pattern.BlockPattern;
import gregtech.api.pattern.FactoryBlockPattern;
import gregtech.api.pattern.TraceabilityPredicate;
import gregtech.api.recipes.RecipeMaps;
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 gregtech.core.sound.GTSoundEvents;

import gregicality.multiblocks.api.metatileentity.GCYMRecipeMapMultiblockController;

import com.github.gtexpert.core.api.gui.GTEGuiTextures;

public class MetaTileEntityLargeRockBreaker extends GCYMRecipeMapMultiblockController {

public MetaTileEntityLargeRockBreaker(ResourceLocation metaTileEntityId) {
super(metaTileEntityId, RecipeMaps.ROCK_BREAKER_RECIPES);
}

@Override
public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
return new MetaTileEntityLargeRockBreaker(metaTileEntityId);
}

@NotNull
@Override
protected BlockPattern createStructurePattern() {
TraceabilityPredicate casing = states(getCasingState());
TraceabilityPredicate abilities = autoAbilities(true, true, true, true, false, false, false);
return FactoryBlockPattern.start()
.aisle("CXXXC", "CXXXC", "C C", "C C", "C C", "CCCCC", " C ", " ")
.aisle("XCCCX", "X X", " ", " P ", " P ", "CPPPC", " CPC ", " C ")
.aisle("XCCCX", "X X", " C ", " PCP ", " PCP ", "CPCPC", "CP#PC", " CHC ")
.aisle("XCCCX", "X X", " ", " P ", " P ", "CPPPC", " CPC ", " C ")
.aisle("CXTXC", "CXSXC", "C C", "C C", "C C", "CCCCC", " C ", " ")
.where('S', selfPredicate())
.where('C', casing)
.where('X', casing.or(abilities))
.where('P', states(getPipeCasingState()))
.where('T', tieredCasing().or(states(getCasingState())))
.where('H', abilities(MultiblockAbility.MUFFLER_HATCH))
.where('#', air())
.where(' ', any())
.build();
}

@Override
public boolean allowsExtendedFacing() {
return false;
}

@Override
public boolean allowsFlip() {
return false;
}

@Override
public boolean isTiered() {
return true;
}

@Override
public boolean canBeDistinct() {
return true;
}

@Override
public boolean isParallel() {
return true;
}

@SideOnly(Side.CLIENT)
@Override
public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
return Textures.SOLID_STEEL_CASING;
}

protected IBlockState getPipeCasingState() {
return MetaBlocks.BOILER_CASING.getState(BlockBoilerCasing.BoilerCasingType.STEEL_PIPE);
}

protected IBlockState getCasingState() {
return MetaBlocks.METAL_CASING.getState(BlockMetalCasing.MetalCasingType.STEEL_SOLID);
}

@Override
public SoundEvent getBreakdownSound() {
return GTSoundEvents.BREAKDOWN_ELECTRICAL;
}

@Override
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, advanced);
tooltip.add(I18n.format("gtexpert.machine.large_rock_breaker.tooltip.1"));
}

@Override
protected @NotNull TextureArea getLogo() {
return GTEGuiTextures.GTE_LOGO_DARK;
}

@Override
protected @NotNull TextureArea getWarningLogo() {
return GTEGuiTextures.GTE_LOGO_BLINKING_YELLOW;
}

@Override
protected @NotNull TextureArea getErrorLogo() {
return GTEGuiTextures.GTE_LOGO_BLINKING_RED;
}

@SideOnly(Side.CLIENT)
@NotNull
@Override
protected ICubeRenderer getFrontOverlay() {
return Textures.ROCK_BREAKER_OVERLAY;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,25 @@ public static void init() {
'Z', "skullZombieController");

// Electric Spawner
MetaTileEntityLoader.registerMachineRecipe(true,
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
'E', "skullSentientEnder",
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
'H', HULL,
'C', "itemEnderCrystal",
'Z', "skullZombieFrankenstein");
if (GTEConfigHolder.gteFlag.peacefulFlag) {
MetaTileEntityLoader.registerMachineRecipe(true,
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
'E', "skullEnderResonator",
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
'H', HULL,
'C', "itemEnderCrystal",
'Z', "skullZombieController");
} else {
MetaTileEntityLoader.registerMachineRecipe(true,
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
'E', "skullSentientEnder",
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
'H', HULL,
'C', "itemEnderCrystal",
'Z', "skullZombieFrankenstein");
}

if (EnderIOConfigHolder.addShapelessRecipeMachines) {
// Slice'N'Splice
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/assets/gtexpert/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@


# multiblock
gtexpert.machine.sawmill.name=Sawmill
gtexpert.machine.sawmill.tooltip=Nooo! Do not saw me..
gtexpert.machine.sawmill.tooltip.1=§dAuthor:§f @Quarri6343
gtexpert.machine.large_rock_breaker.name=Large Rock Breaker
gtexpert.machine.large_rock_breaker.tooltip=I want to destroy that thing and that thing
gtexpert.machine.large_rock_breaker.tooltip.1=§dAuthor:§f @tier940
gtexpert.machine.void_ore_miner.name=Void Ore Miner
gtexpert.machine.void_ore_miner.tooltip=Stargate Builder
gtexpert.machine.void_ore_miner.tooltip.1=§6Mines out 32 Ores based on the input Ore §r
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/assets/gtexpert/lang/ja_jp.lang
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@


# multiblock
gtexpert.machine.sawmill.name=製材機
gtexpert.machine.sawmill.tooltip=うるさいからって電話を伐らないで..
gtexpert.machine.sawmill.tooltip.1=§d作者:§f @Quarri6343
gtexpert.machine.large_rock_breaker.name=大型破砕機
gtexpert.machine.large_rock_breaker.tooltip=アレもコレも壊したい
gtexpert.machine.large_rock_breaker.tooltip.1=§d作者:§f @tier940
gtexpert.machine.void_ore_miner.name=亜空間型鉱石採掘機
gtexpert.machine.void_ore_miner.tooltip=スターゲート建設機
gtexpert.machine.void_ore_miner.tooltip.1=§6搬入された鉱石に基づいて32個の鉱石を掘り出します§r
Expand Down
2 changes: 0 additions & 2 deletions src/main/resources/assets/gtexpert/lang/zh_cn.lang
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
# 中文翻译由 Quarri6343 翻译。

# multiblock
gtexpert.machine.sawmill.name=锯木机
gtexpert.machine.sawmill.tooltip=Nooooo!不要砍我...
gtexpert.machine.void_ore_miner.name=虚空矿物采掘机
gtexpert.machine.void_ore_miner.tooltip=星门建造机
gtexpert.machine.void_ore_miner.tooltip.1=§6采掘32个矿石基于输入的矿石§r
Expand Down

0 comments on commit bd8fa8b

Please sign in to comment.