mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-10-26 14:24:22 +00:00
Clean up apothecary and runic altar handlers. Remove the altars from the recipe ingredients and add seeds/livingrock.
This commit is contained in:
1 parent
9ee9b771c5
commit
aada712207
3 files changed
+161
-123
No files matched your search
+120
-89
@@ -4,6 +4,7 @@ import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.StatCollector;
|
||||
@@ -13,6 +14,7 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import vazkii.botania.api.BotaniaAPI;
|
||||
import vazkii.botania.api.recipe.RecipePetals;
|
||||
import vazkii.botania.client.integration.nei.NEIHelper;
|
||||
import vazkii.botania.client.lib.LibResources;
|
||||
import vazkii.botania.common.block.ModBlocks;
|
||||
import codechicken.lib.gui.GuiDraw;
|
||||
@@ -22,117 +24,146 @@ import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
|
||||
public class RecipeHandlerPetalApothecary extends TemplateRecipeHandler {
|
||||
private static final ItemStack altarStack = new ItemStack(ModBlocks.altar);
|
||||
|
||||
public class CachedPetalApothecaryRecipe extends CachedRecipe {
|
||||
public abstract class CachedCircleRecipe extends CachedRecipe {
|
||||
|
||||
public List<PositionedStack> inputs = new ArrayList<>();
|
||||
public PositionedStack output;
|
||||
public List<PositionedStack> inputs = new ArrayList<>();
|
||||
public PositionedStack output;
|
||||
public boolean renderItem;
|
||||
|
||||
public CachedPetalApothecaryRecipe(RecipePetals recipe, boolean addCenterItem) {
|
||||
setIngredients(recipe.getInputs());
|
||||
output = new PositionedStack(recipe.getOutput(), 111, 21);
|
||||
if(addCenterItem)
|
||||
inputs.add(new PositionedStack(new ItemStack(ModBlocks.altar), 73, 55));
|
||||
}
|
||||
public CachedCircleRecipe(RecipePetals recipe) {
|
||||
setIngredients(recipe.getInputs());
|
||||
output = new PositionedStack(recipe.getOutput(), 111, 21);
|
||||
renderItem = true;
|
||||
}
|
||||
|
||||
public CachedPetalApothecaryRecipe(RecipePetals recipe) {
|
||||
this(recipe, true);
|
||||
}
|
||||
public void setIngredients(List<Object> inputs) {
|
||||
float degreePerInput = 360F / inputs.size();
|
||||
float currentDegree = -90F;
|
||||
|
||||
public void setIngredients(List<Object> inputs) {
|
||||
float degreePerInput = 360F / inputs.size();
|
||||
float currentDegree = -90F;
|
||||
for (Object o : inputs) {
|
||||
int posX = (int) Math.round(73 + Math.cos(currentDegree * Math.PI / 180D) * 32);
|
||||
int posY = (int) Math.round(55 + Math.sin(currentDegree * Math.PI / 180D) * 32);
|
||||
|
||||
for(Object o : inputs) {
|
||||
int posX = (int) Math.round(73 + Math.cos(currentDegree * Math.PI / 180D) * 32);
|
||||
int posY = (int) Math.round(55 + Math.sin(currentDegree * Math.PI / 180D) * 32);
|
||||
if (o instanceof String) {
|
||||
this.inputs.add(new PositionedStack(OreDictionary.getOres((String) o), posX, posY));
|
||||
} else {
|
||||
this.inputs.add(new PositionedStack(o, posX, posY));
|
||||
}
|
||||
currentDegree += degreePerInput;
|
||||
}
|
||||
}
|
||||
|
||||
if(o instanceof String)
|
||||
this.inputs.add(new PositionedStack(OreDictionary.getOres((String) o), posX, posY));
|
||||
else this.inputs.add(new PositionedStack(o, posX, posY));
|
||||
currentDegree += degreePerInput;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public List<PositionedStack> getIngredients() {
|
||||
return inputs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getIngredients() {
|
||||
return inputs;
|
||||
}
|
||||
@Override
|
||||
public PositionedStack getResult() {
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PositionedStack getResult() {
|
||||
return output;
|
||||
}
|
||||
public class CachedPetalApothecaryRecipe extends CachedCircleRecipe {
|
||||
ItemStack seedStack = new ItemStack(Items.wheat_seeds);
|
||||
|
||||
}
|
||||
public CachedPetalApothecaryRecipe(RecipePetals recipe) {
|
||||
super(recipe);
|
||||
seedStack.setStackDisplayName(StatCollector.translateToLocal("botania.nei.anySeed"));
|
||||
inputs.add(new PositionedStack(seedStack, 73, 39));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return StatCollector.translateToLocal("botania.nei.petalApothecary");
|
||||
}
|
||||
// Used by the Alfheim addon
|
||||
@SuppressWarnings("unused")
|
||||
public CachedPetalApothecaryRecipe(RecipePetals recipe, boolean addCenterItem) {
|
||||
super(recipe);
|
||||
renderItem = addCenterItem;
|
||||
}
|
||||
}
|
||||
|
||||
public String getRecipeID() {
|
||||
return "botania.petalApothecary";
|
||||
}
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return StatCollector.translateToLocal("botania.nei.petalApothecary");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTexture() {
|
||||
return LibResources.GUI_NEI_BLANK;
|
||||
}
|
||||
@Override
|
||||
public String getOverlayIdentifier() {
|
||||
return "botania.petalApothecary";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadTransferRects() {
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(72, 54, 18, 18), getRecipeID()));
|
||||
}
|
||||
@Override
|
||||
public String getGuiTexture() {
|
||||
return LibResources.GUI_NEI_BLANK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int recipe) {
|
||||
super.drawBackground(recipe);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
GuiDraw.changeTexture(LibResources.GUI_PETAL_OVERLAY);
|
||||
GuiDraw.drawTexturedModalRect(45, 10, 38, 7, 92, 92);
|
||||
}
|
||||
@Override
|
||||
public void loadTransferRects() {
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(73, 56, 16, 16), getOverlayIdentifier()));
|
||||
}
|
||||
|
||||
public List<? extends RecipePetals> getRecipes() {
|
||||
return BotaniaAPI.petalRecipes;
|
||||
}
|
||||
@Override
|
||||
public void drawBackground(int recipe) {
|
||||
super.drawBackground(recipe);
|
||||
// Background circle graphic
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
GuiDraw.changeTexture(LibResources.GUI_PETAL_OVERLAY);
|
||||
GuiDraw.drawTexturedModalRect(45, 10, 38, 7, 92, 92);
|
||||
// Item
|
||||
if (!((CachedCircleRecipe) arecipes.get(recipe)).renderItem) return;
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
NEIHelper.renderItem.renderItemIntoGUI(NEIHelper.font, NEIHelper.textureManager, getRenderItem(), 73, 55);
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
}
|
||||
|
||||
public CachedPetalApothecaryRecipe getCachedRecipe(RecipePetals recipe) {
|
||||
return new CachedPetalApothecaryRecipe(recipe);
|
||||
}
|
||||
protected ItemStack getRenderItem() {
|
||||
return altarStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
if(outputId.equals(getRecipeID())) {
|
||||
for(RecipePetals recipe : getRecipes())
|
||||
if(recipe.getOutput().getItem() != Items.skull)
|
||||
arecipes.add(getCachedRecipe(recipe));
|
||||
} else super.loadCraftingRecipes(outputId, results);
|
||||
}
|
||||
public List<? extends RecipePetals> getRecipes() {
|
||||
return BotaniaAPI.petalRecipes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
for(RecipePetals recipe : getRecipes()){
|
||||
if(recipe == null)
|
||||
continue;
|
||||
public CachedCircleRecipe getCachedRecipe(RecipePetals recipe) {
|
||||
return new CachedPetalApothecaryRecipe(recipe);
|
||||
}
|
||||
|
||||
if(recipe.getOutput().stackTagCompound != null && ItemNBTHelper.areStacksSameTypeWithNBT(recipe.getOutput(), result) || recipe.getOutput().stackTagCompound == null && NEIServerUtils.areStacksSameTypeCrafting(recipe.getOutput(), result) && recipe.getOutput().getItem() != Items.skull)
|
||||
arecipes.add(getCachedRecipe(recipe));
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
if (outputId.equals(getOverlayIdentifier())) {
|
||||
for (RecipePetals recipe : getRecipes())
|
||||
if (recipe.getOutput().getItem() != Items.skull)
|
||||
arecipes.add(getCachedRecipe(recipe));
|
||||
} else {
|
||||
super.loadCraftingRecipes(outputId, results);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
for(RecipePetals recipe : getRecipes()) {
|
||||
if(recipe == null)
|
||||
continue;
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
for (RecipePetals recipe : getRecipes()) {
|
||||
if (recipe == null) continue;
|
||||
|
||||
CachedPetalApothecaryRecipe crecipe = getCachedRecipe(recipe);
|
||||
if(ItemNBTHelper.cachedRecipeContainsWithNBT(crecipe.inputs, ingredient) && recipe.getOutput().getItem() != Items.skull)
|
||||
arecipes.add(crecipe);
|
||||
}
|
||||
}
|
||||
if (recipe.getOutput().stackTagCompound != null && ItemNBTHelper.areStacksSameTypeWithNBT(recipe.getOutput(), result) || recipe.getOutput().stackTagCompound == null && NEIServerUtils.areStacksSameTypeCrafting(recipe.getOutput(), result) && recipe.getOutput().getItem() != Items.skull) {
|
||||
arecipes.add(getCachedRecipe(recipe));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
for (RecipePetals recipe : getRecipes()) {
|
||||
if (recipe == null) continue;
|
||||
|
||||
CachedCircleRecipe crecipe = getCachedRecipe(recipe);
|
||||
if (ItemNBTHelper.cachedRecipeContainsWithNBT(crecipe.inputs, ingredient) && recipe.getOutput().getItem() != Items.skull) {
|
||||
arecipes.add(crecipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+39
-34
@@ -14,44 +14,49 @@ import codechicken.nei.PositionedStack;
|
||||
|
||||
public class RecipeHandlerRunicAltar extends RecipeHandlerPetalApothecary {
|
||||
|
||||
public class CachedRunicAltarRecipe extends CachedPetalApothecaryRecipe {
|
||||
private static final ItemStack altarStack = new ItemStack(ModBlocks.runeAltar);
|
||||
|
||||
public int manaUsage;
|
||||
public class CachedRunicAltarRecipe extends CachedCircleRecipe {
|
||||
|
||||
public CachedRunicAltarRecipe(RecipeRuneAltar recipe) {
|
||||
super(recipe, false);
|
||||
if(recipe == null)
|
||||
return;
|
||||
manaUsage = recipe.getManaUsage();
|
||||
inputs.add(new PositionedStack(new ItemStack(ModBlocks.runeAltar), 73, 55));
|
||||
}
|
||||
public int manaUsage;
|
||||
private static final PositionedStack livingrock = new PositionedStack(new ItemStack(ModBlocks.livingrock), 73, 39);
|
||||
|
||||
}
|
||||
public CachedRunicAltarRecipe(RecipeRuneAltar recipe) {
|
||||
super(recipe);
|
||||
inputs.add(livingrock);
|
||||
manaUsage = recipe.getManaUsage();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return StatCollector.translateToLocal("botania.nei.runicAltar");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOverlayIdentifier() {
|
||||
return "botania.runicAltar";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int recipe) {
|
||||
super.drawBackground(recipe);
|
||||
HUDHandler.renderManaBar(32, 113, 0x0000FF, 0.75F, ((CachedRunicAltarRecipe) arecipes.get(recipe)).manaUsage, TilePool.MAX_MANA / 10);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends RecipePetals> getRecipes() {
|
||||
return BotaniaAPI.runeAltarRecipes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CachedCircleRecipe getCachedRecipe(RecipePetals recipe) {
|
||||
return new CachedRunicAltarRecipe((RecipeRuneAltar) recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return StatCollector.translateToLocal("botania.nei.runicAltar");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeID() {
|
||||
return "botania.runicAltar";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int recipe) {
|
||||
super.drawBackground(recipe);
|
||||
HUDHandler.renderManaBar(32, 113, 0x0000FF, 0.75F, ((CachedRunicAltarRecipe) arecipes.get(recipe)).manaUsage, TilePool.MAX_MANA / 10);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends RecipePetals> getRecipes() {
|
||||
return BotaniaAPI.runeAltarRecipes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CachedPetalApothecaryRecipe getCachedRecipe(RecipePetals recipe) {
|
||||
return new CachedRunicAltarRecipe((RecipeRuneAltar) recipe);
|
||||
}
|
||||
protected ItemStack getRenderItem() {
|
||||
return altarStack;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -184,6 +184,8 @@ botania.nei.pureDaisy=Pure Daisy
|
||||
botania.nei.lexica=Lexica Botania
|
||||
nei.options.keys.gui.botania_corporea_request=Corporea Request
|
||||
|
||||
botania.nei.anySeed=Any Seed
|
||||
|
||||
botania.nei.lexicaSeparator=Extra Info:
|
||||
botania.nei.lexicaNoInfo=(there's no Extra Info for this entry, sorry!)
|
||||
|
||||
|
||||
Reference in new issue
Block a user