This commit is contained in:
1820982382
2026-08-01 16:42:53 +08:00
parent e2ab0fb78b
commit 7b341980bd
322 changed files with 15941 additions and 0 deletions
@@ -0,0 +1,85 @@
package thaumicenergistics.common.container;
import appeng.api.config.Settings;
import appeng.api.stacks.AEKey;
import appeng.api.util.IConfigManager;
import appeng.api.util.KeyTypeSelection;
import appeng.api.util.KeyTypeSelectionHost;
import appeng.menu.SlotSemantics;
import appeng.menu.guisync.GuiSync;
import appeng.menu.implementations.UpgradeableMenu;
import appeng.menu.interfaces.KeyTypeSelectionMenu;
import appeng.menu.interfaces.KeyTypeSelectionMenu.SyncedKeyTypes;
import appeng.menu.slot.FakeSlot;
import thaumicenergistics.common.parts.EssentiaExportBusPart;
import thaumicenergistics.init.ModMenuTypes;
public class ContainerEssentiaExportBus extends UpgradeableMenu<EssentiaExportBusPart>
implements KeyTypeSelectionMenu {
@GuiSync(50)
public long storedEnergy;
@GuiSync(51)
public SyncedKeyTypes exportKeyTypes = new SyncedKeyTypes();
public ContainerEssentiaExportBus(int id, net.minecraft.world.entity.player.Inventory ip, EssentiaExportBusPart host) {
super(ModMenuTypes.ESSENTIA_EXPORT_BUS.get(), id, ip, host);
registerClientAction("clear", this::clear);
}
@Override
protected void setupConfig() {
var inv = getHost().getConfig().createMenuWrapper();
for (int i = 0; i < 18; i++) {
this.addSlot(new FakeSlot(inv, i), SlotSemantics.CONFIG);
}
}
@Override
public boolean isSlotEnabled(int idx) {
return true;
}
@Override
protected void loadSettingsFromHost(IConfigManager cm) {
if (cm.hasSetting(Settings.REDSTONE_CONTROLLED)) {
this.setRedStoneMode(cm.getSetting(Settings.REDSTONE_CONTROLLED));
}
}
@Override
public void broadcastChanges() {
super.broadcastChanges();
if (!isServerSide()) return;
this.storedEnergy = getHost().getStoredEnergy();
if (getHost() instanceof KeyTypeSelectionHost selectionHost) {
var enabled = selectionHost.getKeyTypeSelection().enabled();
if (!exportKeyTypes.keyTypes().equals(enabled)) {
exportKeyTypes = new SyncedKeyTypes(enabled);
}
}
}
public void clear() {
if (isClientSide()) {
sendClientAction("clear");
} else {
getHost().getConfig().clear();
}
}
public AEKey getConfiguredKey(int slot) {
return getHost().getConfig().getKey(slot);
}
@Override
public KeyTypeSelection getServerKeyTypeSelection() {
return ((KeyTypeSelectionHost) getHost()).getKeyTypeSelection();
}
@Override
public SyncedKeyTypes getClientKeyTypeSelection() {
return exportKeyTypes;
}
}