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.crafting.IInfusionRecipe;
|
||||
import dev.tilera.auracore.api.research.ResearchPageInfusion;
|
||||
import net.anvilcraft.classiccasting.research.CCResearchManager;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
|
@ -82,24 +83,24 @@ public class Research {
|
|||
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(
|
||||
new ResearchPage("classiccasting.research_page.CCAURA.1"),
|
||||
new ResearchPage("classiccasting.research_page.CCAURA.2")
|
||||
)
|
||||
.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(
|
||||
new ResearchPage("classiccasting.research_page.CCFLUX.1"),
|
||||
new ResearchPage("classiccasting.research_page.CCFLUX.2")
|
||||
)
|
||||
.setAutoUnlock()
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
// TODO: move research to right place
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"MAGBLOCKS",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -123,9 +124,9 @@ public class Research {
|
|||
new ResearchPage("classiccasting.research_page.MAGBLOCKS.3")
|
||||
)
|
||||
.setParents("THAUMIUM")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"AURACOMPASS",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -142,9 +143,9 @@ public class Research {
|
|||
new ResearchPage(arcaneRecipes.get("AuraCompass"))
|
||||
)
|
||||
.setParents("MAGBLOCKS")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"CRYSTALCORE",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -166,9 +167,9 @@ public class Research {
|
|||
new ResearchPage(magnetStructure)
|
||||
)
|
||||
.setParents("THETHEORYOFEVERYTHING", "CRYSTALCLUSTER")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"CRYSTALCAPACITOR",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -185,9 +186,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("CrystalCapacitor"))
|
||||
)
|
||||
.setParents("CRYSTALCORE")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"UNIFIEDTHAUMICFIELDTHEORY",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -213,9 +214,9 @@ public class Research {
|
|||
)
|
||||
.setParents("MAGBLOCKS")
|
||||
.setSpecial()
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"WANDFIRE",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -233,9 +234,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandFire"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"WANDFROST",
|
||||
"CLASSICCASTING",
|
||||
new AspectList().add(Aspect.COLD, 16).add(Aspect.WEAPON, 4),
|
||||
|
@ -249,9 +250,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandFrost"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"WANDTRADE",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -268,9 +269,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandTrade"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"WANDEXCAVATE",
|
||||
"CLASSICCASTING",
|
||||
new AspectList().add(Aspect.METAL, 16).add(Aspect.TOOL, 4),
|
||||
|
@ -284,9 +285,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandExcavate"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"WANDLIGHTNING",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -304,9 +305,9 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandLightning"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"BASICFLUX",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -328,9 +329,9 @@ public class Research {
|
|||
new ResearchPage("classiccasting.research_page.BASICFLUX.3")
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "DISTILESSENTIA")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"THETHEORYOFEVERYTHING",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -365,9 +366,9 @@ public class Research {
|
|||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "BASICFLUX", "GOLEMSTRAW")
|
||||
.setSpecial()
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"HELLROD",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -386,11 +387,11 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("WandHellrod"))
|
||||
)
|
||||
.setParents("THETHEORYOFEVERYTHING", "WANDFIRE")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
ThaumcraftApi.addWarpToResearch("HELLROD", 2);
|
||||
ThaumcraftApi.addWarpToItem(new ItemStack(CCItems.wandHellrod), 1);
|
||||
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"PORTABLEHOLE",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -408,11 +409,11 @@ public class Research {
|
|||
new ResearchPageInfusion(infusionRecipes.get("PortableHole"))
|
||||
)
|
||||
.setParents("UNIFIEDTHAUMICFIELDTHEORY", "ENCHFABRIC")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
|
||||
ResearchPage crystalPage = new ResearchPageInfusion(clusters);
|
||||
crystalPage.recipeOutput = new ItemStack(ConfigBlocks.blockCrystal, 1, 9);
|
||||
new ResearchItem(
|
||||
CCResearchManager.addDiscoverableResearch(new ResearchItem(
|
||||
"CRYSTALCLUSTER",
|
||||
"CLASSICCASTING",
|
||||
new AspectList()
|
||||
|
@ -429,6 +430,6 @@ public class Research {
|
|||
crystalPage
|
||||
)
|
||||
.setParents("BASICFLUX")
|
||||
.registerResearchItem();
|
||||
.registerResearchItem());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
package net.anvilcraft.classiccasting.container;
|
||||
|
||||
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.Slot;
|
||||
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 {
|
||||
public SlotResearchTableOutput(
|
||||
|
@ -13,7 +18,20 @@ class SlotResearchTableOutput extends Slot {
|
|||
}
|
||||
|
||||
public boolean isItemValid(ItemStack par1ItemStack) {
|
||||
return par1ItemStack.getItem() == CCItems.researchNotes
|
||||
return (par1ItemStack.getItem() == CCItems.researchNotes || par1ItemStack.getItem() == ConfigItems.itemResearchNotes)
|
||||
&& 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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import net.anvilcraft.classiccasting.CCItems;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -17,6 +19,9 @@ import thaumcraft.common.config.ConfigItems;
|
|||
import thaumcraft.common.lib.research.ResearchManager;
|
||||
|
||||
public class CCResearchManager {
|
||||
|
||||
public static Set<String> discoverable = new HashSet<>();
|
||||
|
||||
public static ItemStack createNote(ItemStack stack, String key) {
|
||||
ResearchItem research = ResearchCategories.getResearch(key);
|
||||
if (research == null)
|
||||
|
@ -141,7 +146,8 @@ public class CCResearchManager {
|
|||
)
|
||||
|| !ResearchManager.doesPlayerHaveRequisites(
|
||||
player.getDisplayName(), research.key
|
||||
))
|
||||
)
|
||||
|| !isDiscoverable(research.key))
|
||||
continue;
|
||||
int match = 0;
|
||||
for (int q = 0; q < 5; ++q) {
|
||||
|
@ -264,4 +270,17 @@ public class CCResearchManager {
|
|||
}
|
||||
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