Skip to content

Commit dc81fa8

Browse files
committed
port the Buffer to CEu
1 parent fa1b388 commit dc81fa8

File tree

6 files changed

+153
-1
lines changed

6 files changed

+153
-1
lines changed

src/main/java/gregtech/api/render/Textures.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public class Textures {
181181
public static final SimpleOverlayRenderer STEAM_VENT_OVERLAY = new SimpleOverlayRenderer("overlay/machine/steam_vent");
182182
public static final SimpleOverlayRenderer QUANTUM_TANK_OVERLAY = new SimpleOverlayRenderer("overlay/machine/overlay_qtank");
183183
public static final SimpleOverlayRenderer QUANTUM_CHEST_OVERLAY = new SimpleOverlayRenderer("overlay/machine/overlay_qchest");
184+
public static final SimpleOverlayRenderer BUFFER_OVERLAY = new SimpleOverlayRenderer("overlay/machine/overlay_buffer");
184185

185186
static {
186187
for (int i = 0; i < VOLTAGE_CASINGS.length; i++) {

src/main/java/gregtech/common/metatileentities/MetaTileEntities.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ public class MetaTileEntities {
187187

188188
public static final MetaTileEntityQuantumChest[] QUANTUM_CHEST = new MetaTileEntityQuantumChest[10];
189189
public static final MetaTileEntityQuantumTank[] QUANTUM_TANK = new MetaTileEntityQuantumTank[10];
190+
public static final MetaTileEntityBuffer[] BUFFER = new MetaTileEntityBuffer[3];
190191

191192
//MISC MACHINES SECTION
192193
public static MetaTileEntityWorkbench WORKBENCH;
@@ -534,7 +535,11 @@ public static void init() {
534535
GregTechAPI.registerMetaTileEntity(1480 + ENERGY_INPUT_HATCH.length - 1, ENERGY_INPUT_HATCH[ENERGY_INPUT_HATCH.length - 1]);
535536
GregTechAPI.registerMetaTileEntity(1495 + ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1, ENERGY_OUTPUT_HATCH_ADJUSTABLE[ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1]);
536537

537-
// Free Range: 1510-1514
538+
BUFFER[0] = GregTechAPI.registerMetaTileEntity(1510, new MetaTileEntityBuffer(gregtechId("buffer.lv"), 1));
539+
BUFFER[1] = GregTechAPI.registerMetaTileEntity(1511, new MetaTileEntityBuffer(gregtechId("buffer.mv"), 2));
540+
BUFFER[2] = GregTechAPI.registerMetaTileEntity(1512, new MetaTileEntityBuffer(gregtechId("buffer.hv"), 3));
541+
542+
// Free Range: 1513-1514
538543

539544
// Fishers, IDs 1515-1529
540545
FISHER[0] = GregTechAPI.registerMetaTileEntity(1515, new MetaTileEntityFisher(gregtechId("fisher.lv"), 1));
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package gregtech.common.metatileentities.storage;
2+
3+
import codechicken.lib.render.CCRenderState;
4+
import codechicken.lib.render.pipeline.ColourMultiplier;
5+
import codechicken.lib.render.pipeline.IVertexOperation;
6+
import codechicken.lib.vec.Matrix4;
7+
import gregtech.api.capability.impl.FilteredFluidHandler;
8+
import gregtech.api.capability.impl.FluidTankList;
9+
import gregtech.api.gui.GuiTextures;
10+
import gregtech.api.gui.ModularUI;
11+
import gregtech.api.gui.widgets.TankWidget;
12+
import gregtech.api.metatileentity.ITieredMetaTileEntity;
13+
import gregtech.api.metatileentity.MetaTileEntity;
14+
import gregtech.api.metatileentity.MetaTileEntityHolder;
15+
import gregtech.api.render.Textures;
16+
import gregtech.api.util.GTUtility;
17+
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
18+
import net.minecraft.client.resources.I18n;
19+
import net.minecraft.entity.player.EntityPlayer;
20+
import net.minecraft.item.ItemStack;
21+
import net.minecraft.nbt.NBTTagCompound;
22+
import net.minecraft.util.EnumFacing;
23+
import net.minecraft.util.ResourceLocation;
24+
import net.minecraft.world.World;
25+
import net.minecraftforge.items.ItemStackHandler;
26+
import org.apache.commons.lang3.ArrayUtils;
27+
import org.apache.commons.lang3.tuple.Pair;
28+
29+
import javax.annotation.Nullable;
30+
import java.util.List;
31+
32+
public class MetaTileEntityBuffer extends MetaTileEntity implements ITieredMetaTileEntity {
33+
34+
private final int tier;
35+
36+
private FluidTankList fluidTankList;
37+
private ItemStackHandler itemStackHandler;
38+
39+
public MetaTileEntityBuffer(ResourceLocation metaTileEntityId, int tier) {
40+
super(metaTileEntityId);
41+
this.tier = tier;
42+
initializeInventory();
43+
}
44+
45+
@Override
46+
protected void initializeInventory() {
47+
super.initializeInventory();
48+
FilteredFluidHandler[] fluidHandlers = new FilteredFluidHandler[tier + 2];
49+
for (int i = 0; i < tier + 2; i++) {
50+
fluidHandlers[i] = new FilteredFluidHandler(64000);
51+
}
52+
fluidInventory = fluidTankList = new FluidTankList(false, fluidHandlers);
53+
itemInventory = itemStackHandler = new ItemStackHandler((int)Math.pow(tier + 2, 2));
54+
}
55+
56+
@Override
57+
public MetaTileEntity createMetaTileEntity(MetaTileEntityHolder holder) {
58+
return new MetaTileEntityBuffer(metaTileEntityId, tier);
59+
}
60+
61+
@Override
62+
public Pair<TextureAtlasSprite, Integer> getParticleTexture() {
63+
return Pair.of(Textures.VOLTAGE_CASINGS[tier].getParticleSprite(), this.getPaintingColor());
64+
}
65+
66+
@Override
67+
protected ModularUI createUI(EntityPlayer entityPlayer) {
68+
int invTier = tier + 2;
69+
ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND,
70+
176, Math.max(166, 18 + 18 * invTier + 94));//176, 166
71+
for (int i = 0; i < this.fluidTankList.getTanks(); i++) {
72+
builder.widget(new TankWidget(this.fluidTankList.getTankAt(i), 176 - 8 - 18, 18 + 18 * i, 18, 18)
73+
.setAlwaysShowFull(true)
74+
.setBackgroundTexture(GuiTextures.FLUID_SLOT)
75+
.setContainerClicking(true, true));
76+
}
77+
for (int y = 0; y < invTier; y++) {
78+
for (int x = 0; x < invTier; x++) {
79+
int index = y * invTier + x;
80+
builder.slot(itemStackHandler, index, 8 + x * 18, 18 + y * 18, GuiTextures.SLOT);
81+
}
82+
}
83+
return builder.label(6, 6, getMetaFullName())
84+
.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 8, 18 + 18 * invTier + 12)
85+
.build(getHolder(), entityPlayer);
86+
}
87+
88+
@Override
89+
public int getTier() {
90+
return tier;
91+
}
92+
93+
@Override
94+
public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) {
95+
Textures.VOLTAGE_CASINGS[tier].render(renderState, translation, ArrayUtils.add(pipeline,
96+
new ColourMultiplier(GTUtility.convertRGBtoOpaqueRGBA_CL(getPaintingColorForRendering()))));
97+
for (EnumFacing facing : EnumFacing.VALUES) {
98+
Textures.BUFFER_OVERLAY.renderSided(facing, renderState, translation, pipeline);
99+
}
100+
}
101+
102+
@Override
103+
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
104+
super.writeToNBT(tag);
105+
tag.setTag("Inventory", itemStackHandler.serializeNBT());
106+
tag.setTag("FluidInventory", fluidTankList.serializeNBT());
107+
return tag;
108+
}
109+
110+
@Override
111+
public void readFromNBT(NBTTagCompound tag) {
112+
super.readFromNBT(tag);
113+
this.itemStackHandler.deserializeNBT(tag.getCompoundTag("Inventory"));
114+
this.fluidTankList.deserializeNBT(tag.getCompoundTag("FluidInventory"));
115+
}
116+
117+
@Override
118+
protected boolean shouldSerializeInventories() {
119+
return false;
120+
}
121+
122+
@Override
123+
public boolean hasFrontFacing() {
124+
return false;
125+
}
126+
127+
@Override
128+
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
129+
super.addInformation(stack, player, tooltip, advanced);
130+
tooltip.add(I18n.format("gregtech.machine.buffer.tooltip"));
131+
tooltip.add(I18n.format("gregtech.machine.buffer.inventory", (int)Math.pow(tier + 2, 2)));
132+
tooltip.add(I18n.format("gregtech.machine.buffer.tanks", tier + 2));
133+
}
134+
}

src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,10 @@ public static void init() {
493493
ModHandler.addShapedRecipe("hermetic_casing_zpm", MetaBlocks.HERMETIC_CASING.getItemVariant(HERMETIC_ZPM), "PPP", "PFP", "PPP", 'P', new UnificationEntry(OrePrefix.plate, Materials.Iridium), 'F', new UnificationEntry(OrePrefix.pipeLargeFluid, Materials.NiobiumTitanium));
494494
ModHandler.addShapedRecipe("hermetic_casing_uv", MetaBlocks.HERMETIC_CASING.getItemVariant(HERMETIC_UV), "PPP", "PFP", "PPP", 'P', new UnificationEntry(OrePrefix.plate, Materials.Osmium), 'F', new UnificationEntry(OrePrefix.pipeLargeFluid, Materials.Naquadah));
495495
ModHandler.addShapedRecipe("hermetic_casing_max", MetaBlocks.HERMETIC_CASING.getItemVariant(HERMETIC_MAX), "PPP", "PFP", "PPP", 'P', new UnificationEntry(OrePrefix.plate, Materials.Neutronium), 'F', new UnificationEntry(OrePrefix.pipeLargeFluid, Materials.Ultimet));
496+
497+
ModHandler.addShapedRecipe("buffer_lv", MetaTileEntities.BUFFER[0].getStackForm(), "HP", "CV", 'H', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_LV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_LV.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Basic));
498+
ModHandler.addShapedRecipe("buffer_mv", MetaTileEntities.BUFFER[1].getStackForm(), "HP", "CV", 'H', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_MV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_MV.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Basic));
499+
ModHandler.addShapedRecipe("buffer_hv", MetaTileEntities.BUFFER[2].getStackForm(), "HP", "CV", 'H', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_HV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_HV.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Basic));
496500
}
497501

498502
public static <T extends MetaTileEntity & ITieredMetaTileEntity> void registerMachineRecipe(T[] metaTileEntities, Object... recipe) {

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3119,6 +3119,14 @@ gregtech.machine.quantum_tank.zpm.name=Quantum Tank III
31193119
gregtech.machine.quantum_tank.uv.name=Quantum Tank IV
31203120
gregtech.machine.quantum_tank.uhv.name=Quantum Tank V
31213121

3122+
#Buffers
3123+
gregtech.machine.buffer.tooltip=A Small Buffer to store Items and Fluids
3124+
gregtech.machine.buffer.inventory=Item Capacity: %d Slots
3125+
gregtech.machine.buffer.tanks=Fluid Capacity: %d Tanks at 64,000L each
3126+
gregtech.machine.buffer.lv.name=Basic Buffer
3127+
gregtech.machine.buffer.mv.name=Advanced Buffer
3128+
gregtech.machine.buffer.hv.name=Advanced Buffer II
3129+
31223130
#Hermetic Casing
31233131
tile.hermetic_casing.hermetic_casing_lv.name=Hermetic Casing I
31243132
tile.hermetic_casing.hermetic_casing_mv.name=Hermetic Casing II
443 Bytes
Loading

0 commit comments

Comments
 (0)