Skip to content

Commit

Permalink
Nuclear Science JEI Integration
Browse files Browse the repository at this point in the history
Adds JEI support for Nuclear Science

I also patched a small recipe bug
  • Loading branch information
skiprocks999 committed Apr 16, 2021
1 parent eaf58b7 commit c9f7a56
Show file tree
Hide file tree
Showing 18 changed files with 1,233 additions and 5 deletions.
1 change: 1 addition & 0 deletions build.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gradlew build
27 changes: 24 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,12 @@ minecraft {

dependencies {
minecraft 'net.minecraftforge:forge:1.16.5-36.0.1'
compile fileTree("C:/AmpzLibz")
compile fileTree("E:/Games/Minecraft/Mod Code/Mods/JARS")
/*
Compiles against source code as well as JAR at runtime. Recommend to keep it
*/
compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.3.81:api")
runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.3.81")
}

// Example for how to get properties into the manifest for reading by the runtime..
Expand Down Expand Up @@ -138,6 +143,21 @@ publishing {
}
}

/*
This needs to stay. It's the Maven repository for JEI along with a fallback!
*/
repositories{
mavenCentral()
maven {
name = "Progwml6 maven"
url = "https://dvs1.progwml6.com/files/maven/"
}
maven {
name = "ModMaven"
url = "https://modmaven.k-4u.nl"
}
}

ext.gittagnew = 'v'+project.version

task createTag(type: GitTag) {
Expand All @@ -151,7 +171,7 @@ task pushTag(type: GitPush, dependsOn: createTag) {
}
tasks.curseforge.dependsOn jar
tasks.curseforge.dependsOn pushTag

/*
curseforge {
apiKey = System.getenv("CURSEFORGE_KEY")
project {
Expand All @@ -164,4 +184,5 @@ curseforge {
displayName=project.name+' ' + project.version
}
}
}
}
*/
1 change: 1 addition & 0 deletions refresh dependencies.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gradlew --refresh-dependencies&&gradlew eclipse --info --stacktrace
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
package nuclearscience.compatability.jei;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

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

import nuclearscience.compatability.jei.recipecategories.psuedorecipes.PsuedoGasCentrifugeRecipe;
import nuclearscience.compatability.jei.recipecategories.psuedorecipes.NuclearSciencePsuedoRecipes;
import electrodynamics.compatability.jei.recipecategories.psuedorecipes.PsuedoSolAndLiqToLiquidRecipe;
import electrodynamics.compatability.jei.recipecategories.psuedorecipes.PsuedoSolAndLiqToSolidRecipe;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.ChemicalExtractorRecipeCategory;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.FissionReactorRecipeCategory;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.GasCentrifugeRecipeCategory;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.NuclearBoilerRecipeCategory;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.ParticleAcceleratorAntiMatterRecipeCategory;
import nuclearscience.compatability.jei.recipecategories.specificmachines.nuclearscience.ParticleAcceleratorDarkMatterRecipeCategory;

import electrodynamics.prefab.tile.processing.O2OProcessingRecipe;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.registration.IGuiHandlerRegistration;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.ModList;
import nuclearscience.client.screen.ScreenNuclearBoiler;
import nuclearscience.client.screen.ScreenChemicalExtractor;
import nuclearscience.client.screen.ScreenGasCentrifuge;
import nuclearscience.client.screen.ScreenParticleInjector;
import nuclearscience.client.screen.ScreenReactorCore;
import nuclearscience.References;

@JeiPlugin
public class NuclearSciencePlugin implements IModPlugin{

//public static final boolean isNuclearScienceLoaded = ModList.get().isLoaded("nuclearscience");

private static final Logger logger = LogManager.getLogger(References.ID);

@Override
public ResourceLocation getPluginUid() {
return new ResourceLocation(nuclearscience.References.ID, "nucsci_jei_plugin");
}

@Override
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration)
{
//Gas Centrifuge
registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockGasCentrifuge),
GasCentrifugeRecipeCategory.UID);

//Nuclear Boiler
registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockChemicalBoiler),
NuclearBoilerRecipeCategory.UID);

//Chemical Extractor
registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockChemicalExtractor),
ChemicalExtractorRecipeCategory.UID);

//Fisison Reactor

registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockReactorCore),
FissionReactorRecipeCategory.UID);

//Anti Matter

registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockParticleInjector),
ParticleAcceleratorAntiMatterRecipeCategory.UID);

//Dark Matter

registration.addRecipeCatalyst(new ItemStack(nuclearscience.DeferredRegisters.blockParticleInjector),
ParticleAcceleratorDarkMatterRecipeCategory.UID);
}

@Override
public void registerRecipes(IRecipeRegistration registration)
{
NuclearSciencePsuedoRecipes.addNuclearScienceRecipes();

//Gas Centrifuge
Set<PsuedoGasCentrifugeRecipe> gasCentrifugeRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.GAS_CENTRIFUGE_RECIPES);

registration.addRecipes(gasCentrifugeRecipes, GasCentrifugeRecipeCategory.UID);

//Nuclear Boiler
Set<PsuedoSolAndLiqToLiquidRecipe> nuclearBoilerRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.NUCLEAR_BOILER_RECIPES);

registration.addRecipes(nuclearBoilerRecipes, NuclearBoilerRecipeCategory.UID);

//Chemical Extractor
Set<PsuedoSolAndLiqToSolidRecipe> chemicalExtractorRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.CHEMICAL_EXTRACTOR_RECIPES);

registration.addRecipes(chemicalExtractorRecipes, ChemicalExtractorRecipeCategory.UID);

Set<O2OProcessingRecipe> fissionReactorRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.FISSION_REACTOR_RECIPES);
registration.addRecipes(fissionReactorRecipes, FissionReactorRecipeCategory.UID);

Set<O2OProcessingRecipe> antiMatterRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.ANTI_MATTER_RECIPES);
registration.addRecipes(antiMatterRecipes, ParticleAcceleratorAntiMatterRecipeCategory.UID);

Set<O2OProcessingRecipe> darkMatterRecipes = new HashSet<>(NuclearSciencePsuedoRecipes.DARK_MATTER_RECIPES);
registration.addRecipes(darkMatterRecipes, ParticleAcceleratorDarkMatterRecipeCategory.UID);

nuclearScienceInfoTabs(registration);
}

@Override
public void registerCategories(IRecipeCategoryRegistration registration)
{
//Gas Centrifuge
registration.addRecipeCategories(new GasCentrifugeRecipeCategory(registration.getJeiHelpers().getGuiHelper()));

//Nuclear Boiler
registration.addRecipeCategories(new NuclearBoilerRecipeCategory(registration.getJeiHelpers().getGuiHelper()));

//Chemical Extractor
registration.addRecipeCategories(new ChemicalExtractorRecipeCategory(registration.getJeiHelpers().getGuiHelper()));

//Fision Reactor
registration.addRecipeCategories(new FissionReactorRecipeCategory(registration.getJeiHelpers().getGuiHelper()));

//Anti Matter
registration.addRecipeCategories(new ParticleAcceleratorAntiMatterRecipeCategory(registration.getJeiHelpers().getGuiHelper()));

//Dark Matter
registration.addRecipeCategories(new ParticleAcceleratorDarkMatterRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
}

@Override
public void registerGuiHandlers(IGuiHandlerRegistration registry) {
int[] arrowLocation = {97,31,22,15};

//Nuclear Boiler

registry.addRecipeClickArea(ScreenNuclearBoiler.class, arrowLocation[0], arrowLocation[1], arrowLocation[2], arrowLocation[3],
NuclearBoilerRecipeCategory.UID);

//Chemical Extractor
registry.addRecipeClickArea(ScreenChemicalExtractor.class, arrowLocation[0], arrowLocation[1], arrowLocation[2], arrowLocation[3],
ChemicalExtractorRecipeCategory.UID);

//Gas Centrifuge
registry.addRecipeClickArea(ScreenGasCentrifuge.class,91, 22, 32, 41, GasCentrifugeRecipeCategory.UID);

//Fission Reactor
registry.addRecipeClickArea(ScreenReactorCore.class,117, 43, 14, 13, FissionReactorRecipeCategory.UID);

//Particle Accelerator
registry.addRecipeClickArea(ScreenParticleInjector.class,102, 33, 28, 14,
ParticleAcceleratorAntiMatterRecipeCategory.UID,ParticleAcceleratorDarkMatterRecipeCategory.UID);

}


private void nuclearScienceInfoTabs(IRecipeRegistration registration) {

/* Machines currently with tabs:
Fission Reactor Core
Fusion Reactor Core
Chemical Boiler
Chemical Extractor
Electromagnet
Electromagnetic Booster
Electromagnetic Switch
Gas Centrifuge
Particle Injector
Quantum Capacitor
Radioisotope Generator
Turbine
*/
ArrayList<ItemStack> nsMachines = NuclearSciencePsuedoRecipes.NUCLEAR_SCIENCE_MACHINES;
String temp;

for(ItemStack itemStack: nsMachines) {
temp = itemStack.getItem().toString();
registration.addIngredientInfo(itemStack, VanillaTypes.ITEM, "info.jei.block." + temp);
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package nuclearscience.compatability.jei.recipecategories.psuedorecipes;

import java.util.ArrayList;

import electrodynamics.prefab.tile.processing.O2OProcessingRecipe;
import nuclearscience.compatability.jei.recipecategories.psuedorecipes.PsuedoGasCentrifugeRecipe;
import electrodynamics.compatability.jei.recipecategories.psuedorecipes.PsuedoRecipes;
import electrodynamics.compatability.jei.recipecategories.psuedorecipes.PsuedoSolAndLiqToLiquidRecipe;
import electrodynamics.compatability.jei.recipecategories.psuedorecipes.PsuedoSolAndLiqToSolidRecipe;
import net.minecraft.fluid.Fluid;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;

public class NuclearSciencePsuedoRecipes {

private static ArrayList<ArrayList<ItemStack>> NUCLEAR_SCIENCE_ITEMS = new ArrayList<ArrayList<ItemStack>>();
private static ArrayList<Fluid> NUCLEAR_SCIENCE_FLUIDS = new ArrayList<Fluid>();
public static ArrayList<ItemStack> NUCLEAR_SCIENCE_MACHINES = new ArrayList<ItemStack>();

public static ArrayList<PsuedoSolAndLiqToLiquidRecipe> NUCLEAR_BOILER_RECIPES = new ArrayList<PsuedoSolAndLiqToLiquidRecipe>();
public static ArrayList<PsuedoSolAndLiqToSolidRecipe> CHEMICAL_EXTRACTOR_RECIPES = new ArrayList<PsuedoSolAndLiqToSolidRecipe>();
public static ArrayList<PsuedoGasCentrifugeRecipe> GAS_CENTRIFUGE_RECIPES = new ArrayList<PsuedoGasCentrifugeRecipe>();
public static ArrayList<O2OProcessingRecipe> FISSION_REACTOR_RECIPES = new ArrayList<O2OProcessingRecipe>();
public static ArrayList<O2OProcessingRecipe> ANTI_MATTER_RECIPES = new ArrayList<O2OProcessingRecipe>();
public static ArrayList<O2OProcessingRecipe> DARK_MATTER_RECIPES = new ArrayList<O2OProcessingRecipe>();

public static void addNuclearScienceRecipes() {
PsuedoRecipes.addElectrodynamicsMachines();
PsuedoRecipes.addElectrodynamicsFluids();
PsuedoRecipes.addElectrodynamicsItems();

addNuclearScienceMachines();
addNuclearScienceFluids();
addNuclearScienceItems();

/*Nuclear Boiler*/

//UF6 from Yellowcake
NUCLEAR_BOILER_RECIPES.add(new PsuedoSolAndLiqToLiquidRecipe(NUCLEAR_SCIENCE_ITEMS.get(0).get(0),PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(3).get(1),
new FluidStack(PsuedoRecipes.ELECTRODYNAMICS_FLUIDS.get(0),800), new FluidStack(NUCLEAR_SCIENCE_FLUIDS.get(0),2500),
PsuedoSolAndLiqToLiquidRecipe.UHEXFLOUR));

//UF6 from U238
NUCLEAR_BOILER_RECIPES.add(new PsuedoSolAndLiqToLiquidRecipe(NUCLEAR_SCIENCE_ITEMS.get(0).get(1),PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(3).get(1),
new FluidStack(PsuedoRecipes.ELECTRODYNAMICS_FLUIDS.get(0),1600), new FluidStack(NUCLEAR_SCIENCE_FLUIDS.get(0),2000),
PsuedoSolAndLiqToLiquidRecipe.UHEXFLOUR));

/*Chemical Extractor*/

CHEMICAL_EXTRACTOR_RECIPES.add(new PsuedoSolAndLiqToSolidRecipe(PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(0).get(7), PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(3).get(1),
new FluidStack(PsuedoRecipes.ELECTRODYNAMICS_FLUIDS.get(0),1600), NUCLEAR_SCIENCE_ITEMS.get(0).get(0)));

CHEMICAL_EXTRACTOR_RECIPES.add(new PsuedoSolAndLiqToSolidRecipe(NUCLEAR_SCIENCE_ITEMS.get(1).get(0), PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(3).get(1),
new FluidStack(PsuedoRecipes.ELECTRODYNAMICS_FLUIDS.get(0),4800), NUCLEAR_SCIENCE_ITEMS.get(1).get(1)));

CHEMICAL_EXTRACTOR_RECIPES.add(new PsuedoSolAndLiqToSolidRecipe(NUCLEAR_SCIENCE_ITEMS.get(1).get(1), PsuedoRecipes.ELECTRODYNAMICS_ITEMS.get(3).get(1),
new FluidStack(PsuedoRecipes.ELECTRODYNAMICS_FLUIDS.get(0),4800), NUCLEAR_SCIENCE_ITEMS.get(1).get(2)));

/*Gas Centrifuge*/

GAS_CENTRIFUGE_RECIPES.add(new PsuedoGasCentrifugeRecipe(new FluidStack(NUCLEAR_SCIENCE_FLUIDS.get(0),1000),
NUCLEAR_SCIENCE_ITEMS.get(0).get(2), NUCLEAR_SCIENCE_ITEMS.get(0).get(1)));

/*Fision Reactor Enrichment*/

FISSION_REACTOR_RECIPES.add(new O2OProcessingRecipe(NUCLEAR_SCIENCE_ITEMS.get(1).get(2), NUCLEAR_SCIENCE_ITEMS.get(1).get(3)));

/*Anit Matter Production*/

ANTI_MATTER_RECIPES.add(new O2OProcessingRecipe(NUCLEAR_SCIENCE_ITEMS.get(1).get(4),NUCLEAR_SCIENCE_ITEMS.get(1).get(5)));

DARK_MATTER_RECIPES.add(new O2OProcessingRecipe(NUCLEAR_SCIENCE_ITEMS.get(1).get(4),NUCLEAR_SCIENCE_ITEMS.get(1).get(7)));
}

private static void addNuclearScienceMachines() {

NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockReactorCore));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockFusionReactorCore));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockChemicalBoiler));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockChemicalExtractor));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockElectromagnet));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockElectromagneticBooster));
//NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(Items.ACACIA_BOAT));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockElectromagneticSwitch));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockGasCentrifuge));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockParticleInjector));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockQuantumCapacitor));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockRadioisotopeGenerator));
NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(nuclearscience.DeferredRegisters.blockTurbine));
//NUCLEAR_SCIENCE_MACHINES.add(new ItemStack(Items.ACACIA_BOAT));

}

private static void addNuclearScienceFluids() {
NUCLEAR_SCIENCE_FLUIDS.add(nuclearscience.DeferredRegisters.fluidUraniumHexafluoride);
}

private static void addNuclearScienceItems() {

//Uranium and Derivatives : 0
Item[] uraniumMisc = {nuclearscience.DeferredRegisters.ITEM_YELLOWCAKE.get(),
nuclearscience.DeferredRegisters.ITEM_URANIUM238.get(),
nuclearscience.DeferredRegisters.ITEM_URANIUM235.get()
};

NUCLEAR_SCIENCE_ITEMS.add(formItemStacks(uraniumMisc, 1));

//Cells : 1
Item[] cells = {nuclearscience.DeferredRegisters.ITEM_CELLEMPTY.get(),
nuclearscience.DeferredRegisters.ITEM_CELLHEAVYWATER.get(),
nuclearscience.DeferredRegisters.ITEM_CELLDEUTERIUM.get(),
nuclearscience.DeferredRegisters.ITEM_CELLTRITIUM.get(),
nuclearscience.DeferredRegisters.ITEM_CELLELECTROMAGNETIC.get(),
nuclearscience.DeferredRegisters.ITEM_CELLANTIMATTERSMALL.get(),
nuclearscience.DeferredRegisters.ITEM_CELLANTIMATTERLARGE.get(),
nuclearscience.DeferredRegisters.ITEM_CELLDARKMATTER.get()
};

NUCLEAR_SCIENCE_ITEMS.add(formItemStacks(cells, 1));

}

private static ArrayList<ItemStack> formItemStacks(Item[] items, int countPerItemStack){
ArrayList<ItemStack> inputItems = new ArrayList<ItemStack>();

for(int i = 0; i < items.length;i++) {
inputItems.add(new ItemStack(items[i]));
inputItems.get(i).setCount(countPerItemStack);
}
return inputItems;
}
}
Loading

0 comments on commit c9f7a56

Please sign in to comment.