generated from tilera/1710mod
feat: research system overhaul
This commit is contained in:
parent
6a2e46dcc0
commit
da3318fe70
|
@ -8,6 +8,7 @@ import java.util.Map;
|
||||||
import dev.tilera.auracore.api.Aspects;
|
import dev.tilera.auracore.api.Aspects;
|
||||||
import dev.tilera.auracore.api.crafting.IInfusionRecipe;
|
import dev.tilera.auracore.api.crafting.IInfusionRecipe;
|
||||||
import dev.tilera.auracore.api.research.ResearchPageInfusion;
|
import dev.tilera.auracore.api.research.ResearchPageInfusion;
|
||||||
|
import net.anvilcraft.classiccasting.research.CCResearchManager;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import thaumcraft.api.ThaumcraftApi;
|
import thaumcraft.api.ThaumcraftApi;
|
||||||
|
@ -82,24 +83,24 @@ public class Research {
|
||||||
new ResourceLocation("thaumcraft", "textures/gui/gui_researchback.png")
|
new ResourceLocation("thaumcraft", "textures/gui/gui_researchback.png")
|
||||||
);
|
);
|
||||||
|
|
||||||
new ResearchItem("CCAURA", "CLASSICCASTING", new AspectList(), -2, -4, 1, new ResourceLocation("classiccasting", "textures/misc/aura.png"))
|
CCResearchManager.addDiscoverableResearch(new ResearchItem("CCAURA", "CLASSICCASTING", new AspectList(), -2, -4, 1, new ResourceLocation("classiccasting", "textures/misc/aura.png"))
|
||||||
.setPages(
|
.setPages(
|
||||||
new ResearchPage("classiccasting.research_page.CCAURA.1"),
|
new ResearchPage("classiccasting.research_page.CCAURA.1"),
|
||||||
new ResearchPage("classiccasting.research_page.CCAURA.2")
|
new ResearchPage("classiccasting.research_page.CCAURA.2")
|
||||||
)
|
)
|
||||||
.setAutoUnlock()
|
.setAutoUnlock()
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem("CCFLUX", "CLASSICCASTING", new AspectList(), -4, -4, 1, new ResourceLocation("classiccasting", "textures/misc/flux.png"))
|
CCResearchManager.addDiscoverableResearch(new ResearchItem("CCFLUX", "CLASSICCASTING", new AspectList(), -4, -4, 1, new ResourceLocation("classiccasting", "textures/misc/flux.png"))
|
||||||
.setPages(
|
.setPages(
|
||||||
new ResearchPage("classiccasting.research_page.CCFLUX.1"),
|
new ResearchPage("classiccasting.research_page.CCFLUX.1"),
|
||||||
new ResearchPage("classiccasting.research_page.CCFLUX.2")
|
new ResearchPage("classiccasting.research_page.CCFLUX.2")
|
||||||
)
|
)
|
||||||
.setAutoUnlock()
|
.setAutoUnlock()
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
// TODO: move research to right place
|
// TODO: move research to right place
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"MAGBLOCKS",
|
"MAGBLOCKS",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -123,9 +124,9 @@ public class Research {
|
||||||
new ResearchPage("classiccasting.research_page.MAGBLOCKS.3")
|
new ResearchPage("classiccasting.research_page.MAGBLOCKS.3")
|
||||||
)
|
)
|
||||||
.setParents("THAUMIUM")
|
.setParents("THAUMIUM")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"AURACOMPASS",
|
"AURACOMPASS",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -142,9 +143,9 @@ public class Research {
|
||||||
new ResearchPage(arcaneRecipes.get("AuraCompass"))
|
new ResearchPage(arcaneRecipes.get("AuraCompass"))
|
||||||
)
|
)
|
||||||
.setParents("MAGBLOCKS")
|
.setParents("MAGBLOCKS")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"CRYSTALCORE",
|
"CRYSTALCORE",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -166,9 +167,9 @@ public class Research {
|
||||||
new ResearchPage(magnetStructure)
|
new ResearchPage(magnetStructure)
|
||||||
)
|
)
|
||||||
.setParents("THETHEORYOFEVERYTHING", "CRYSTALCLUSTER")
|
.setParents("THETHEORYOFEVERYTHING", "CRYSTALCLUSTER")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"CRYSTALCAPACITOR",
|
"CRYSTALCAPACITOR",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -185,9 +186,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("CrystalCapacitor"))
|
new ResearchPageInfusion(infusionRecipes.get("CrystalCapacitor"))
|
||||||
)
|
)
|
||||||
.setParents("CRYSTALCORE")
|
.setParents("CRYSTALCORE")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"UNIFIEDTHAUMICFIELDTHEORY",
|
"UNIFIEDTHAUMICFIELDTHEORY",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -213,9 +214,9 @@ public class Research {
|
||||||
)
|
)
|
||||||
.setParents("MAGBLOCKS")
|
.setParents("MAGBLOCKS")
|
||||||
.setSpecial()
|
.setSpecial()
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"WANDFIRE",
|
"WANDFIRE",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -233,9 +234,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandFire"))
|
new ResearchPageInfusion(infusionRecipes.get("WandFire"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"WANDFROST",
|
"WANDFROST",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList().add(Aspect.COLD, 16).add(Aspect.WEAPON, 4),
|
new AspectList().add(Aspect.COLD, 16).add(Aspect.WEAPON, 4),
|
||||||
|
@ -249,9 +250,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandFrost"))
|
new ResearchPageInfusion(infusionRecipes.get("WandFrost"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"WANDTRADE",
|
"WANDTRADE",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -268,9 +269,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandTrade"))
|
new ResearchPageInfusion(infusionRecipes.get("WandTrade"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"WANDEXCAVATE",
|
"WANDEXCAVATE",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList().add(Aspect.METAL, 16).add(Aspect.TOOL, 4),
|
new AspectList().add(Aspect.METAL, 16).add(Aspect.TOOL, 4),
|
||||||
|
@ -284,9 +285,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandExcavate"))
|
new ResearchPageInfusion(infusionRecipes.get("WandExcavate"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"WANDLIGHTNING",
|
"WANDLIGHTNING",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -304,9 +305,9 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandLightning"))
|
new ResearchPageInfusion(infusionRecipes.get("WandLightning"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"BASICFLUX",
|
"BASICFLUX",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -328,9 +329,9 @@ public class Research {
|
||||||
new ResearchPage("classiccasting.research_page.BASICFLUX.3")
|
new ResearchPage("classiccasting.research_page.BASICFLUX.3")
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "DISTILESSENTIA")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "DISTILESSENTIA")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"THETHEORYOFEVERYTHING",
|
"THETHEORYOFEVERYTHING",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -365,9 +366,9 @@ public class Research {
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "BASICFLUX", "GOLEMSTRAW")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "BASICFLUX", "GOLEMSTRAW")
|
||||||
.setSpecial()
|
.setSpecial()
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"HELLROD",
|
"HELLROD",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -386,11 +387,11 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("WandHellrod"))
|
new ResearchPageInfusion(infusionRecipes.get("WandHellrod"))
|
||||||
)
|
)
|
||||||
.setParents("THETHEORYOFEVERYTHING", "WANDFIRE")
|
.setParents("THETHEORYOFEVERYTHING", "WANDFIRE")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
ThaumcraftApi.addWarpToResearch("HELLROD", 2);
|
ThaumcraftApi.addWarpToResearch("HELLROD", 2);
|
||||||
ThaumcraftApi.addWarpToItem(new ItemStack(CCItems.wandHellrod), 1);
|
ThaumcraftApi.addWarpToItem(new ItemStack(CCItems.wandHellrod), 1);
|
||||||
|
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"PORTABLEHOLE",
|
"PORTABLEHOLE",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -408,11 +409,11 @@ public class Research {
|
||||||
new ResearchPageInfusion(infusionRecipes.get("PortableHole"))
|
new ResearchPageInfusion(infusionRecipes.get("PortableHole"))
|
||||||
)
|
)
|
||||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "ENCHFABRIC")
|
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "ENCHFABRIC")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
|
|
||||||
ResearchPage crystalPage = new ResearchPageInfusion(clusters);
|
ResearchPage crystalPage = new ResearchPageInfusion(clusters);
|
||||||
crystalPage.recipeOutput = new ItemStack(ConfigBlocks.blockCrystal, 1, 9);
|
crystalPage.recipeOutput = new ItemStack(ConfigBlocks.blockCrystal, 1, 9);
|
||||||
new ResearchItem(
|
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||||
"CRYSTALCLUSTER",
|
"CRYSTALCLUSTER",
|
||||||
"CLASSICCASTING",
|
"CLASSICCASTING",
|
||||||
new AspectList()
|
new AspectList()
|
||||||
|
@ -429,6 +430,6 @@ public class Research {
|
||||||
crystalPage
|
crystalPage
|
||||||
)
|
)
|
||||||
.setParents("BASICFLUX")
|
.setParents("BASICFLUX")
|
||||||
.registerResearchItem();
|
.registerResearchItem());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
package net.anvilcraft.classiccasting.container;
|
package net.anvilcraft.classiccasting.container;
|
||||||
|
|
||||||
import net.anvilcraft.classiccasting.CCItems;
|
import net.anvilcraft.classiccasting.CCItems;
|
||||||
|
import net.anvilcraft.classiccasting.research.CCResearchManager;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import thaumcraft.common.config.ConfigItems;
|
||||||
|
import thaumcraft.common.lib.research.ResearchManager;
|
||||||
|
import thaumcraft.common.lib.research.ResearchNoteData;
|
||||||
|
|
||||||
class SlotResearchTableOutput extends Slot {
|
class SlotResearchTableOutput extends Slot {
|
||||||
public SlotResearchTableOutput(
|
public SlotResearchTableOutput(
|
||||||
|
@ -13,7 +18,20 @@ class SlotResearchTableOutput extends Slot {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isItemValid(ItemStack par1ItemStack) {
|
public boolean isItemValid(ItemStack par1ItemStack) {
|
||||||
return par1ItemStack.getItem() == CCItems.researchNotes
|
return (par1ItemStack.getItem() == CCItems.researchNotes || par1ItemStack.getItem() == ConfigItems.itemResearchNotes)
|
||||||
&& par1ItemStack.getItemDamage() < 64;
|
&& par1ItemStack.getItemDamage() < 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void putStack(ItemStack note) {
|
||||||
|
if (note != null && note.getItem() == ConfigItems.itemResearchNotes) {
|
||||||
|
ResearchNoteData data = ResearchManager.getData(note);
|
||||||
|
if (data != null && !CCResearchManager.isDiscoverable(data.key)) {
|
||||||
|
note = CCResearchManager.createNote(new ItemStack(CCItems.researchNotes), data.key);
|
||||||
|
} else {
|
||||||
|
note = new ItemStack(Items.paper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.putStack(note);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package net.anvilcraft.classiccasting.research;
|
package net.anvilcraft.classiccasting.research;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import net.anvilcraft.classiccasting.CCItems;
|
import net.anvilcraft.classiccasting.CCItems;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -17,6 +19,9 @@ import thaumcraft.common.config.ConfigItems;
|
||||||
import thaumcraft.common.lib.research.ResearchManager;
|
import thaumcraft.common.lib.research.ResearchManager;
|
||||||
|
|
||||||
public class CCResearchManager {
|
public class CCResearchManager {
|
||||||
|
|
||||||
|
public static Set<String> discoverable = new HashSet<>();
|
||||||
|
|
||||||
public static ItemStack createNote(ItemStack stack, String key) {
|
public static ItemStack createNote(ItemStack stack, String key) {
|
||||||
ResearchItem research = ResearchCategories.getResearch(key);
|
ResearchItem research = ResearchCategories.getResearch(key);
|
||||||
if (research == null)
|
if (research == null)
|
||||||
|
@ -141,7 +146,8 @@ public class CCResearchManager {
|
||||||
)
|
)
|
||||||
|| !ResearchManager.doesPlayerHaveRequisites(
|
|| !ResearchManager.doesPlayerHaveRequisites(
|
||||||
player.getDisplayName(), research.key
|
player.getDisplayName(), research.key
|
||||||
))
|
)
|
||||||
|
|| !isDiscoverable(research.key))
|
||||||
continue;
|
continue;
|
||||||
int match = 0;
|
int match = 0;
|
||||||
for (int q = 0; q < 5; ++q) {
|
for (int q = 0; q < 5; ++q) {
|
||||||
|
@ -264,4 +270,17 @@ public class CCResearchManager {
|
||||||
}
|
}
|
||||||
return bestMatch;
|
return bestMatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isDiscoverable(String key) {
|
||||||
|
if (discoverable.contains(key)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
ResearchItem item = ResearchCategories.getResearch(key);
|
||||||
|
return item != null && (item.category == "ALCHEMY" || item.category == "ARTIFICE" || item.category == "GOLEMANCY");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addDiscoverableResearch(ResearchItem research) {
|
||||||
|
discoverable.add(research.key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue