Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Large Rock Breaker #321

Merged
merged 3 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
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