Skip to content

Commit

Permalink
Isolator crash fix revision (#56)
Browse files Browse the repository at this point in the history
Co-authored-by: Maya <[email protected]>
(cherry picked from commit 5f1b5da)
  • Loading branch information
Astatine5985 authored and Dream-Master committed Feb 23, 2025
1 parent 59b01f2 commit b8d12e3
Showing 1 changed file with 14 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package binnie.genetics.machine.isolator;

import java.util.Arrays;
import java.util.Objects;
import java.util.Random;

import net.minecraft.item.ItemStack;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import binnie.core.genetics.Gene;
import binnie.core.machines.Machine;
import binnie.core.machines.inventory.IChargedSlots;
Expand All @@ -17,14 +16,13 @@
import binnie.genetics.item.ItemSequence;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosome;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.ISpeciesRoot;

public class IsolatorComponentLogic extends ComponentProcessSetCost implements IProcess {

private static final Logger LOG = LogManager.getLogger("Genetics");

protected float enzymePerProcess = 0.5f;
protected float ethanolPerProcess = 10.0f;

Expand Down Expand Up @@ -83,22 +81,19 @@ protected void onFinishTask() {
}

final IChromosomeType[] karyo = root.getKaryotype();
final IChromosomeType chromosome = karyo[rand.nextInt(karyo.length)];
final IAllele allele;
try {
allele = rand.nextBoolean() ? individual.getGenome().getActiveAllele(chromosome)
: individual.getGenome().getInactiveAllele(chromosome);
} catch (NullPointerException npe) {
// just return and eat the power without eating the rest of it
LOG.warn(
"NPE occurred on unknown gene: name: " + chromosome.getName()
+ " | ordinal: "
+ chromosome.ordinal()
+ " | is null? "
+ (individual.getGenome().getChromosomes()[chromosome.ordinal()] == null ? "true"
: "false"));

final IChromosome[] chromosomes = individual.getGenome().getChromosomes();
if (Arrays.stream(chromosomes).allMatch(Objects::isNull)) {
return;
}

IChromosomeType chromosome;
do {
chromosome = karyo[rand.nextInt(karyo.length)];
} while (chromosomes[chromosome.ordinal()] == null);

final IAllele allele = rand.nextBoolean() ? individual.getGenome().getActiveAllele(chromosome)
: individual.getGenome().getInactiveAllele(chromosome);
final Gene gene = new Gene(allele, chromosome, root);

ItemStack serum = ItemSequence.create(gene);
Expand Down

0 comments on commit b8d12e3

Please sign in to comment.