diff --git a/common/build.gradle b/common/build.gradle index 7d0bc7db..4012d616 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -30,7 +30,7 @@ dependencies{ compileOnly("com.electronwill.night-config:toml:${rootProject.nightconfig_version}") compileOnly("com.electronwill.night-config:core:${rootProject.nightconfig_version}") modImplementation("earth.terrarium:botarium-common-${project.minecraft_version}:${project.botarium_version}") - modImplementation "maven.modrinth:carbon-config:yIKfSms3" + modImplementation "maven.modrinth:carbon-config:${project.carbon_config_fabric_version}" testImplementation('junit:junit:4.11') testImplementation(sourceSets.main.output) } diff --git a/common/gradle.properties b/common/gradle.properties index 854a88cc..079b4da7 100644 --- a/common/gradle.properties +++ b/common/gradle.properties @@ -1 +1 @@ -mod_version=0.2.2 \ No newline at end of file +mod_version=0.2.3-pre1 \ No newline at end of file diff --git a/common/src/main/java/tesseract/api/capability/TesseractGTCapability.java b/common/src/main/java/tesseract/api/capability/TesseractGTCapability.java index d7204812..aaa31bdd 100644 --- a/common/src/main/java/tesseract/api/capability/TesseractGTCapability.java +++ b/common/src/main/java/tesseract/api/capability/TesseractGTCapability.java @@ -6,10 +6,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import tesseract.TesseractCapUtils; import tesseract.TesseractGraphWrappers; -import tesseract.api.gt.GTConsumer; -import tesseract.api.gt.GTTransaction; -import tesseract.api.gt.IEnergyHandler; -import tesseract.api.gt.IGTCable; +import tesseract.api.gt.*; import tesseract.graph.Graph; import tesseract.util.Pos; @@ -24,15 +21,14 @@ public TesseractGTCapability(T tile, Direction dir, boolean isNode, ITransaction } @Override - public long insertAmps(long voltage, long amps, boolean simulate) { - if (this.isSending) return 0; + public long insertEu(long voltage, boolean simulate) { + if (this.isSending || (!simulate && old == null)) return 0; this.isSending = true; if (!simulate) { - if (old == null) return 0; old.commit(); } else { long pos = tile.getBlockPos().asLong(); - GTTransaction transaction = new GTTransaction(amps, voltage, t -> {}); + GTTransaction transaction = new GTTransaction(voltage, t -> {}); if (!this.isNode) { TesseractGraphWrappers.GT_ENERGY.getController(tile.getLevel(), pos).insert(pos, side, transaction, callback); } else { @@ -41,17 +37,7 @@ public long insertAmps(long voltage, long amps, boolean simulate) { this.old = transaction; } this.isSending = false; - return amps - old.getAvailableAmps(); - } - - @Override - public long insertEu(long voltage, boolean simulate) { - return insertAmps(voltage, 1, simulate) == 1 ? voltage : 0; - } - - @Override - public long extractAmps(long voltage, long amps, boolean simulate) { - return 0; + return voltage - old.eu; } @Override @@ -60,8 +46,8 @@ public long extractEu(long voltage, boolean simulate) { } private void transferAroundPipe(GTTransaction transaction, long pos) { - boolean flag = false; - + boolean hasInserted = false; + boolean lossAdded = false; for (Direction dir : Graph.DIRECTIONS) { if (dir == this.side || !this.tile.connects(dir)) continue; //First, perform cover modifications. @@ -69,28 +55,36 @@ private void transferAroundPipe(GTTransaction transaction, long pos) { if (otherTile != null) { //Check the handler. var cap = TesseractCapUtils.getEnergyHandler(otherTile, dir.getOpposite()); - if (!cap.isPresent()) continue; + if (cap.isEmpty()) continue; //Perform insertion, and add to the transaction. var handler = cap.get(); - long voltage = transaction.voltageOut - Math.round(cable.getLoss()); - long ampsToInsert = handler.availableAmpsInput(voltage); - GTTransaction.TransferData data = new GTTransaction.TransferData(transaction,voltage, ampsToInsert); + long loss = Math.round(cable.getLoss()); + if (hasInserted && !lossAdded){ + transaction.addData(0, loss, 0, d -> {}); + lossAdded = true; + } + + long remainingEu = lossAdded ? transaction.eu : transaction.eu - loss; + GTTransaction.TransferData data = new GTTransaction.TransferData(transaction, remainingEu, transaction.voltage).setLoss(cable.getLoss()); if (this.callback.modify(data, dir, false, true) || this.callback.modify(data, side, true, true)){ continue; } - if (data.getAmps(true) < ampsToInsert) ampsToInsert = data.getAmps(true); - if (data.getLoss() > 0) voltage -= Math.round(data.getLoss()); - long amps = handler.insertAmps(voltage, ampsToInsert, true); - if (amps > 0){ - transaction.addData(amps, cable.getLoss(), t -> { + if (data.getEu() < remainingEu) remainingEu = data.getEu(); + if (data.getLoss() > 0) remainingEu -= Math.round(data.getLoss()); + if (remainingEu <= 0) return; + long inserted = handler.insertEu(remainingEu, true); + if (inserted > 0){ + transaction.addData(inserted, inserted, cable.getLoss(), t -> { if (this.callback.modify(t, dir, false, false) || this.callback.modify(data, side, true, false)){ return; } - handler.insertAmps(t.getVoltage(), t.getAmps(true), false); + handler.insertEu(t.getEu(), false); }); + if (transaction.voltage > this.cable.getVoltage()){ + ((IGTEvent)TesseractGraphWrappers.GT_ENERGY.getController(tile.getLevel(), pos)).onCableOverVoltage(tile.getLevel(), pos, transaction.voltage); + } } - if (transaction.getAvailableAmps() == 0) break; - + if (transaction.eu == 0) break; } } } diff --git a/common/src/main/java/tesseract/api/gt/GTController.java b/common/src/main/java/tesseract/api/gt/GTController.java index 9d27fb66..54ad84f2 100644 --- a/common/src/main/java/tesseract/api/gt/GTController.java +++ b/common/src/main/java/tesseract/api/gt/GTController.java @@ -1,5 +1,6 @@ package tesseract.api.gt; +import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.longs.*; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.core.Direction; @@ -18,9 +19,14 @@ import tesseract.util.Node; import tesseract.util.Pos; +import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; /** * Class acts as a controller in the group of an electrical components. @@ -167,6 +173,7 @@ public void insert(long pipePos, Direction side, GTTransaction stack, ITransacti IGTNode producer = node.value(side.getOpposite()); long voltage_out = producer.getOutputVoltage(); + if (stack.voltage > voltage_out) return; /* * if (amperage_in <= 0) { // just for sending the last piece of energy @@ -175,29 +182,77 @@ public void insert(long pipePos, Direction side, GTTransaction stack, ITransacti * } */ inserted++; + List>> transferList = new ArrayList<>(); + double previousLoss = 0; for (GTConsumer consumer : list) { - long amperage_in = stack.getAvailableAmps(); + long remainingEu = stack.eu; - if (amperage_in <= 0) { + if (remainingEu <= 0) { break; } - long loss = Math.round(consumer.getLoss()); - if (loss < 0 || loss > voltage_out) { + double loss = consumer.getLoss(); + double appliedLoss = loss == 0 ? 0 : loss > previousLoss ? loss - previousLoss : previousLoss - loss; + previousLoss = loss; + long roundedAppliedLoss = Math.round(appliedLoss); + if (roundedAppliedLoss < 0 || roundedAppliedLoss > remainingEu) { continue; } - long amperage = consumer.getRequiredAmperage(voltage_out - loss); - if (amperage <= 0) { // if this consumer received all the energy from the other producers + long lossyEu = remainingEu - roundedAppliedLoss; + long euInserted = consumer.getNode().insertEu(lossyEu, true); + if (euInserted <= 0) { // if this consumer received all the energy from the other producers continue; } - - // Remember amperes stored in this consumer - amperage = Math.min(amperage_in, amperage); // If we are here, then path had some invalid cables which not suits the limits // of amps/voltage - stack.addData(amperage, loss, a -> dataCommit(consumer, a)); + + GTTransaction.TransferData data1 = stack.addData(euInserted, euInserted + roundedAppliedLoss, appliedLoss, a -> {}); + transferList.add((l) -> dataCommit(l, consumer, data1)); + } + if (!transferList.isEmpty()){ + stack.addData(0, 0, 0, d-> dataCommit(transferList)); + } + } + + public void dataCommit(Long2ObjectMap cableList, GTConsumer consumer, GTTransaction.TransferData data){ + if (!consumer.canHandle(data.getVoltage())) { + for (Long2ObjectMap.Entry c : consumer.getFull().long2ObjectEntrySet()) { + long pos = c.getLongKey(); + IGTCable cable = c.getValue(); + if (Objects.requireNonNull(cable.getHandler(data.getVoltage(), 0)) == GTStatus.FAIL_VOLTAGE) { + onCableOverVoltage(getWorld(), pos, data.getVoltage()); + return; + } + } + } else { + for (Long2ObjectMap.Entry c : consumer.getFull().long2ObjectEntrySet()) { + IGTCable cable = c.getValue(); + if (!cableList.containsKey(c.getLongKey())) cableList.put(c.getLongKey(), cable); + } + } + cableIsActive.addAll(consumer.uninsulatedCables); + + this.totalLoss += data.getLoss(); + this.totalVoltage += data.getEu(); + consumer.getNode().insertEu(data.getEu(), false); + } + + public void dataCommit(List>> list){ + Long2ObjectMap cableList = new Long2ObjectOpenHashMap<>(); + for (var pair : list) { + pair.accept(cableList); + } + for (Long2ObjectMap.Entry c : cableList.long2ObjectEntrySet()) { + long pos = c.getLongKey(); + IGTCable cable = c.getValue(); + cable.setHolder(GTHolder.add(cable.getHolder(), 1)); + if (GTHolder.isOverAmperage(cable.getHolder())) { + onCableOverAmperage(getWorld(), pos, GTHolder.getAmperage(cable.getHolder())); + return; + } } + totalAmperage++; } /** @@ -208,18 +263,18 @@ public void insert(long pipePos, Direction side, GTTransaction stack, ITransacti * @param data the transfer data. */ public void dataCommit(GTConsumer consumer, GTTransaction.TransferData data) { - if (!consumer.canHandle(data.getVoltage()) || !consumer.canHandleAmp(data.getTotalAmperage()) || (consumer.getConnection() == ConnectionType.SINGLE - && !(consumer.canHandleAmp(data.getTotalAmperage())))) { + if (!consumer.canHandle(data.getVoltage()) || !consumer.canHandleAmp(1) || (consumer.getConnection() == ConnectionType.SINGLE + && !(consumer.canHandleAmp(1)))) { for (Long2ObjectMap.Entry c : consumer.getFull().long2ObjectEntrySet()) { long pos = c.getLongKey(); IGTCable cable = c.getValue(); - switch (cable.getHandler(data.getVoltage(), data.getTotalAmperage())) { + switch (cable.getHandler(data.getVoltage(), 1)) { case FAIL_VOLTAGE -> { onCableOverVoltage(getWorld(), pos, data.getVoltage()); return; } case FAIL_AMPERAGE -> { - onCableOverAmperage(getWorld(), pos, data.getTotalAmperage()); + onCableOverAmperage(getWorld(), pos, 1); return; } default -> { @@ -231,11 +286,7 @@ public void dataCommit(GTConsumer consumer, GTTransaction.TransferData data) { for (Long2ObjectMap.Entry c : consumer.getCross().long2ObjectEntrySet()) { long pos = c.getLongKey(); IGTCable cable = c.getValue(); - /*pipeMap.compute(c.getLongKey(), (l, i) ->{ - if (i == null) return Math.toIntExact(data.getTotalAmperage()); - return Math.toIntExact(i + data.getTotalAmperage()); - });*/ - cable.setHolder(GTHolder.add(cable.getHolder(), data.getTotalAmperage())); + cable.setHolder(GTHolder.add(cable.getHolder(), 1)); if (GTHolder.isOverAmperage(cable.getHolder())) { onCableOverAmperage(getWorld(), pos, GTHolder.getAmperage(cable.getHolder())); return; @@ -246,9 +297,9 @@ public void dataCommit(GTConsumer consumer, GTTransaction.TransferData data) { cableIsActive.addAll(consumer.uninsulatedCables); this.totalLoss += data.getLoss(); - this.totalAmperage += data.getTotalAmperage(); - this.totalVoltage += data.getTotalAmperage() * data.getVoltage(); - consumer.getNode().insertAmps(data.getEnergy(1, true), data.getAmps(true), false); + this.totalAmperage++; + this.totalVoltage += data.getEu(); + consumer.getNode().insertEu(data.getEu(), false); } @Override diff --git a/common/src/main/java/tesseract/api/gt/GTTransaction.java b/common/src/main/java/tesseract/api/gt/GTTransaction.java index 9d1427b2..fbf77807 100644 --- a/common/src/main/java/tesseract/api/gt/GTTransaction.java +++ b/common/src/main/java/tesseract/api/gt/GTTransaction.java @@ -6,60 +6,32 @@ public class GTTransaction extends Transaction { - public long availableAmps; - public final long voltageOut; + public final long voltage; public long eu; - public long usedAmps; - public final Mode mode; - public GTTransaction(long ampsAvailable, long voltageOut, Consumer consumer) { + public GTTransaction(long voltage, Consumer consumer) { super(consumer); - this.availableAmps = ampsAvailable; - this.voltageOut = voltageOut; - this.usedAmps = 0; - this.mode = Mode.TRANSMIT; - } - - public GTTransaction(long eu, Consumer consumer) { - super(consumer); - this.voltageOut = 0; - this.eu = eu; - this.mode = Mode.INTERNAL; + this.voltage = voltage; + this.eu = voltage; } @Override public boolean isValid() { - return (this.availableAmps > 0 && this.voltageOut > 0) || this.eu > 0; + return this.eu > 0; } @Override public boolean canContinue() { - return availableAmps > 0 || eu > 0; + return eu > 0; } - public long getAvailableAmps() { - return this.availableAmps; - } - - public long addAmps(long amps) { - this.availableAmps += amps; - return amps; - } - public TransferData addData(long amps, double loss, Consumer data) { - TransferData td = new TransferData(this, Math.min(amps, availableAmps), this.voltageOut).setLoss(loss); - this.addData(td); - this.usedAmps += amps; - availableAmps -= amps; - this.onCommit(data); - return td; - } - public TransferData addData(long eu, Consumer data) { + public TransferData addData(long eu, long consumedEu, double loss, Consumer data) { eu = Math.min(eu, this.eu); - TransferData dat = this.addData(new TransferData(this, eu)); - this.eu -= eu; + TransferData dat = this.addData(new TransferData(this, eu, this.voltage).setLoss(loss)); + this.eu -= Math.min(this.eu, consumedEu); this.onCommit(data); return dat; } @@ -67,24 +39,13 @@ public TransferData addData(long eu, Consumer data) { public static class TransferData { private final long voltage; private long eu; - private long ampsIn; - private long ampsOut; - private final long totalAmperage; private double loss; public final GTTransaction transaction; - public TransferData(GTTransaction transaction, long amps, long voltage) { - this.ampsIn = this.ampsOut = this.totalAmperage = amps; + public TransferData(GTTransaction transaction, long eu, long voltage) { this.voltage = voltage; this.loss = 0; - this.eu = 0; - this.transaction = transaction; - } - - public TransferData(GTTransaction transaction, long eu) { - this.voltage = 0; this.eu = eu; - this.totalAmperage = 0; this.transaction = transaction; } @@ -92,10 +53,6 @@ public long getEnergy(long amps, boolean input) { return input ? (voltage - Math.round(loss)) * amps : voltage * amps; } - public long getTotalAmperage() { - return totalAmperage; - } - public double getLoss() { return loss; } @@ -114,52 +71,9 @@ public long drainEu(long eu) { return eu; } - public long getAmps(boolean input) { - return input ? ampsIn : ampsOut; - } - - public void useAmps(boolean input, long amps) { - if (input) { - ampsIn -= amps; - } else { - ampsOut -= amps; - } - } - @Override public String toString() { - if (transaction.mode == Mode.INTERNAL) { - return "Internal: " + this.eu; - } else { - return "Transmit amps: " + this.totalAmperage + " voltage: " + this.voltage + " loss: " + this.loss; - } - } - - public long consumeForNode(IGTNode node) { - if (this.transaction.mode == GTTransaction.Mode.TRANSMIT) { - long amps = Math.min(getAmps(true), node.availableAmpsInput(this.getVoltage())); - amps = Math.min(amps, (node.getCapacity() - node.getEnergy()) / node.getInputVoltage()); - useAmps(true, amps); - node.getState().receive(false, amps); - return getEnergy(amps, true); - } else { - long toAdd = Math.min(getEu(), node.getCapacity() - node.getEnergy()); - return drainEu(toAdd); - } - } - - public long extractForNode(IGTNode node) { - if (transaction.mode == GTTransaction.Mode.TRANSMIT) { - long amps = Math.min(getAmps(false), node.availableAmpsOutput()); - amps = Math.min(amps, node.getEnergy() / node.getOutputVoltage()); - node.getState().extract(false, amps); - useAmps(false, amps); - return getEnergy(amps, false); - } else { - long toDrain = Math.min(getEu(), node.getEnergy()); - return drainEu(toDrain); - } - + return "Transmit eu: " + this.eu + " voltage: " + this.voltage + " loss: " + this.loss; } public long getVoltage() { @@ -170,9 +84,4 @@ public GTTransaction getTransaction() { return transaction; } } - - public enum Mode { - INTERNAL, - TRANSMIT - } } diff --git a/common/src/main/java/tesseract/api/gt/IGTNode.java b/common/src/main/java/tesseract/api/gt/IGTNode.java index 5a73db58..73d6af2b 100644 --- a/common/src/main/java/tesseract/api/gt/IGTNode.java +++ b/common/src/main/java/tesseract/api/gt/IGTNode.java @@ -15,47 +15,6 @@ */ public interface IGTNode { - /** - * Inserts x amps of y voltage into the node. - * @param voltage The voltage to be inserted into the node. - * @param amps The amps to be inserted into the node. - * @param simulate If true, the container will not be modified. - * @return The amps that were added to the node. - */ - default long insertAmps(long voltage, long amps, boolean simulate){ - if (voltage <= 0 || amps <= 0) return 0; - long insertedAmps = 0; - for (int i = 0; i < amps; i++){ - long inserted = insertEu(voltage, true); - if (inserted == voltage){ - insertedAmps++; - getState().receive(simulate, amps); - if (!simulate) insertEu(voltage, false); - } else { - break; - } - } - return insertedAmps; - } - - /** - * Extracts x amps of y voltage from the node. - * @param voltage The voltage to be extracted from the node. - * @param amps The amps to be extracted from the node. - * @param simulate If true, the container will not be modified. - * @return The amps that were extracted from the node. - */ - default long extractAmps(long voltage, long amps, boolean simulate){ - if (voltage < 0 || amps < 0) return 0; - amps = Math.min(amps, this.availableAmpsOutput()); - amps = Math.min(amps, this.getEnergy() / this.getOutputVoltage()); - if (!simulate){ - extractEu(voltage * amps, false); - } - this.getState().extract(simulate, amps); - return amps; - } - /** * Extracts a given amount of energy from the node. * @param voltage The amount to be extracted from the node. diff --git a/common/src/main/java/tesseract/api/rf/RFController.java b/common/src/main/java/tesseract/api/rf/RFController.java index c53d3c1e..050bcdd2 100644 --- a/common/src/main/java/tesseract/api/rf/RFController.java +++ b/common/src/main/java/tesseract/api/rf/RFController.java @@ -262,7 +262,7 @@ public void insert(long pipePos, Direction side, RFTransaction transaction, ITra for (RFConsumer consumer : list) { long added = consumer.insert(Math.min(transaction.rf, consumer.getNode().maxInsert()), true); if (added <= 0) continue; - transaction.addData(added, rf -> consumer.insert(rf, true)); + transaction.addData(added, rf -> consumer.insert(rf, false)); } } } \ No newline at end of file diff --git a/common/src/main/java/tesseract/graph/Group.java b/common/src/main/java/tesseract/graph/Group.java index 013d002e..db2ac994 100644 --- a/common/src/main/java/tesseract/graph/Group.java +++ b/common/src/main/java/tesseract/graph/Group.java @@ -279,7 +279,8 @@ private void internalRemove(long pos, Consumer> split) { // The contains() check can be skipped here, because Graph will only call remove() if it knows that the group contains the entry. // For now, it is retained for completeness and debugging purposes. if (!contains(pos)) { - throw new IllegalArgumentException("Group::remove: Tried to call with a position that does not exist within the group."); + //Tesseract.LOGGER.error(new IllegalArgumentException("Group::remove: Tried to call with a position that does not exist within the group.")); + return; } // If removing the entry would not cause a group split, then it is safe to remove the entry directly. diff --git a/fabric/build.gradle b/fabric/build.gradle index 7a67bd51..ed1ac084 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -51,7 +51,7 @@ dependencies { transitive = false } modImplementation(include("earth.terrarium:botarium-fabric-${project.minecraft_version}:${project.botarium_version}")) - modImplementation(include("maven.modrinth:carbon-config:yIKfSms3")) + modImplementation(include("maven.modrinth:carbon-config:${project.carbon_config_fabric_version}")) } processResources { diff --git a/fabric/gradle.properties b/fabric/gradle.properties index 77ef402a..29b418db 100644 --- a/fabric/gradle.properties +++ b/fabric/gradle.properties @@ -1,3 +1,3 @@ energy_version=2.2.0 -mod_version=0.2.2 \ No newline at end of file +mod_version=0.2.3-pre1 \ No newline at end of file diff --git a/fabric/src/main/java/tesseract/api/fabric/wrapper/EnergyTileWrapper.java b/fabric/src/main/java/tesseract/api/fabric/wrapper/EnergyTileWrapper.java index 5e98b8ec..ee1989e3 100644 --- a/fabric/src/main/java/tesseract/api/fabric/wrapper/EnergyTileWrapper.java +++ b/fabric/src/main/java/tesseract/api/fabric/wrapper/EnergyTileWrapper.java @@ -23,32 +23,6 @@ public EnergyTileWrapper(BlockEntity tile, EnergyStorage storage) { this.storage = storage; } - @Override - public long insertAmps(long voltage, long amps, boolean simulate) { - try(Transaction transaction = Transaction.openOuter()) { - long inserted = storage.insert((long) (voltage * TesseractConfig.EU_TO_TRE_RATIO.get()), transaction); - if (inserted == voltage * TesseractConfig.EU_TO_TRE_RATIO.get()){ - if (!simulate) transaction.commit(); - return 1; - } - return 0; - } - - } - - @Override - public long extractAmps(long voltage, long amps, boolean simulate) { - try(Transaction transaction = Transaction.openOuter()) { - long inserted = storage.extract((long) (voltage * TesseractConfig.EU_TO_TRE_RATIO.get()), transaction); - if (inserted == voltage * TesseractConfig.EU_TO_TRE_RATIO.get()){ - if (!simulate) transaction.commit(); - return 1; - } - return 0; - } - - } - @Override public long insertEu(long voltage, boolean simulate) { try(Transaction transaction = Transaction.openOuter()) { diff --git a/fabric/src/main/java/tesseract/api/fabric/wrapper/IEnergyHandlerStorage.java b/fabric/src/main/java/tesseract/api/fabric/wrapper/IEnergyHandlerStorage.java index 49c6c1b4..c39a9124 100644 --- a/fabric/src/main/java/tesseract/api/fabric/wrapper/IEnergyHandlerStorage.java +++ b/fabric/src/main/java/tesseract/api/fabric/wrapper/IEnergyHandlerStorage.java @@ -13,13 +13,13 @@ public interface IEnergyHandlerStorage extends EnergyStorage { @Override default long insert(long maxReceive, TransactionContext context) { long euToInsert = (long) (maxReceive / TesseractConfig.EU_TO_TRE_RATIO.get()); - long amp = getEnergyHandler().insertAmps(euToInsert, 1, true); + long inserted = getEnergyHandler().insertEu(euToInsert, true); context.addCloseCallback((t, r) -> { if (r.wasCommitted()){ - getEnergyHandler().insertAmps(euToInsert, 1, false); + getEnergyHandler().insertEu(inserted, false); } }); - return amp == 1 ? maxReceive : 0; + return (long) (inserted * TesseractConfig.EU_TO_TRE_RATIO.get()); } @Override diff --git a/forge/build.gradle b/forge/build.gradle index 4f023202..1a750d2a 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -43,7 +43,7 @@ dependencies { exclude(group: "curse.maven") } testImplementation('junit:junit:4.11') - modImplementation(include("maven.modrinth:carbon-config:l6LTuPIs")) + modImplementation(include("maven.modrinth:carbon-config:${project.carbon_config_forge_version}")) } processResources { diff --git a/forge/gradle.properties b/forge/gradle.properties index f4ec53c9..79beafa7 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -1,3 +1,3 @@ loom.platform=forge -mod_version=0.2.2 \ No newline at end of file +mod_version=0.2.3-pre1 \ No newline at end of file diff --git a/forge/src/main/java/tesseract/api/forge/wrapper/EnergyTileWrapper.java b/forge/src/main/java/tesseract/api/forge/wrapper/EnergyTileWrapper.java index 1b4e1396..45d5a9c5 100644 --- a/forge/src/main/java/tesseract/api/forge/wrapper/EnergyTileWrapper.java +++ b/forge/src/main/java/tesseract/api/forge/wrapper/EnergyTileWrapper.java @@ -22,26 +22,6 @@ public EnergyTileWrapper(BlockEntity tile, IEnergyStorage storage) { this.storage = storage; } - @Override - public long insertAmps(long voltage, long amps, boolean simulate) { - long inserted = storage.receiveEnergy((int) (voltage * TesseractConfig.EU_TO_FE_RATIO.get()), simulate); - if (inserted == voltage * TesseractConfig.EU_TO_FE_RATIO.get()){ - return 1; - } - return 0; - - } - - @Override - public long extractAmps(long voltage, long amps, boolean simulate) { - long inserted = storage.extractEnergy((int) (voltage * TesseractConfig.EU_TO_FE_RATIO.get()), simulate); - if (inserted == voltage * TesseractConfig.EU_TO_FE_RATIO.get()){ - return 1; - } - return 0; - - } - @Override public long insertEu(long voltage, boolean simulate) { return (long) (storage.receiveEnergy((int) (voltage * TesseractConfig.EU_TO_FE_RATIO.get()), simulate) / TesseractConfig.EU_TO_FE_RATIO.get()); diff --git a/forge/src/main/java/tesseract/api/forge/wrapper/IEnergyHandlerStorage.java b/forge/src/main/java/tesseract/api/forge/wrapper/IEnergyHandlerStorage.java index 63c002ff..108426d4 100644 --- a/forge/src/main/java/tesseract/api/forge/wrapper/IEnergyHandlerStorage.java +++ b/forge/src/main/java/tesseract/api/forge/wrapper/IEnergyHandlerStorage.java @@ -12,8 +12,8 @@ public interface IEnergyHandlerStorage extends IEnergyStorage { @Override default int receiveEnergy(int maxReceive, boolean simulate) { long euToInsert = (long) (maxReceive / TesseractConfig.EU_TO_FE_RATIO.get()); - long amp = getEnergyHandler().insertAmps(euToInsert, 1, simulate); - return amp == 1 ? maxReceive : 0; + long inserted = getEnergyHandler().insertEu(euToInsert, simulate); + return (int) (inserted * TesseractConfig.EU_TO_FE_RATIO.get()); } @Override diff --git a/gradle.properties b/gradle.properties index 14247c01..15476e3b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,6 +19,8 @@ energy_version=2.3.0 nightconfig_version=3.6.5 rei_version=9.1.595 botarium_version=1.8.2 +carbon_config_fabric_version=h86rA6tH +carbon_config_forge_version=92RIAvni maven_group=io.github.gregtechintergalactical tesseract_archive_base_name=TesseractAPI