Skip to content

Commit ecffb3f

Browse files
committed
重构大型土高炉,大型焦炉
1 parent 216b0cf commit ecffb3f

File tree

12 files changed

+840
-84
lines changed

12 files changed

+840
-84
lines changed

src/main/java/com/hepdd/easytech/api/enums/ETHItemList.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
public enum ETHItemList {
1212

13-
Machine_Big_Bricked_BlastFurnace,
14-
Machine_Big_Coke_Oven,
13+
Machine_Large_Bricked_BlastFurnace,
14+
Machine_Large_Coke_Oven,
1515

1616
Hatch_Input_Primitive,
1717
Hatch_Output_Primitive,
Lines changed: 12 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,21 @@
11
package com.hepdd.easytech.api.enums;
22

3-
import static gregtech.api.enums.Mods.GregTech;
3+
public enum ETHTextures {
44

5-
import net.minecraft.client.renderer.texture.TextureMap;
6-
import net.minecraft.util.IIcon;
7-
import net.minecraft.util.ResourceLocation;
5+
MACHINE_CASING_COKEOVEN(2688),
6+
MACHINE_CASING_COKEOVEN_INACTIVE(2689),
7+
MACHINE_CASING_COKEOVEN_ACTIVE(2690),
88

9-
import gregtech.api.GregTechAPI;
10-
import gregtech.api.interfaces.IIconContainer;
9+
MACHINE_CASING_PRIMITIVE_BLASE_FURNACE(2691),
10+
MACHINE_CASING_PRIMITIVE_BLASE_FURNACE_INACTIVE(2692),
11+
MACHINE_CASING_PRIMITIVE_BLASE_FURNACE_ACTIVE(2693),
12+
MACHINE_CASING_PRIMITIVE_BLASE_FURNACE_ACTIVE_GLOW(2692),
1113

12-
public class ETHTextures {
14+
;
1315

14-
public enum BlockIcons {
16+
public final int ID;
1517

16-
MACHINE_CASING_COKEOVEN_INACTIVE,
17-
MACHINE_CASING_COKEOVEN_ACTIVE,
18-
MACHINE_CASING_COKEOVEN;
19-
20-
public static class CustomIcon implements IIconContainer, Runnable {
21-
22-
protected IIcon mIcon;
23-
protected String mIconName;
24-
25-
public CustomIcon(String aIconName) {
26-
mIconName = !aIconName.contains(":") ? GregTech.getResourcePath(aIconName) : aIconName;
27-
GregTechAPI.sGTBlockIconload.add(this);
28-
}
29-
30-
@Override
31-
public void run() {
32-
mIcon = GregTechAPI.sBlockIcons.registerIcon(mIconName);
33-
}
34-
35-
@Override
36-
public IIcon getIcon() {
37-
return mIcon;
38-
}
39-
40-
@Override
41-
public IIcon getOverlayIcon() {
42-
return null;
43-
}
44-
45-
@Override
46-
public ResourceLocation getTextureFile() {
47-
return TextureMap.locationBlocksTexture;
48-
}
49-
}
18+
ETHTextures(int ID) {
19+
this.ID = ID;
5020
}
5121
}

src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHHatchInput.java renamed to src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHPrimitiveHatchInput.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@
1414
import gregtech.api.metatileentity.implementations.MTEHatchInput;
1515
import gregtech.api.render.TextureFactory;
1616

17-
public class ETHHatchInput extends MTEHatchInput {
17+
public class ETHPrimitiveHatchInput extends MTEHatchInput {
1818

19-
public ETHHatchInput(int aID, int aSlot, String aName, String aNameRegional, int aTier) {
19+
public ETHPrimitiveHatchInput(int aID, int aSlot, String aName, String aNameRegional, int aTier) {
2020
super(aID, aSlot, aName, aNameRegional, aTier);
2121
}
2222

23-
public ETHHatchInput(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
23+
public ETHPrimitiveHatchInput(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
2424
super(aName, aTier, aDescription, aTextures);
2525
}
2626

2727
@Override
2828
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
29-
return new ETHHatchInput(mName, mTier, mDescriptionArray, mTextures);
29+
return new ETHPrimitiveHatchInput(mName, mTier, mDescriptionArray, mTextures);
3030
}
3131

3232
@Override
@@ -72,5 +72,7 @@ public int getCapacity() {
7272
}
7373

7474
@Override
75-
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {}
75+
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
76+
super.addUIWidgets(builder, buildContext);
77+
}
7678
}

src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHHatchInputBus.java renamed to src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHPrimitiveHatchInputBus.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@
1515
import gregtech.api.metatileentity.implementations.MTEHatchInputBus;
1616
import gregtech.api.render.TextureFactory;
1717

18-
public class ETHHatchInputBus extends MTEHatchInputBus {
18+
public class ETHPrimitiveHatchInputBus extends MTEHatchInputBus {
1919

20-
public ETHHatchInputBus(int id, String name, String nameRegional, int tier) {
20+
public ETHPrimitiveHatchInputBus(int id, String name, String nameRegional, int tier) {
2121
super(id, name, nameRegional, tier);
2222
}
2323

24-
public ETHHatchInputBus(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
24+
public ETHPrimitiveHatchInputBus(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
2525
super(aName, aTier, aDescription, aTextures);
2626
}
2727

2828
@Override
2929
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
30-
return new ETHHatchInputBus(mName, mTier, mDescriptionArray, mTextures);
30+
return new ETHPrimitiveHatchInputBus(mName, mTier, mDescriptionArray, mTextures);
3131
}
3232

3333
@Override
@@ -78,6 +78,6 @@ public boolean allowSelectCircuit() {
7878

7979
@Override
8080
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
81-
81+
getBaseMetaTileEntity().add1by1Slot(builder);
8282
}
8383
}

src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHHatchOutput.java renamed to src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHPrimitiveHatchOutput.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@
1515
import gregtech.api.metatileentity.implementations.MTEHatchOutput;
1616
import gregtech.api.render.TextureFactory;
1717

18-
public class ETHHatchOutput extends MTEHatchOutput {
18+
public class ETHPrimitiveHatchOutput extends MTEHatchOutput {
1919

20-
public ETHHatchOutput(int aID, String aName, String aNameRegional, int aTier) {
20+
public ETHPrimitiveHatchOutput(int aID, String aName, String aNameRegional, int aTier) {
2121
super(aID, aName, aNameRegional, aTier);
2222
}
2323

24-
public ETHHatchOutput(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
24+
public ETHPrimitiveHatchOutput(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
2525
super(aName, aTier, aDescription, aTextures);
2626
}
2727

2828
@Override
2929
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
30-
return new ETHHatchOutput(mName, mTier, mDescriptionArray, mTextures);
30+
return new ETHPrimitiveHatchOutput(mName, mTier, mDescriptionArray, mTextures);
3131
}
3232

3333
@Override
@@ -79,5 +79,7 @@ public int getCapacity() {
7979
}
8080

8181
@Override
82-
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {}
82+
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
83+
super.addUIWidgets(builder, buildContext);
84+
}
8385
}

src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHHatchOutputBus.java renamed to src/main/java/com/hepdd/easytech/api/metatileentity/implementations/ETHPrimitiveHatchOutputBus.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,25 @@
88
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
99

1010
import gregtech.api.enums.Textures;
11-
import gregtech.api.gui.widgets.PhantomItemButton;
1211
import gregtech.api.interfaces.ITexture;
1312
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
1413
import gregtech.api.metatileentity.MetaTileEntity;
1514
import gregtech.api.metatileentity.implementations.MTEHatchOutputBus;
1615
import gregtech.api.render.TextureFactory;
1716

18-
public class ETHHatchOutputBus extends MTEHatchOutputBus {
17+
public class ETHPrimitiveHatchOutputBus extends MTEHatchOutputBus {
1918

20-
public ETHHatchOutputBus(int aID, String aName, String aNameRegional, int aTier) {
19+
public ETHPrimitiveHatchOutputBus(int aID, String aName, String aNameRegional, int aTier) {
2120
super(aID, aName, aNameRegional, aTier);
2221
}
2322

24-
public ETHHatchOutputBus(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
23+
public ETHPrimitiveHatchOutputBus(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
2524
super(aName, aTier, aDescription, aTextures);
2625
}
2726

2827
@Override
2928
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
30-
return new ETHHatchOutputBus(mName, mTier, mDescriptionArray, mTextures);
29+
return new ETHPrimitiveHatchOutputBus(mName, mTier, mDescriptionArray, mTextures);
3130
}
3231

3332
@Override
@@ -66,8 +65,9 @@ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aInde
6665

6766
@Override
6867
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
69-
builder.widget(
70-
new PhantomItemButton(this).setPos(getGUIWidth() - 25, 40)
71-
.setBackground(PhantomItemButton.FILTER_BACKGROUND));
68+
// builder.widget(
69+
// new PhantomItemButton(this).setPos(getGUIWidth() - 25, 40)
70+
// .setBackground(PhantomItemButton.FILTER_BACKGROUND));
71+
super.addUIWidgets(builder, buildContext);
7272
}
7373
}
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package com.hepdd.easytech.api.metatileentity.implementations.base;
2+
3+
import static gregtech.api.enums.GTValues.V;
4+
5+
import java.util.ArrayList;
6+
import java.util.stream.Stream;
7+
8+
import net.minecraft.block.Block;
9+
import net.minecraft.item.ItemStack;
10+
import net.minecraft.tileentity.TileEntityFurnace;
11+
import net.minecraftforge.common.util.ForgeDirection;
12+
13+
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
14+
15+
import gregtech.api.enums.Materials;
16+
import gregtech.api.enums.Textures;
17+
import gregtech.api.interfaces.ITexture;
18+
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
19+
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
20+
import gregtech.api.logic.ProcessingLogic;
21+
import gregtech.api.util.GTOreDictUnificator;
22+
import gregtech.api.util.GTUtility;
23+
import gregtech.api.util.MultiblockTooltipBuilder;
24+
import gregtech.api.util.shutdown.ShutDownReasonRegistry;
25+
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GTPPMultiBlockBase;
26+
27+
public abstract class ETHFuelMultiBase<T extends ETHFuelMultiBase<T>> extends GTPPMultiBlockBase<T> {
28+
29+
private int intBurnTime = 0;
30+
31+
public ETHFuelMultiBase(int aID, String aName, String aNameRegional) {
32+
super(aID, aName, aNameRegional);
33+
}
34+
35+
@Override
36+
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final ForgeDirection side,
37+
final ForgeDirection facing, final int aColorIndex, final boolean aActive, final boolean aRedstone) {
38+
if (side == facing) {
39+
return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(getCasingTextureIndex()),
40+
aActive ? getFrontOverlayActive() : getFrontOverlay() };
41+
}
42+
return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(getCasingTextureIndex()) };
43+
}
44+
45+
@Override
46+
protected ProcessingLogic createProcessingLogic() {
47+
return new ProcessingLogic().setMaxParallelSupplier(this::getMaxParallelRecipes);
48+
}
49+
50+
@Override
51+
protected void setProcessingLogicPower(ProcessingLogic logic) {
52+
logic.setAvailableVoltage(V[0]);
53+
// We need to trick the GT_ParallelHelper we have enough amps for all recipe parallels.
54+
logic.setAvailableAmperage(getMaxParallelRecipes());
55+
logic.setAmperageOC(false);
56+
}
57+
58+
protected abstract int getCasingTextureIndex();
59+
60+
protected abstract ITexture getFrontOverlay();
61+
62+
protected abstract ITexture getFrontOverlayActive();
63+
64+
@Override
65+
public abstract String getMachineType();
66+
67+
@Override
68+
public abstract int getMaxParallelRecipes();
69+
70+
@Override
71+
public abstract void construct(ItemStack stackSize, boolean hintsOnly);
72+
73+
@Override
74+
public abstract IStructureDefinition getStructureDefinition();
75+
76+
@Override
77+
protected abstract MultiblockTooltipBuilder createTooltip();
78+
79+
@Override
80+
public abstract boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack);
81+
82+
@Override
83+
public abstract IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity);
84+
85+
@Override
86+
public boolean onRunningTick(ItemStack aStack) {
87+
if (lEUt < 0) {
88+
if (!tryConsumeFuel(1)) {
89+
stopMachine(ShutDownReasonRegistry.POWER_LOSS);
90+
return false;
91+
}
92+
}
93+
return true;
94+
}
95+
96+
private boolean tryConsumeFuel(int aFuelVal) {
97+
if (this.intBurnTime - aFuelVal < 0) {
98+
int addedFuel = tryAddFuelValue();
99+
if (addedFuel <= 0) return false;
100+
this.intBurnTime += addedFuel;
101+
return tryConsumeFuel(aFuelVal);
102+
} else {
103+
this.intBurnTime -= aFuelVal;
104+
}
105+
return true;
106+
}
107+
108+
private int tryAddFuelValue() {
109+
ArrayList<ItemStack> inputs = getStoredInputs();
110+
for (ItemStack itemStack : inputs) {
111+
String lowerCaseBlockName = Block.getBlockFromItem(itemStack.getItem())
112+
.getUnlocalizedName()
113+
.toLowerCase();
114+
if (couldFuel(itemStack, lowerCaseBlockName)) {
115+
int burnTime = TileEntityFurnace.getItemBurnTime(itemStack);
116+
ItemStack fuel = ItemStack.copyItemStack(itemStack);
117+
fuel.stackSize = 1;
118+
depleteInput(fuel);
119+
return burnTime;
120+
}
121+
}
122+
return 0;
123+
}
124+
125+
private static boolean couldFuel(ItemStack fuel, String lowerCaseBlockName) {
126+
return GTUtility.isPartOfMaterials(fuel, Materials.Coal) || GTUtility.isPartOfMaterials(fuel, Materials.Lignite)
127+
|| lowerCaseBlockName.matches("tile\\..+compressedcoal")
128+
|| GTUtility.isPartOfMaterials(fuel, Materials.Charcoal)
129+
|| (Stream.of("^tile\\..+charcoal", "^tile\\..+coke", "^tile\\..+railcraft.cube")
130+
.anyMatch(lowerCaseBlockName::matches))
131+
|| Stream.of("fuelCoke", "fuelCactusCharcoal", "fuelCactusCoke", "fuelSugarCharcoal", "fuelSugarCoke")
132+
.anyMatch(name -> GTOreDictUnificator.isItemStackInstanceOf(fuel, name));
133+
}
134+
}

0 commit comments

Comments
 (0)