Skip to content

Commit bd8fa8b

Browse files
authored
Add Large Rock Breaker (#321)
1 parent bc81504 commit bd8fa8b

File tree

7 files changed

+170
-18
lines changed

7 files changed

+170
-18
lines changed

dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ dependencies {
143143

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

149149
// Boot error fix

src/main/java/com/github/gtexpert/core/common/metatileentities/GTEMetaTileEntities.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class GTEMetaTileEntities {
1919
// Single Machine
2020

2121
// Multi Machine
22+
public static MetaTileEntityLargeRockBreaker LARGE_ROCK_BREAKER;
2223
public static MetaTileEntityLargeCrackingUnit LARGE_CRACKER;
2324
public static MetaTileEntityVoidOreMiner VOIDOREMINER;
2425
public static MetaTileEntityAdvancedChemicalPlant ADVANCED_CHEMICAL_PLANT;
@@ -29,7 +30,8 @@ public static void init() {
2930
// Free: 11004~11999
3031

3132
// Multi Machine
32-
// Free: 12000~12001
33+
LARGE_ROCK_BREAKER = registerMetaTileEntity(12001,
34+
new MetaTileEntityLargeRockBreaker(gteId("large_rock_breaker")));
3335
LARGE_CRACKER = registerMetaTileEntity(12002,
3436
new MetaTileEntityLargeCrackingUnit(gteId("large_cracking_unit")));
3537
VOIDOREMINER = registerMetaTileEntity(12003,
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package com.github.gtexpert.core.common.metatileentities.multi;
2+
3+
import java.util.List;
4+
5+
import net.minecraft.block.state.IBlockState;
6+
import net.minecraft.client.resources.I18n;
7+
import net.minecraft.item.ItemStack;
8+
import net.minecraft.util.ResourceLocation;
9+
import net.minecraft.util.SoundEvent;
10+
import net.minecraft.world.World;
11+
import net.minecraftforge.fml.relauncher.Side;
12+
import net.minecraftforge.fml.relauncher.SideOnly;
13+
14+
import org.jetbrains.annotations.NotNull;
15+
import org.jetbrains.annotations.Nullable;
16+
17+
import gregtech.api.gui.resources.TextureArea;
18+
import gregtech.api.metatileentity.MetaTileEntity;
19+
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
20+
import gregtech.api.metatileentity.multiblock.IMultiblockPart;
21+
import gregtech.api.metatileentity.multiblock.MultiblockAbility;
22+
import gregtech.api.pattern.BlockPattern;
23+
import gregtech.api.pattern.FactoryBlockPattern;
24+
import gregtech.api.pattern.TraceabilityPredicate;
25+
import gregtech.api.recipes.RecipeMaps;
26+
import gregtech.client.renderer.ICubeRenderer;
27+
import gregtech.client.renderer.texture.Textures;
28+
import gregtech.common.blocks.BlockBoilerCasing;
29+
import gregtech.common.blocks.BlockMetalCasing;
30+
import gregtech.common.blocks.MetaBlocks;
31+
import gregtech.core.sound.GTSoundEvents;
32+
33+
import gregicality.multiblocks.api.metatileentity.GCYMRecipeMapMultiblockController;
34+
35+
import com.github.gtexpert.core.api.gui.GTEGuiTextures;
36+
37+
public class MetaTileEntityLargeRockBreaker extends GCYMRecipeMapMultiblockController {
38+
39+
public MetaTileEntityLargeRockBreaker(ResourceLocation metaTileEntityId) {
40+
super(metaTileEntityId, RecipeMaps.ROCK_BREAKER_RECIPES);
41+
}
42+
43+
@Override
44+
public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
45+
return new MetaTileEntityLargeRockBreaker(metaTileEntityId);
46+
}
47+
48+
@NotNull
49+
@Override
50+
protected BlockPattern createStructurePattern() {
51+
TraceabilityPredicate casing = states(getCasingState());
52+
TraceabilityPredicate abilities = autoAbilities(true, true, true, true, false, false, false);
53+
return FactoryBlockPattern.start()
54+
.aisle("CXXXC", "CXXXC", "C C", "C C", "C C", "CCCCC", " C ", " ")
55+
.aisle("XCCCX", "X X", " ", " P ", " P ", "CPPPC", " CPC ", " C ")
56+
.aisle("XCCCX", "X X", " C ", " PCP ", " PCP ", "CPCPC", "CP#PC", " CHC ")
57+
.aisle("XCCCX", "X X", " ", " P ", " P ", "CPPPC", " CPC ", " C ")
58+
.aisle("CXTXC", "CXSXC", "C C", "C C", "C C", "CCCCC", " C ", " ")
59+
.where('S', selfPredicate())
60+
.where('C', casing)
61+
.where('X', casing.or(abilities))
62+
.where('P', states(getPipeCasingState()))
63+
.where('T', tieredCasing().or(states(getCasingState())))
64+
.where('H', abilities(MultiblockAbility.MUFFLER_HATCH))
65+
.where('#', air())
66+
.where(' ', any())
67+
.build();
68+
}
69+
70+
@Override
71+
public boolean allowsExtendedFacing() {
72+
return false;
73+
}
74+
75+
@Override
76+
public boolean allowsFlip() {
77+
return false;
78+
}
79+
80+
@Override
81+
public boolean isTiered() {
82+
return true;
83+
}
84+
85+
@Override
86+
public boolean canBeDistinct() {
87+
return true;
88+
}
89+
90+
@Override
91+
public boolean isParallel() {
92+
return true;
93+
}
94+
95+
@SideOnly(Side.CLIENT)
96+
@Override
97+
public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
98+
return Textures.SOLID_STEEL_CASING;
99+
}
100+
101+
protected IBlockState getPipeCasingState() {
102+
return MetaBlocks.BOILER_CASING.getState(BlockBoilerCasing.BoilerCasingType.STEEL_PIPE);
103+
}
104+
105+
protected IBlockState getCasingState() {
106+
return MetaBlocks.METAL_CASING.getState(BlockMetalCasing.MetalCasingType.STEEL_SOLID);
107+
}
108+
109+
@Override
110+
public SoundEvent getBreakdownSound() {
111+
return GTSoundEvents.BREAKDOWN_ELECTRICAL;
112+
}
113+
114+
@Override
115+
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
116+
super.addInformation(stack, player, tooltip, advanced);
117+
tooltip.add(I18n.format("gtexpert.machine.large_rock_breaker.tooltip.1"));
118+
}
119+
120+
@Override
121+
protected @NotNull TextureArea getLogo() {
122+
return GTEGuiTextures.GTE_LOGO_DARK;
123+
}
124+
125+
@Override
126+
protected @NotNull TextureArea getWarningLogo() {
127+
return GTEGuiTextures.GTE_LOGO_BLINKING_YELLOW;
128+
}
129+
130+
@Override
131+
protected @NotNull TextureArea getErrorLogo() {
132+
return GTEGuiTextures.GTE_LOGO_BLINKING_RED;
133+
}
134+
135+
@SideOnly(Side.CLIENT)
136+
@NotNull
137+
@Override
138+
protected ICubeRenderer getFrontOverlay() {
139+
return Textures.ROCK_BREAKER_OVERLAY;
140+
}
141+
}

src/main/java/com/github/gtexpert/core/integration/eio/recipes/EIOBlocksRecipe.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,25 @@ public static void init() {
8787
'Z', "skullZombieController");
8888

8989
// Electric Spawner
90-
MetaTileEntityLoader.registerMachineRecipe(true,
91-
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
92-
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
93-
'E', "skullSentientEnder",
94-
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
95-
'H', HULL,
96-
'C', "itemEnderCrystal",
97-
'Z', "skullZombieFrankenstein");
90+
if (GTEConfigHolder.gteFlag.peacefulFlag) {
91+
MetaTileEntityLoader.registerMachineRecipe(true,
92+
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
93+
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
94+
'E', "skullEnderResonator",
95+
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
96+
'H', HULL,
97+
'C', "itemEnderCrystal",
98+
'Z', "skullZombieController");
99+
} else {
100+
MetaTileEntityLoader.registerMachineRecipe(true,
101+
EIOMetaTileEntities.ELECTRIC_SPAWNER, "PEP", "SHS", "CZC",
102+
'P', new UnificationEntry(plate, GTEMaterials.ConstructionAlloy),
103+
'E', "skullSentientEnder",
104+
'S', new UnificationEntry(plate, GTEMaterials.Soularium),
105+
'H', HULL,
106+
'C', "itemEnderCrystal",
107+
'Z', "skullZombieFrankenstein");
108+
}
98109

99110
if (EnderIOConfigHolder.addShapelessRecipeMachines) {
100111
// Slice'N'Splice

src/main/resources/assets/gtexpert/lang/en_us.lang

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33

44
# multiblock
5-
gtexpert.machine.sawmill.name=Sawmill
6-
gtexpert.machine.sawmill.tooltip=Nooo! Do not saw me..
7-
gtexpert.machine.sawmill.tooltip.1=§dAuthor:§f @Quarri6343
5+
gtexpert.machine.large_rock_breaker.name=Large Rock Breaker
6+
gtexpert.machine.large_rock_breaker.tooltip=I want to destroy that thing and that thing
7+
gtexpert.machine.large_rock_breaker.tooltip.1=§dAuthor:§f @tier940
88
gtexpert.machine.void_ore_miner.name=Void Ore Miner
99
gtexpert.machine.void_ore_miner.tooltip=Stargate Builder
1010
gtexpert.machine.void_ore_miner.tooltip.1=§6Mines out 32 Ores based on the input Ore §r

src/main/resources/assets/gtexpert/lang/ja_jp.lang

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33

44
# multiblock
5-
gtexpert.machine.sawmill.name=製材機
6-
gtexpert.machine.sawmill.tooltip=うるさいからって電話を伐らないで..
7-
gtexpert.machine.sawmill.tooltip.1=§d作者:§f @Quarri6343
5+
gtexpert.machine.large_rock_breaker.name=大型破砕機
6+
gtexpert.machine.large_rock_breaker.tooltip=アレもコレも壊したい
7+
gtexpert.machine.large_rock_breaker.tooltip.1=§d作者:§f @tier940
88
gtexpert.machine.void_ore_miner.name=亜空間型鉱石採掘機
99
gtexpert.machine.void_ore_miner.tooltip=スターゲート建設機
1010
gtexpert.machine.void_ore_miner.tooltip.1=§6搬入された鉱石に基づいて32個の鉱石を掘り出します§r

src/main/resources/assets/gtexpert/lang/zh_cn.lang

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
# 中文翻译由 Quarri6343 翻译。
33

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

0 commit comments

Comments
 (0)