diff --git a/dependencies.gradle b/dependencies.gradle index 83e70ce6..8c8f2423 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -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 diff --git a/src/main/java/com/github/gtexpert/core/common/metatileentities/GTEMetaTileEntities.java b/src/main/java/com/github/gtexpert/core/common/metatileentities/GTEMetaTileEntities.java index 45526f06..ebbf35a6 100644 --- a/src/main/java/com/github/gtexpert/core/common/metatileentities/GTEMetaTileEntities.java +++ b/src/main/java/com/github/gtexpert/core/common/metatileentities/GTEMetaTileEntities.java @@ -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; @@ -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, diff --git a/src/main/java/com/github/gtexpert/core/common/metatileentities/multi/MetaTileEntityLargeRockBreaker.java b/src/main/java/com/github/gtexpert/core/common/metatileentities/multi/MetaTileEntityLargeRockBreaker.java new file mode 100644 index 00000000..e9b1e5be --- /dev/null +++ b/src/main/java/com/github/gtexpert/core/common/metatileentities/multi/MetaTileEntityLargeRockBreaker.java @@ -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 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; + } +} diff --git a/src/main/java/com/github/gtexpert/core/integration/eio/recipes/EIOBlocksRecipe.java b/src/main/java/com/github/gtexpert/core/integration/eio/recipes/EIOBlocksRecipe.java index da215a81..1a52d899 100644 --- a/src/main/java/com/github/gtexpert/core/integration/eio/recipes/EIOBlocksRecipe.java +++ b/src/main/java/com/github/gtexpert/core/integration/eio/recipes/EIOBlocksRecipe.java @@ -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 diff --git a/src/main/resources/assets/gtexpert/lang/en_us.lang b/src/main/resources/assets/gtexpert/lang/en_us.lang index 5104e185..b24f2109 100644 --- a/src/main/resources/assets/gtexpert/lang/en_us.lang +++ b/src/main/resources/assets/gtexpert/lang/en_us.lang @@ -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 diff --git a/src/main/resources/assets/gtexpert/lang/ja_jp.lang b/src/main/resources/assets/gtexpert/lang/ja_jp.lang index cba15383..58263bc9 100644 --- a/src/main/resources/assets/gtexpert/lang/ja_jp.lang +++ b/src/main/resources/assets/gtexpert/lang/ja_jp.lang @@ -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 diff --git a/src/main/resources/assets/gtexpert/lang/zh_cn.lang b/src/main/resources/assets/gtexpert/lang/zh_cn.lang index a89cfba2..a66d39d7 100644 --- a/src/main/resources/assets/gtexpert/lang/zh_cn.lang +++ b/src/main/resources/assets/gtexpert/lang/zh_cn.lang @@ -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