Skip to content

Commit 0cfc495

Browse files
authored
Remove Muffler Inventory and Recovery Mechanics (#2799)
1 parent 593de62 commit 0cfc495

File tree

5 files changed

+21
-140
lines changed

5 files changed

+21
-140
lines changed

src/main/java/gregtech/api/capability/IMufflerHatch.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
package gregtech.api.capability;
22

3-
import net.minecraft.item.ItemStack;
4-
5-
import java.util.List;
6-
73
public interface IMufflerHatch {
84

9-
void recoverItemsTable(List<ItemStack> recoveryItems);
10-
115
/**
126
* @return true if front face is free and contains only air blocks in 1x1 area
137
*/

src/main/java/gregtech/api/capability/impl/MultiblockRecipeLogic.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -381,25 +381,6 @@ public boolean checkRecipe(@NotNull Recipe recipe) {
381381
return false;
382382
}
383383

384-
@Override
385-
protected void completeRecipe() {
386-
performMufflerOperations();
387-
super.completeRecipe();
388-
}
389-
390-
protected void performMufflerOperations() {
391-
if (metaTileEntity instanceof MultiblockWithDisplayBase controller) {
392-
// output muffler items
393-
if (controller.hasMufflerMechanics()) {
394-
if (parallelRecipesPerformed > 1) {
395-
controller.outputRecoveryItems(parallelRecipesPerformed);
396-
} else {
397-
controller.outputRecoveryItems();
398-
}
399-
}
400-
}
401-
}
402-
403384
@Override
404385
public long getMaxVoltage() {
405386
IEnergyContainer energyContainer = getEnergyContainer();

src/main/java/gregtech/api/metatileentity/multiblock/MultiblockWithDisplayBase.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -247,30 +247,22 @@ private void readMaintenanceData(IMaintenanceHatch hatch) {
247247
}
248248
}
249249

250-
/**
251-
* Outputs the recovery items into the muffler hatch
252-
*/
253-
public void outputRecoveryItems() {
254-
IMufflerHatch muffler = getAbilities(MultiblockAbility.MUFFLER_HATCH).get(0);
255-
muffler.recoverItemsTable(recoveryItems);
256-
}
257-
258-
public void outputRecoveryItems(int parallel) {
259-
IMufflerHatch muffler = getAbilities(MultiblockAbility.MUFFLER_HATCH).get(0);
260-
for (int i = 0; i < parallel; i++) {
261-
muffler.recoverItemsTable(recoveryItems);
262-
}
263-
}
264-
265250
/**
266251
* @return whether the muffler hatch's front face is free
267252
*/
268253
public boolean isMufflerFaceFree() {
269-
if (hasMufflerMechanics() && getAbilities(MultiblockAbility.MUFFLER_HATCH).size() == 0)
254+
if (!isStructureFormed()) {
255+
return false;
256+
}
257+
if (!hasMufflerMechanics()) {
270258
return false;
259+
}
271260

272-
return isStructureFormed() && hasMufflerMechanics() &&
273-
getAbilities(MultiblockAbility.MUFFLER_HATCH).get(0).isFrontFaceFree();
261+
var mufflers = getAbilities(MultiblockAbility.MUFFLER_HATCH);
262+
if (mufflers.isEmpty()) {
263+
return false;
264+
}
265+
return mufflers.get(0).isFrontFaceFree();
274266
}
275267

276268
@SideOnly(Side.CLIENT)
Lines changed: 11 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package gregtech.common.metatileentities.multi.multiblockpart;
22

3-
import gregtech.api.GTValues;
43
import gregtech.api.capability.IMufflerHatch;
5-
import gregtech.api.items.itemhandlers.GTItemStackHandler;
64
import gregtech.api.metatileentity.ITieredMetaTileEntity;
75
import gregtech.api.metatileentity.MetaTileEntity;
86
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
97
import gregtech.api.metatileentity.multiblock.*;
10-
import gregtech.api.mui.GTGuis;
11-
import gregtech.api.util.GTTransferUtils;
128
import gregtech.api.util.GTUtility;
139
import gregtech.client.particle.VanillaParticleEffects;
1410
import gregtech.client.renderer.texture.Textures;
@@ -17,42 +13,25 @@
1713
import net.minecraft.block.state.IBlockState;
1814
import net.minecraft.client.resources.I18n;
1915
import net.minecraft.item.ItemStack;
20-
import net.minecraft.nbt.NBTTagCompound;
2116
import net.minecraft.util.ResourceLocation;
2217
import net.minecraft.util.math.BlockPos;
2318
import net.minecraft.world.World;
2419

2520
import codechicken.lib.render.CCRenderState;
2621
import codechicken.lib.render.pipeline.IVertexOperation;
2722
import codechicken.lib.vec.Matrix4;
28-
import com.cleanroommc.modularui.api.drawable.IKey;
29-
import com.cleanroommc.modularui.api.widget.IWidget;
30-
import com.cleanroommc.modularui.factory.PosGuiData;
31-
import com.cleanroommc.modularui.screen.ModularPanel;
32-
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
33-
import com.cleanroommc.modularui.value.sync.SyncHandlers;
34-
import com.cleanroommc.modularui.widgets.ItemSlot;
35-
import com.cleanroommc.modularui.widgets.SlotGroupWidget;
36-
import com.cleanroommc.modularui.widgets.layout.Grid;
3723
import org.jetbrains.annotations.NotNull;
3824
import org.jetbrains.annotations.Nullable;
3925

40-
import java.util.ArrayList;
4126
import java.util.List;
4227

4328
public class MetaTileEntityMufflerHatch extends MetaTileEntityMultiblockPart implements
4429
IMultiblockAbilityPart<IMufflerHatch>, ITieredMetaTileEntity, IMufflerHatch {
4530

46-
private final int recoveryChance;
47-
private final GTItemStackHandler inventory;
48-
4931
private boolean frontFaceFree;
5032

5133
public MetaTileEntityMufflerHatch(ResourceLocation metaTileEntityId, int tier) {
5234
super(metaTileEntityId, tier);
53-
this.recoveryChance = (int) Math.ceil((tier - 1.0f) / 8 * 100);
54-
this.inventory = new GTItemStackHandler(this, (int) Math.pow(tier + 1, 2));
55-
this.frontFaceFree = false;
5635
}
5736

5837
@Override
@@ -63,49 +42,29 @@ public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
6342
@Override
6443
public void update() {
6544
super.update();
66-
67-
if (!getWorld().isRemote) {
68-
if (getOffsetTimer() % 10 == 0)
69-
this.frontFaceFree = checkFrontFaceFree();
70-
}
71-
72-
if (getWorld().isRemote && getController() instanceof MultiblockWithDisplayBase controller &&
73-
controller.isActive()) {
74-
VanillaParticleEffects.mufflerEffect(this, controller.getMufflerParticle());
75-
}
76-
}
77-
78-
@Override
79-
public void clearMachineInventory(@NotNull List<@NotNull ItemStack> itemBuffer) {
80-
clearInventory(itemBuffer, inventory);
81-
}
82-
83-
public void recoverItemsTable(List<ItemStack> recoveryItems) {
84-
for (ItemStack recoveryItem : recoveryItems) {
85-
if (calculateChance()) {
86-
GTTransferUtils.insertItem(inventory, recoveryItem.copy(), false);
45+
if (getWorld().isRemote) {
46+
if (getController() instanceof MultiblockWithDisplayBase controller && controller.isActive()) {
47+
VanillaParticleEffects.mufflerEffect(this, controller.getMufflerParticle());
8748
}
49+
} else if (getOffsetTimer() % 10 == 0) {
50+
this.frontFaceFree = checkFrontFaceFree();
8851
}
8952
}
9053

91-
private boolean calculateChance() {
92-
return recoveryChance >= 100 || recoveryChance > GTValues.RNG.nextInt(100);
93-
}
94-
9554
/**
9655
* @return true if front face is free and contains only air blocks in 1x1 area
9756
*/
57+
@Override
9858
public boolean isFrontFaceFree() {
9959
return frontFaceFree;
10060
}
10161

10262
private boolean checkFrontFaceFree() {
10363
BlockPos frontPos = getPos().offset(getFrontFacing());
10464
IBlockState blockState = getWorld().getBlockState(frontPos);
105-
MultiblockWithDisplayBase controller = (MultiblockWithDisplayBase) getController();
10665

10766
// break a snow layer if it exists, and if this machine is running
108-
if (controller != null && controller.isActive()) {
67+
if (getController() instanceof MultiblockWithDisplayBase controller && controller.isActive()) {
10968
if (GTUtility.tryBreakSnow(getWorld(), frontPos, blockState, true)) {
11069
return true;
11170
}
@@ -117,15 +76,15 @@ private boolean checkFrontFaceFree() {
11776
@Override
11877
public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) {
11978
super.renderMetaTileEntity(renderState, translation, pipeline);
120-
if (shouldRenderOverlay())
79+
if (shouldRenderOverlay()) {
12180
Textures.MUFFLER_OVERLAY.renderSided(getFrontFacing(), renderState, translation, pipeline);
81+
}
12282
}
12383

12484
@Override
12585
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
12686
super.addInformation(stack, player, tooltip, advanced);
12787
tooltip.add(I18n.format("gregtech.machine.muffler_hatch.tooltip1"));
128-
tooltip.add(I18n.format("gregtech.muffler.recovery_tooltip", recoveryChance));
12988
tooltip.add(I18n.format("gregtech.universal.enabled"));
13089
tooltip.add(TooltipHelper.BLINKING_RED + I18n.format("gregtech.machine.muffler_hatch.tooltip2"));
13190
}
@@ -148,50 +107,7 @@ public void registerAbilities(@NotNull AbilityInstances abilityInstances) {
148107
}
149108

150109
@Override
151-
public boolean usesMui2() {
152-
return true;
153-
}
154-
155-
@Override
156-
public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager guiSyncManager) {
157-
int rowSize = (int) Math.sqrt(this.inventory.getSlots());
158-
int xOffset = rowSize == 10 ? 9 : 0;
159-
160-
guiSyncManager.registerSlotGroup("item_inv", rowSize);
161-
162-
List<List<IWidget>> widgets = new ArrayList<>();
163-
for (int y = 0; y < rowSize; y++) {
164-
widgets.add(new ArrayList<>());
165-
for (int x = 0; x < rowSize; x++) {
166-
int index = y * rowSize + x;
167-
widgets.get(y).add(new ItemSlot().slot(SyncHandlers.itemSlot(this.inventory, index)
168-
.slotGroup("item_inv")
169-
.accessibility(false, true)));
170-
}
171-
}
172-
173-
// TODO: Change the position of the name when it's standardized.
174-
return GTGuis.createPanel(this, 176 + xOffset * 2, 18 + 18 * rowSize + 94)
175-
.child(IKey.lang(getMetaFullName()).asWidget().pos(5, 5))
176-
.child(SlotGroupWidget.playerInventory().left(7).bottom(7))
177-
.child(new Grid()
178-
.top(18).height(rowSize * 18)
179-
.minElementMargin(0, 0)
180-
.minColWidth(18).minRowHeight(18)
181-
.alignX(0.5f)
182-
.matrix(widgets));
183-
}
184-
185-
@Override
186-
public NBTTagCompound writeToNBT(NBTTagCompound data) {
187-
super.writeToNBT(data);
188-
data.setTag("RecoveryInventory", inventory.serializeNBT());
189-
return data;
190-
}
191-
192-
@Override
193-
public void readFromNBT(NBTTagCompound data) {
194-
super.readFromNBT(data);
195-
this.inventory.deserializeNBT(data.getCompoundTag("RecoveryInventory"));
110+
protected boolean openGUIOnRightClick() {
111+
return false;
196112
}
197113
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5387,8 +5387,6 @@ gregtech.machine.muffler_hatch.uxv.name=UXV Muffler Hatch
53875387
gregtech.machine.muffler_hatch.opv.name=OpV Muffler Hatch
53885388
gregtech.machine.muffler_hatch.max.name=MAX Muffler Hatch
53895389

5390-
gregtech.muffler.recovery_tooltip=§bRecovery Chance: §f%d%%
5391-
53925390
gregtech.machine.pump_hatch.name=Pump Output Hatch
53935391
gregtech.machine.pump_hatch.tooltip=Primitive Fluid Output for Water Pump
53945392

0 commit comments

Comments
 (0)