mirror of
https://github.com/GTNewHorizons/Applied-Energistics-2-Unofficial.git
synced 2026-10-25 20:22:23 +00:00
Show network amount in Level Emitter slots (#1707)
Co-authored-by: Kogepan229 <73163994+Kogepan229@users.noreply.github.com>
This commit is contained in:
1 parent
c690fbc273
commit
2c45161a84
8 files changed
+83
-2
No files matched your search
@@ -15,6 +15,9 @@ public interface IAdvancedLevelEmitter
|
||||
|
||||
void setReportingValue(int slot, long v);
|
||||
|
||||
/** Returns the amount of the slot's configured stack currently stored in the network. */
|
||||
long getStoredAmount(int slot);
|
||||
|
||||
boolean isSlotActive(int slot);
|
||||
|
||||
void setSlotActive(int slot, boolean active);
|
||||
|
||||
@@ -21,6 +21,9 @@ public interface ILevelEmitter
|
||||
|
||||
long getReportingValue();
|
||||
|
||||
/** Returns the value the emitter currently compares against its threshold. */
|
||||
long getStoredAmount();
|
||||
|
||||
default AEStackTypeFilter getTypeFilters() {
|
||||
return new AEStackTypeFilter();
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package appeng.client.gui.implementations;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import appeng.api.config.RedstoneMode;
|
||||
import appeng.api.config.Settings;
|
||||
@@ -14,7 +16,9 @@ import appeng.client.gui.AEBaseGui;
|
||||
import appeng.client.gui.slots.VirtualMEPhantomSlot;
|
||||
import appeng.client.gui.widgets.GuiImgButton;
|
||||
import appeng.client.gui.widgets.MEGuiTextField;
|
||||
import appeng.client.render.StackSizeRenderer;
|
||||
import appeng.container.implementations.ContainerAdvancedLevelEmitter;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.localization.ColorUtils;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.util.calculators.ArithHelper;
|
||||
@@ -100,7 +104,27 @@ public class GuiAdvancedLevelEmitter extends AEBaseGui {
|
||||
SLOT_Y + y,
|
||||
this.container.configSync,
|
||||
slot,
|
||||
GuiAdvancedLevelEmitter::acceptType));
|
||||
GuiAdvancedLevelEmitter::acceptType) {
|
||||
|
||||
@Override
|
||||
public boolean drawStackAndOverlay(final Minecraft mc, final int mouseX, final int mouseY) {
|
||||
final boolean hovered = super.drawStackAndOverlay(mc, mouseX, mouseY);
|
||||
if (this.getAEStack() != null) {
|
||||
// the item icon is rendered with depth, so the text must skip the depth test
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
StackSizeRenderer.drawStackSize(
|
||||
this.getX(),
|
||||
this.getY(),
|
||||
GuiAdvancedLevelEmitter.this.container.getStoredAmount(s),
|
||||
mc.fontRenderer,
|
||||
AEConfig.instance.getTerminalFontSize());
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
}
|
||||
return hovered;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ package appeng.client.gui.implementations;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.IIcon;
|
||||
@@ -20,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import appeng.api.config.FuzzyMode;
|
||||
import appeng.api.config.LevelType;
|
||||
@@ -35,6 +37,7 @@ import appeng.client.gui.widgets.GuiImgButton;
|
||||
import appeng.client.gui.widgets.GuiQuantityButton;
|
||||
import appeng.client.gui.widgets.MEGuiTextField;
|
||||
import appeng.client.gui.widgets.TypeToggleButton;
|
||||
import appeng.client.render.StackSizeRenderer;
|
||||
import appeng.container.implementations.ContainerLevelEmitter;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.localization.GuiText;
|
||||
@@ -80,7 +83,29 @@ public class GuiLevelEmitter extends GuiUpgradeable {
|
||||
this.container.setTextField(this.amountTextField);
|
||||
this.validateText();
|
||||
|
||||
this.config = new VirtualMEPhantomSlot(17, 42, this.container.configSync, 0, GuiLevelEmitter::acceptType);
|
||||
this.config = new VirtualMEPhantomSlot(17, 42, this.container.configSync, 0, GuiLevelEmitter::acceptType) {
|
||||
|
||||
@Override
|
||||
public boolean drawStackAndOverlay(final Minecraft mc, final int mouseX, final int mouseY) {
|
||||
final boolean hovered = super.drawStackAndOverlay(mc, mouseX, mouseY);
|
||||
// in energy mode or with a crafting card the stored value is not an item amount
|
||||
if (this.getAEStack() != null && GuiLevelEmitter.this.container.getLevelMode() == LevelType.ITEM_LEVEL
|
||||
&& GuiLevelEmitter.this.bc.getInstalledUpgrades(Upgrades.CRAFTING) == 0) {
|
||||
// the item icon is rendered with depth, so the text must skip the depth test
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
StackSizeRenderer.drawStackSize(
|
||||
this.getX(),
|
||||
this.getY(),
|
||||
GuiLevelEmitter.this.container.getStoredAmount(),
|
||||
mc.fontRenderer,
|
||||
AEConfig.instance.getTerminalFontSize());
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
}
|
||||
return hovered;
|
||||
}
|
||||
};
|
||||
this.registerVirtualSlots(this.config);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ public class ContainerAdvancedLevelEmitter extends AEBaseContainer implements IC
|
||||
private MEGuiTextField[] textFields;
|
||||
|
||||
private final LongSyncHandler[] amountSync = new LongSyncHandler[IAdvancedLevelEmitter.SLOT_COUNT];
|
||||
private final LongSyncHandler[] storedSync = new LongSyncHandler[IAdvancedLevelEmitter.SLOT_COUNT];
|
||||
private final BooleanSyncHandler[] activeSync = new BooleanSyncHandler[IAdvancedLevelEmitter.SLOT_COUNT];
|
||||
private final BooleanSyncHandler[] invertedSync = new BooleanSyncHandler[IAdvancedLevelEmitter.SLOT_COUNT];
|
||||
private final ConfigEnumSyncHandler<BooleanOperation> logicModeSync;
|
||||
@@ -55,6 +56,8 @@ public class ContainerAdvancedLevelEmitter extends AEBaseContainer implements IC
|
||||
}
|
||||
}).onServerChange((oldValue, newValue) -> this.lvlEmitter.setReportingValue(slot, newValue));
|
||||
|
||||
this.storedSync[slot] = sync.longS2C("stored" + slot);
|
||||
|
||||
this.activeSync[slot] = sync.booleanSync("active" + slot)
|
||||
.onServerChange((oldValue, newValue) -> this.lvlEmitter.setSlotActive(slot, newValue));
|
||||
|
||||
@@ -92,6 +95,7 @@ public class ContainerAdvancedLevelEmitter extends AEBaseContainer implements IC
|
||||
if (Platform.isServer()) {
|
||||
for (int slot = 0; slot < IAdvancedLevelEmitter.SLOT_COUNT; slot++) {
|
||||
this.amountSync[slot].set(this.lvlEmitter.getReportingValue(slot));
|
||||
this.storedSync[slot].set(this.lvlEmitter.getStoredAmount(slot));
|
||||
this.activeSync[slot].set(this.lvlEmitter.isSlotActive(slot));
|
||||
this.invertedSync[slot].set(this.lvlEmitter.isSlotInverted(slot));
|
||||
}
|
||||
@@ -109,6 +113,10 @@ public class ContainerAdvancedLevelEmitter extends AEBaseContainer implements IC
|
||||
this.amountSync[slot].set(value);
|
||||
}
|
||||
|
||||
public long getStoredAmount(final int slot) {
|
||||
return this.storedSync[slot].get();
|
||||
}
|
||||
|
||||
public boolean isSlotActive(final int slot) {
|
||||
return this.activeSync[slot].get();
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ public class ContainerLevelEmitter extends ContainerUpgradeable implements ICont
|
||||
private MEGuiTextField textField;
|
||||
|
||||
private final LongSyncHandler emitterValueSync;
|
||||
private final LongSyncHandler storedSync;
|
||||
private final DeltaObjectSyncHandler<@NotNull AEStackTypeFilter, TypeFilterDelta> typeFiltersSync;
|
||||
private final ConfigEnumSyncHandler<@NotNull LevelType> levelModeSync;
|
||||
private final ConfigEnumSyncHandler<@NotNull YesNo> craftingModeSync;
|
||||
@@ -72,6 +73,8 @@ public class ContainerLevelEmitter extends ContainerUpgradeable implements ICont
|
||||
}
|
||||
}).onServerChange((oldValue, newValue) -> this.lvlEmitter.setReportingValue(newValue));
|
||||
|
||||
this.storedSync = sync.longS2C("stored");
|
||||
|
||||
this.typeFiltersSync = sync
|
||||
.object("typeFilters", AEStackTypeFilterSyncCodec.INSTANCE, this.lvlEmitter.getTypeFilters())
|
||||
.onClientChange((oldValue, newValue) -> {
|
||||
@@ -170,6 +173,7 @@ public class ContainerLevelEmitter extends ContainerUpgradeable implements ICont
|
||||
|
||||
if (Platform.isServer()) {
|
||||
this.emitterValueSync.set(this.lvlEmitter.getReportingValue());
|
||||
this.storedSync.set(this.lvlEmitter.getStoredAmount());
|
||||
this.typeFiltersSync.set(this.lvlEmitter.getTypeFilters());
|
||||
this.craftingModeSync.syncFromConfig();
|
||||
this.levelModeSync.syncFromConfig();
|
||||
@@ -185,6 +189,10 @@ public class ContainerLevelEmitter extends ContainerUpgradeable implements ICont
|
||||
return this.emitterValueSync.get();
|
||||
}
|
||||
|
||||
public long getStoredAmount() {
|
||||
return this.storedSync.get();
|
||||
}
|
||||
|
||||
public void setLevel(final long l) {
|
||||
this.emitterValueSync.set(l);
|
||||
}
|
||||
|
||||
@@ -108,6 +108,11 @@ public class PartAdvancedLevelEmitter extends PartUpgradeable implements IAdvanc
|
||||
this.updateState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getStoredAmount(final int slot) {
|
||||
return this.lastReportedValue[slot];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSlotActive(final int slot) {
|
||||
return this.slotActive[slot];
|
||||
|
||||
@@ -126,6 +126,11 @@ public class PartLevelEmitter extends PartUpgradeable implements ILevelEmitter {
|
||||
return this.reportingValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getStoredAmount() {
|
||||
return this.lastReportedValue;
|
||||
}
|
||||
|
||||
public void setReportingValue(final long v) {
|
||||
this.reportingValue = v;
|
||||
this.getHost().markForSave();
|
||||
|
||||
Reference in new issue
Block a user