diff --git a/src/main/java/appeng/client/render/cablebus/CableBuilder.java b/src/main/java/appeng/client/render/cablebus/CableBuilder.java index 5d67db071..0fd842e3f 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBuilder.java +++ b/src/main/java/appeng/client/render/cablebus/CableBuilder.java @@ -22,6 +22,7 @@ package appeng.client.render.cablebus; import appeng.api.util.AECableType; import appeng.api.util.AEColor; import appeng.core.AppEng; +import appeng.core.AEConfig; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; @@ -327,8 +328,8 @@ class CableBuilder { TextureAtlasSprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor); cubeBuilder.setTexture(texture); - TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels); - TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels); + TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); + TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); // For to-machine connections, use a thicker end-cap for the connection if (connectionType != AECableType.GLASS && !cableBusAdjacent) { @@ -374,8 +375,8 @@ class CableBuilder { addStraightCoveredCableSizedCube(facing, cubeBuilder); - TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels); - TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels); + TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); + TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); // Render the channel indicators brightly lit at night cubeBuilder.setRenderFullBright(true); @@ -403,8 +404,8 @@ class CableBuilder { addCoveredCableSizedCube(facing, distanceFromEdge, cubeBuilder); - TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels); - TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels); + TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); + TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels((int) (channels / (AEConfig.instance().getNormalChannelCapacity() / 8))); // Render the channel indicators brightly lit at night cubeBuilder.setRenderFullBright(true); @@ -464,7 +465,7 @@ class CableBuilder { addDenseCableSizedCube(facing, cubeBuilder); // Dense cables show used channels in groups of 4, rounded up - channels = (channels + 3) / 4; + channels = (int) ((channels + 3) / 4) / (AEConfig.instance().getDenseChannelCapacity() / 32); TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels); TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels); @@ -508,7 +509,7 @@ class CableBuilder { addStraightDenseCableSizedCube(facing, cubeBuilder); // Dense cables show used channels in groups of 4, rounded up - channels = (channels + 3) / 4; + channels = (int) ((channels + 3) / 4) / (AEConfig.instance().getDenseChannelCapacity() / 32); TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels); TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels); diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index 3e08120b8..befc59c99 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -83,6 +83,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject private int craftingCalculationTimePerTick = 5; private PowerUnits selectedPowerUnit = PowerUnits.AE; private boolean showCraftableTooltip = true; + // Spatial IO/Dimension private int storageProviderID = -1; private int storageDimensionID = -1; @@ -122,6 +123,9 @@ public final class AEConfig extends Configuration implements IConfigurableObject private int maxControllerSizeY = 7; private int maxControllerSizeZ = 7; + private int normalChannelCapacity = 8; + private int denseChannelCapacity = 32; + private AEConfig(final File configFile) { super(configFile); this.configFile = configFile; @@ -139,6 +143,8 @@ public final class AEConfig extends Configuration implements IConfigurableObject CondenserOutput.SINGULARITY.requiredPower = this.get("Condenser", "Singularity", 256000).getInt(256000); this.removeCrashingItemsOnLoad = this.get("general", "removeCrashingItemsOnLoad", false, "Will auto-remove items that crash when being loaded from storage. This will destroy those items instead of crashing the game!").getBoolean(); + this.normalChannelCapacity = this.get("general", "normalChannelCapacity", this.normalChannelCapacity).getInt(this.normalChannelCapacity); + this.denseChannelCapacity = this.get("general", "denseChannelCapacity", this.denseChannelCapacity).getInt(this.denseChannelCapacity); this.setCategoryComment("BlockingMode", "Map of items to not block when blockingmode is enabled.\n[modid]\nmodid:item:metadata(optional,default:0)\nSupports more than one modid, so you can block different things between, for example, gregtech or enderio"); this.nonBlockingItems = this.get("BlockingMode", "nonBlockingItems", nonBlockingItems, "NonBlockingItems").getStringList(); @@ -189,6 +195,8 @@ public final class AEConfig extends Configuration implements IConfigurableObject this.maxControllerSizeY = Math.min(Math.max(this.get("ControllerSize", "maxControllerSizeY", this.maxControllerSizeY).getInt(this.maxControllerSizeY), 1), 63); this.maxControllerSizeZ = Math.min(Math.max(this.get("ControllerSize", "maxControllerSizeZ", this.maxControllerSizeZ).getInt(this.maxControllerSizeZ), 1), 63); + + this.clientSync(); this.addCustomCategoryComment("features", "Warning: Disabling a feature may disable other features depending on it."); @@ -676,4 +684,12 @@ public final class AEConfig extends Configuration implements IConfigurableObject public int getMaxControllerSizeZ() { return this.maxControllerSizeZ; } + + public int getNormalChannelCapacity() { + return this.normalChannelCapacity; + } + + public int getDenseChannelCapacity() { + return this.denseChannelCapacity; + } } diff --git a/src/main/java/appeng/integration/modules/theoneprobe/part/ChannelInfoProvider.java b/src/main/java/appeng/integration/modules/theoneprobe/part/ChannelInfoProvider.java index 93a2a3d77..0086d8630 100644 --- a/src/main/java/appeng/integration/modules/theoneprobe/part/ChannelInfoProvider.java +++ b/src/main/java/appeng/integration/modules/theoneprobe/part/ChannelInfoProvider.java @@ -43,7 +43,7 @@ public class ChannelInfoProvider implements IPartProbInfoProvider { } if (part instanceof PartDenseCableSmart || part instanceof PartCableSmart) { final int usedChannels; - final int maxChannels = (part instanceof PartDenseCableSmart) ? 32 : 8; + final int maxChannels = (part instanceof PartDenseCableSmart) ? AEConfig.instance().getDenseChannelCapacity() : AEConfig.instance().getNormalChannelCapacity(); if (part.getGridNode().isActive()) { final NBTTagCompound tmp = new NBTTagCompound(); diff --git a/src/main/java/appeng/integration/modules/waila/part/ChannelWailaDataProvider.java b/src/main/java/appeng/integration/modules/waila/part/ChannelWailaDataProvider.java index 1315f58ef..4dd8abd43 100644 --- a/src/main/java/appeng/integration/modules/waila/part/ChannelWailaDataProvider.java +++ b/src/main/java/appeng/integration/modules/waila/part/ChannelWailaDataProvider.java @@ -81,7 +81,7 @@ public final class ChannelWailaDataProvider extends BasePartWailaDataProvider { final byte usedChannels = this.getUsedChannels(part, tag, this.cache); if (usedChannels >= 0) { - final byte maxChannels = (byte) ((part instanceof PartDenseCableSmart) ? 32 : 8); + final byte maxChannels = (byte) ((part instanceof PartDenseCableSmart) ? AEConfig.instance().getDenseChannelCapacity() : AEConfig.instance().getNormalChannelCapacity()); final String formattedToolTip = String.format(WailaText.Channels.getLocal(), usedChannels, maxChannels); currentToolTip.add(formattedToolTip); diff --git a/src/main/java/appeng/me/GridConnection.java b/src/main/java/appeng/me/GridConnection.java index f7208f518..ea0b3b59b 100644 --- a/src/main/java/appeng/me/GridConnection.java +++ b/src/main/java/appeng/me/GridConnection.java @@ -145,7 +145,7 @@ public class GridConnection implements IGridConnection, IPathItem { @Override public boolean canSupportMoreChannels() { - return this.getLastUsedChannels() < 32; // max, PERIOD. + return this.getLastUsedChannels() < AEConfig.instance().getDenseChannelCapacity(); // max, PERIOD. } @Override diff --git a/src/main/java/appeng/me/GridNode.java b/src/main/java/appeng/me/GridNode.java index bbeedf120..c32cd636f 100644 --- a/src/main/java/appeng/me/GridNode.java +++ b/src/main/java/appeng/me/GridNode.java @@ -48,7 +48,7 @@ import java.util.*; public class GridNode implements IGridNode, IPathItem { private static final MENetworkChannelsChanged EVENT = new MENetworkChannelsChanged(); - private static final int[] CHANNEL_COUNT = {0, 8, 32}; + private static final int[] CHANNEL_COUNT = {0, AEConfig.instance().getNormalChannelCapacity(), AEConfig.instance().getDenseChannelCapacity()}; private final List connections = new ArrayList<>(); private final IGridBlock gridProxy; diff --git a/src/main/java/appeng/me/cache/PathGridCache.java b/src/main/java/appeng/me/cache/PathGridCache.java index 8ab6bc960..56f668018 100644 --- a/src/main/java/appeng/me/cache/PathGridCache.java +++ b/src/main/java/appeng/me/cache/PathGridCache.java @@ -83,7 +83,7 @@ public class PathGridCache implements IPathingGrid { if (this.controllerState == ControllerState.NO_CONTROLLER) { final int requiredChannels = this.calculateRequiredChannels(); int used = requiredChannels; - if (AEConfig.instance().isFeatureEnabled(AEFeature.CHANNELS) && requiredChannels > 8) { + if (AEConfig.instance().isFeatureEnabled(AEFeature.CHANNELS) && requiredChannels > AEConfig.instance().getNormalChannelCapacity()) { used = 0; } diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 0dd852a5a..1b4932377 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -34,6 +34,7 @@ import appeng.client.render.cablebus.CableBusRenderState; import appeng.client.render.cablebus.CableCoreType; import appeng.client.render.cablebus.FacadeRenderState; import appeng.core.AELog; +import appeng.core.AEConfig; import appeng.facade.FacadeContainer; import appeng.helpers.AEMultiTile; import appeng.me.GridConnection; @@ -1022,7 +1023,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I } int length = (int) part.getCableConnectionLength(null); - if (length > 0 && length <= 8) { + if (length > 0 && length <= AEConfig.instance().getNormalChannelCapacity()) { renderState.getAttachmentConnections().put(facing, length); } }