Skip to content

Commit 95ac4b8

Browse files
committed
rewrote breeder rods a little
1 parent 97f336f commit 95ac4b8

File tree

4 files changed

+31
-57
lines changed

4 files changed

+31
-57
lines changed

src/main/java/org/gtreimagined/gt4r/reactor/components/FuelType.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
import java.util.List;
88

9-
public record FuelType(int durability, double energyMult, double heatMult, int pulsesPerTick, int connectivityPulses, boolean isMox, double explosionMult, double moxHeatCoefficient, double moxEUCoefficient, List<int2> pulseArea, List<int2> heatPulseArea) {
9+
public record FuelType(int durability, double energyMult, double heatMult, int pulsesPerTick, int connectivityPulses, boolean isMox, double explosionMult, double moxHeatCoefficient, double moxEUCoefficient, int breedingHeat, List<int2> pulseArea, List<int2> heatPulseArea) {
1010
public static final List<int2> DEFAULT_AREA = ImmutableList.of(new int2(-1, 0), new int2(1, 0), new int2(0, -1), new int2(0, 1));
1111
public static final List<int2> LARGE_PULSES_AREA = ImmutableList.of(new int2(-1, 0), new int2(1, 0), new int2(0, -1), new int2(0, 1), new int2(-1, -1), new int2(1, -1), new int2(-1, 1), new int2(1, 1));
1212

1313
public static final FuelType URANIUM = new FuelType(10000, 1.0, 4.0, 1, 1, false, 1.0);
1414

1515
public FuelType(int durability, double energyMult, double heatMult, int pulsesPerTick, int connectivityPulses, boolean isMox, double explosionMult){
16-
this(durability, energyMult, heatMult, pulsesPerTick, connectivityPulses, isMox, explosionMult, 2.0, Config.MOX_EU_COEFFICIENT, DEFAULT_AREA, DEFAULT_AREA);
16+
this(durability, energyMult, heatMult, pulsesPerTick, connectivityPulses, isMox, explosionMult, 2.0, Config.MOX_EU_COEFFICIENT, 3000, DEFAULT_AREA, DEFAULT_AREA);
1717
}
1818
}

src/main/java/org/gtreimagined/gt4r/reactor/components/adapters/BreederRodAdapter.java

+13-31
Original file line numberDiff line numberDiff line change
@@ -38,43 +38,25 @@ public ItemStack getItemStack() {
3838
}
3939

4040
@Override
41-
public void onHeatTick(boolean isActive) {
42-
if (!isActive) {
43-
return;
44-
}
45-
46-
int neighbouringRods = 0;
47-
48-
for (var dir : InventoryDirection.values()) {
49-
int x2 = dir.offsetX(x);
50-
int y2 = dir.offsetY(y);
51-
52-
if (x2 < 0 || y2 < 0 || x2 >= reactor.getWidth() || y2 >= reactor.getHeight()) {
53-
continue;
54-
}
55-
56-
var neighbour = reactor.getComponent(x2, y2);
41+
public boolean acceptPulse(IComponentAdapter source, boolean heatTick) {
42+
if (heatTick) {
43+
int heatMultiplier = 1 + reactor.getHullHeat() / breederRod.getFuelType().breedingHeat();
5744

58-
if (neighbour != null) {
59-
neighbouringRods += neighbour.getFuelRodCount();
60-
}
61-
}
62-
63-
int heatMultiplier = 1 + reactor.getHullHeat() / breederRod.getReactorHeatDivisor(itemStack)
64-
* breederRod.getHeatMultiplier(itemStack);
45+
int storedNeutrons = breederRod.getStoredNeutrons(itemStack);
6546

66-
int storedNeutrons = breederRod.getStoredNeutrons(itemStack);
47+
storedNeutrons += heatMultiplier;
6748

68-
storedNeutrons += neighbouringRods * heatMultiplier;
49+
int max = breederRod.getMaxNeutrons(itemStack);
6950

70-
int max = breederRod.getMaxNeutrons(itemStack);
51+
storedNeutrons = Math.min(storedNeutrons, max);
7152

72-
storedNeutrons = Math.min(storedNeutrons, max);
53+
breederRod.setNeutrons(itemStack, storedNeutrons);
7354

74-
breederRod.setNeutrons(itemStack, storedNeutrons);
75-
76-
if (storedNeutrons >= max) {
77-
reactor.setItem(x, y, breederRod.getProduct(itemStack).copy());
55+
if (storedNeutrons >= max) {
56+
reactor.setItem(x, y, breederRod.getProduct(itemStack).copy());
57+
}
7858
}
59+
return true;
7960
}
61+
8062
}

src/main/java/org/gtreimagined/gt4r/reactor/item/foreign/ForeignBreederRodItem.java

+10-17
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import net.minecraft.world.item.Item;
88
import net.minecraft.world.item.ItemStack;
9+
import org.gtreimagined.gt4r.reactor.components.FuelType;
910
import org.gtreimagined.gt4r.reactor.components.IComponentAdapter;
1011
import org.gtreimagined.gt4r.reactor.components.IComponentAdapterFactory;
1112
import org.gtreimagined.gt4r.reactor.components.IReactorGrid;
@@ -16,17 +17,14 @@ public class ForeignBreederRodItem implements IBreederRod, IComponentAdapterFact
1617

1718
@Nonnull
1819
private final Item item;
19-
20-
private final int heatDivisor, heatMultiplier, maxNeutrons;
20+
private final FuelType fuelType;
2121

2222
@Nullable
2323
private ItemStack product;
2424

25-
public ForeignBreederRodItem(@Nonnull Item item, int heatDivisor, int heatMultiplier, int maxNeutrons) {
25+
public ForeignBreederRodItem(@Nonnull Item item, FuelType fuelType) {
2626
this.item = item;
27-
this.heatDivisor = heatDivisor;
28-
this.heatMultiplier = heatMultiplier;
29-
this.maxNeutrons = maxNeutrons;
27+
this.fuelType = fuelType;
3028
}
3129

3230
@Override
@@ -45,9 +43,14 @@ public ItemStack getProduct(@Nonnull ItemStack itemStack) {
4543
return product;
4644
}
4745

46+
@Override
47+
public FuelType getFuelType() {
48+
return fuelType;
49+
}
50+
4851
@Override
4952
public int getMaxNeutrons(@Nonnull ItemStack itemStack) {
50-
return maxNeutrons;
53+
return fuelType.durability();
5154
}
5255

5356
@Override
@@ -60,16 +63,6 @@ public void setNeutrons(@Nonnull ItemStack itemStack, int neutrons) {
6063
itemStack.setDamageValue(neutrons);
6164
}
6265

63-
@Override
64-
public int getReactorHeatDivisor(@Nonnull ItemStack itemStack) {
65-
return heatDivisor;
66-
}
67-
68-
@Override
69-
public int getHeatMultiplier(@Nonnull ItemStack itemStack) {
70-
return heatMultiplier;
71-
}
72-
7366
public void setProduct(@Nullable ItemStack product) {
7467
this.product = product;
7568
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package org.gtreimagined.gt4r.reactor.item.interfaces;
22

33
import net.minecraft.world.item.ItemStack;
4+
import org.gtreimagined.gt4r.reactor.components.FuelType;
45

56
import javax.annotation.Nonnull;
67

78

89
public interface IBreederRod {
910

10-
public ItemStack getProduct(@Nonnull ItemStack itemStack);
11+
ItemStack getProduct(@Nonnull ItemStack itemStack);
1112

12-
public int getMaxNeutrons(@Nonnull ItemStack itemStack);
13+
FuelType getFuelType();
1314

14-
public int getStoredNeutrons(@Nonnull ItemStack itemStack);
15+
int getMaxNeutrons(@Nonnull ItemStack itemStack);
1516

16-
public void setNeutrons(@Nonnull ItemStack itemStack, int neutrons);
17+
int getStoredNeutrons(@Nonnull ItemStack itemStack);
1718

18-
public int getReactorHeatDivisor(@Nonnull ItemStack itemStack);
19-
20-
public int getHeatMultiplier(@Nonnull ItemStack itemStack);
19+
void setNeutrons(@Nonnull ItemStack itemStack, int neutrons);
2120
}

0 commit comments

Comments
 (0)