Skip to content

Commit 931e369

Browse files
committed
NullPointerException when contentHandler = null
1 parent e4de801 commit 931e369

File tree

22 files changed

+147
-122
lines changed

22 files changed

+147
-122
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ repositories {
108108
}
109109

110110
dependencies {
111-
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
112-
implementation 'org.spongepowered:mixin:0.8.5'
111+
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
112+
implementation 'org.spongepowered:mixin:0.8.5'
113113
minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
114114

115115
compileOnly fg.deobf("com.gregtechceu.gtceu:gtceu-${mc_version}:${gtm_version}"){

src/generated/resources/assets/nuclearcraft/lang/en_us.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@
208208
"block.nuclearcraft.manganese_heat_sink": "Fission Reactor Manganese Heat Sink",
209209
"block.nuclearcraft.manufactory": "Manufactory",
210210
"block.nuclearcraft.melter": "Melter",
211-
"block.nuclearcraft.msr_controller": "Msr Controller",
212-
"block.nuclearcraft.msr_fuel_cell": "Msr Fuel Cell",
211+
"block.nuclearcraft.msr_controller": "(WIP) Msr Controller",
212+
"block.nuclearcraft.msr_fuel_cell": "(WIP) Msr Fuel Cell",
213213
"block.nuclearcraft.multiblock_builder": "Creative Multiblock Builder",
214214
"block.nuclearcraft.nether_brick_cooler": "Accelerator Nether Brick Cooler",
215215
"block.nuclearcraft.nether_brick_heat_sink": "Fission Reactor Nether Brick Heat Sink",
@@ -2290,6 +2290,9 @@
22902290
"label.kugelblitz.frequency": "Quantum Frequency: %s",
22912291
"label.kugelblitz.stability": "Stability: %s%%",
22922292
"label.kugelblitz.transformation": "Transformation",
2293+
"label.nuclearcraft.cross_section": "Cross-section: %s%%",
2294+
"label.nuclearcraft.energy": "Energy: %s",
2295+
"label.nuclearcraft.energy_range": "Energy: %s - %s",
22932296
"leacher.tooltip.invalid_pump": "Pump in the corner not found",
22942297
"leacher.tooltip.valid_pump": "Pump - Ok",
22952298
"message.heat_sink.invalid0": "Not sure if it's valid",

src/generated/resources/data/nuclearcraft/advancements/recipes/misc/msr_controller.json

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/generated/resources/data/nuclearcraft/recipes/msr_controller.json

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorBeamPortBE.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package igentuman.nc.block.accelerator.entity;
22

3-
import igentuman.api.nc.multiblock.MultiblockAttachable;
43
import igentuman.nc.NuclearCraft;
5-
import igentuman.nc.block.entity.NuclearCraftBE;
4+
import igentuman.nc.block.MultiblockPortBE;
65
import igentuman.nc.block.target_chamber.entity.TargetChamberBeamPortBE;
76
import igentuman.nc.content.particles.ParticleStack;
87
import igentuman.nc.handler.sided.capability.FluidCapabilityHandler;
@@ -32,7 +31,7 @@
3231
import static igentuman.nc.util.ModUtil.isCcLoaded;
3332
import static igentuman.nc.util.ModUtil.isOC2Loaded;
3433

35-
public class AcceleratorBeamPortBE extends NuclearCraftBE implements MultiblockAttachable {
34+
public class AcceleratorBeamPortBE extends MultiblockPortBE {
3635

3736
public static String NAME = "accelerator_beam_port";
3837
@NBTField

src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorIonSourcePortBE.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package igentuman.nc.block.accelerator.entity;
22

3-
import igentuman.api.nc.multiblock.MultiblockAttachable;
43
import igentuman.nc.NuclearCraft;
5-
import igentuman.nc.block.entity.NuclearCraftBE;
4+
import igentuman.nc.block.MultiblockPortBE;
65
import igentuman.nc.handler.config.CommonConfig;
76
import igentuman.nc.handler.sided.capability.FluidCapabilityHandler;
87
import igentuman.nc.multiblock.AbstractMultiblock;
@@ -31,7 +30,7 @@
3130
import static igentuman.nc.util.ModUtil.isCcLoaded;
3231
import static igentuman.nc.util.ModUtil.isOC2Loaded;
3332

34-
public class AcceleratorIonSourcePortBE extends NuclearCraftBE implements MultiblockAttachable {
33+
public class AcceleratorIonSourcePortBE extends MultiblockPortBE {
3534

3635
public static String NAME = "accelerator_ion_source_port";
3736
@NBTField

src/main/java/igentuman/nc/block/entity/processor/NCProcessorBE.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public NCProcessorBE(BlockPos pPos, BlockState pBlockState, String name) {
9999
contentHandler = new SidedContentHandler(
100100
prefab().getSlotsConfig().getInputItems(), prefab().getSlotsConfig().getOutputItems(),
101101
prefab().getSlotsConfig().getInputFluids(), prefab().getSlotsConfig().getOutputFluids());
102-
contentHandler.setBlockEntity(this);
102+
contentHandler().setBlockEntity(this);
103103
energyStorage = createEnergy();
104104
energyStorage.setInputEnergyTier(GTCEU_CONFIG.PROCESSOR_ENERGY_TIER.get().ordinal());
105105
energyStorage.setOutputEnergyTier(GTCEU_CONFIG.PROCESSOR_ENERGY_TIER.get().ordinal());
@@ -111,6 +111,7 @@ public NCProcessorBE(BlockPos pPos, BlockState pBlockState, String name) {
111111
for(int i = 0; i < prefab().getSlotsConfig().getInputFluids(); i++) {
112112
contentHandler().setAllowedInputFluids(i, this::getAllowedInputFluids);
113113
}
114+
recipeInfo().setContentHandler(contentHandler());
114115
}
115116

116117
public void handleOverVoltage() {
@@ -167,6 +168,7 @@ public void updateRecipe() {
167168
//check if last recipe is still valid
168169
if(recipe != null) {
169170
if(recipe.test(contentHandler())) {
171+
recipeInfo().setContentHandler(contentHandler());
170172
recipeInfo().ticksProcessed = 0;
171173
recipeInfo().setParallelProcessing(parallelRecipes());
172174
if (recipeInfo().consumeInputs(contentHandler())) {

src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberBeamPortBE.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package igentuman.nc.block.target_chamber.entity;
22

3-
import igentuman.api.nc.multiblock.MultiblockAttachable;
43
import igentuman.nc.NuclearCraft;
4+
import igentuman.nc.block.MultiblockPortBE;
55
import igentuman.nc.block.accelerator.entity.AcceleratorBeamPortBE;
6-
import igentuman.nc.block.entity.NuclearCraftBE;
76
import igentuman.nc.content.particles.ParticleStack;
87
import igentuman.nc.handler.sided.capability.FluidCapabilityHandler;
98
import igentuman.nc.multiblock.AbstractMultiblock;
@@ -34,7 +33,7 @@
3433
import static igentuman.nc.util.ModUtil.isOC2Loaded;
3534
import static igentuman.nc.util.PortMode.PORT_MODE;
3635

37-
public class TargetChamberBeamPortBE extends NuclearCraftBE implements MultiblockAttachable {
36+
public class TargetChamberBeamPortBE extends MultiblockPortBE {
3837

3938
public static String NAME = "target_chamber_beam_port";
4039
@NBTField

src/main/java/igentuman/nc/block/turbine/entity/TurbinePortBE.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package igentuman.nc.block.turbine.entity;
22

3-
import igentuman.api.nc.multiblock.MultiblockAttachable;
43
import igentuman.nc.NuclearCraft;
4+
import igentuman.nc.block.MultiblockPortBE;
55
import igentuman.nc.handler.sided.capability.FluidCapabilityHandler;
6+
import igentuman.nc.multiblock.AbstractMultiblock;
67
import igentuman.nc.multiblock.MultiblockHandler;
8+
import igentuman.nc.multiblock.turbine.TurbineMultiblock;
9+
import igentuman.nc.multiblock.turbine.TurbineRegistration;
710
import igentuman.nc.util.annotation.NBTField;
811
import net.minecraft.core.BlockPos;
912
import net.minecraft.core.Direction;
@@ -27,18 +30,37 @@
2730
import static igentuman.nc.util.ModUtil.isGtLoaded;
2831
import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY;
2932

30-
public class TurbinePortBE extends TurbineBE implements MultiblockAttachable {
33+
public class TurbinePortBE extends MultiblockPortBE {
3134
public static String NAME = "turbine_port";
3235
@NBTField
3336
public byte analogSignal = 0;
3437
@NBTField
3538
public byte comparatorMode = SignalSource.OVERFLOW;
36-
39+
protected TurbineMultiblock multiblock;
3740
@NBTField
3841
public BlockPos controllerPos;
39-
42+
public TurbineControllerBE controller;
4043
public TurbinePortBE(BlockPos pPos, BlockState pBlockState) {
41-
super(pPos, pBlockState, NAME);
44+
super(TurbineRegistration.TURBINE_BE.get(NAME).get(), pPos, pBlockState);
45+
}
46+
47+
@Override
48+
public void setMultiblock(AbstractMultiblock multiblock) {
49+
if(this.multiblock == multiblock) {
50+
return;
51+
}
52+
this.multiblock = (TurbineMultiblock) multiblock;
53+
if (this.multiblock != null) {
54+
controllerPos = this.multiblock.controller().controllerBE().getBlockPos();
55+
controller = this.multiblock.controller().controllerBE();
56+
setChanged();
57+
level.updateNeighborsAt(worldPosition, getBlockState().getBlock());
58+
}
59+
}
60+
61+
62+
public TurbineMultiblock getMultiblock() {
63+
return multiblock;
4264
}
4365
public Direction getFacing() {
4466
return getBlockState().getValue(BlockStateProperties.HORIZONTAL_FACING);

src/main/java/igentuman/nc/compat/emi/TargetChamberEmiCategory.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import dev.emi.emi.api.widget.WidgetHolder;
88
import igentuman.nc.block.target_chamber.entity.TargetChamberControllerBE;
99
import igentuman.nc.compat.emi.ingredient.ParticleEmiStack;
10+
import igentuman.nc.util.Units;
11+
import net.minecraft.network.chat.MutableComponent;
1012
import net.minecraft.resources.ResourceLocation;
1113
import net.minecraft.world.item.ItemStack;
1214
import net.minecraft.world.phys.Vec2;
@@ -17,6 +19,7 @@
1719
import static igentuman.nc.NuclearCraft.rl;
1820
import static igentuman.nc.compat.GlobalVars.CATALYSTS;
1921
import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BLOCKS;
22+
import static igentuman.nc.util.TextUtils.__;
2023
import static net.minecraft.world.item.Items.BARRIER;
2124

2225
public class TargetChamberEmiCategory extends BasicEmiRecipe {
@@ -33,7 +36,7 @@ public class TargetChamberEmiCategory extends BasicEmiRecipe {
3336
private final TargetChamberControllerBE.Recipe recipe;
3437

3538
public TargetChamberEmiCategory(TargetChamberControllerBE.Recipe recipe) {
36-
super(CATEGORY, recipe.getId(), 160, 105);
39+
super(CATEGORY, recipe.getId(), 160, 107);
3740
this.recipe = recipe;
3841
for (int i = 0; i < recipe.inputParticles.length; i++) {
3942
this.inputs.add(ParticleEmiStack.of(recipe.inputParticles[i]));
@@ -75,5 +78,30 @@ public void addWidgets(WidgetHolder widgets) {
7578
}
7679

7780
widgets.addSlot(EmiStack.of(recipe.getResultItem()), 101, 28).recipeContext(this);
81+
82+
// Add labels (same as JEI version)
83+
addLabels(widgets);
84+
}
85+
86+
private void addLabels(WidgetHolder widgets) {
87+
if (recipe == null || recipe.inputParticles == null || recipe.inputParticles.length == 0) {
88+
return;
89+
}
90+
91+
var inputParticle = recipe.inputParticles[0];
92+
93+
int labelY = 77;
94+
int labelX = 0;
95+
96+
long minEnergy = inputParticle.getMeanEnergy() * 1000;
97+
long maxEnergy = recipe.maxEnergy * 1000;
98+
MutableComponent energyLabel = __("label.nuclearcraft.energy_range", Units.getSIFormat(minEnergy, "eV"), Units.getSIFormat(maxEnergy, "eV"));
99+
if (minEnergy == maxEnergy) {
100+
energyLabel = __("label.nuclearcraft.energy", Units.getSIFormat(minEnergy, "eV"));
101+
}
102+
103+
widgets.addText(__("tooltip.nuclearcraft.particlestack.focus", Units.getSIFormat(inputParticle.getFocus(), "")), labelX, labelY, 0xFFFFFF, false);
104+
widgets.addText(__("label.nuclearcraft.cross_section", String.format("%.1f", recipe.crossSection * 100)), labelX, labelY + 10, 0xFFFFFF, false);
105+
widgets.addText(energyLabel, labelX, labelY + 20, 0xFFFFFF, false);
78106
}
79107
}

0 commit comments

Comments
 (0)