fixed Anvil JEI

This commit is contained in:
Mohammad-Ali Minaie
2018-09-17 04:38:12 -04:00
parent ff8170b01e
commit 65e42b39c2
10 changed files with 779 additions and 760 deletions

View File

@@ -3,6 +3,7 @@ package nmd.primal.forgecraft.blocks.Anvil;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
@@ -34,9 +35,9 @@ public class AnvilIron extends AnvilBase implements AnvilHandler {
TileAnvil tile = (TileAnvil) world.getTileEntity(pos); TileAnvil tile = (TileAnvil) world.getTileEntity(pos);
if (tile != null) { if (tile != null) {
if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) { if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) {
String[] tempArray = new String[25]; ItemStack[] tempArray = new ItemStack[25];
for (int i = 0; i < 25; i++) { for (int i = 0; i < 25; i++) {
tempArray[i] = tile.getSlotStack(i).getItem().getRegistryName().toString(); tempArray[i] = tile.getSlotStack(i);
} }
/*for (int i = 0; i < 25; i++) { /*for (int i = 0; i < 25; i++) {
if (tile.getSlotStack(i).getItem() instanceof BaseMultiItem) { if (tile.getSlotStack(i).getItem() instanceof BaseMultiItem) {

View File

@@ -3,6 +3,7 @@ package nmd.primal.forgecraft.blocks.Anvil;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
@@ -108,21 +109,10 @@ public class AnvilStone extends AnvilBase {
} }
} }
if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) { if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) {
String[] tempArray = new String[25]; ItemStack[] tempArray = new ItemStack[25];
for (int i = 0; i < 25; i++) { for (int i = 0; i < 25; i++) {
tempArray[i] = tile.getSlotStack(i).getItem().getRegistryName().toString(); tempArray[i] = tile.getSlotStack(i);
} }
/*for (int i = 0; i < 25; i++) {
if (tile.getSlotStack(i).getItem() instanceof BaseMultiItem) {
if (((BaseMultiItem) tile.getSlotStack(i).getItem()).getMaterial(tile.getSlotStack(i).getItem()) != PrimalMaterials.TOOL_WROUGHT_IRON) {
world.setBlockState(pos, Blocks.AIR.getDefaultState(), 2);
CommonUtils.spawnItemEntityFromWorld(world, pos, new ItemStack(PrimalItems.ROCK_STONE, 3));
CommonUtils.spawnItemEntityFromWorld(world, pos, new ItemStack(ModBlocks.ironball, 1));
this.breakBlock(world, pos, state);
return true;
}
}
}*/
doAnvilRecipe(pItem, tempArray, world, tile, pos, player); doAnvilRecipe(pItem, tempArray, world, tile, pos, player);
return true; return true;
} }

View File

@@ -72,9 +72,9 @@ public class ModJEI implements IModPlugin
// ***************************************************************************** // // ***************************************************************************** //
// Info // Info
// ***************************************************************************** // // ***************************************************************************** //
registry.addIngredientInfo(ItemStack.EMPTY, ItemStack.class, "jei.info.forgecraft.crucible"); //registry.addIngredientInfo(ItemStack.EMPTY, ItemStack.class, "jei.info.forgecraft.crucible");
registry.addIngredientInfo(new ItemStack(ModBlocks.nbtCrucible, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.crucible"); registry.addIngredientInfo(new ItemStack(ModBlocks.nbtCrucible, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.crucible");
registry.addIngredientInfo(new OreIngredient("oreIron"), OreIngredient.class, "jei.info.forgecraft.oreiron"); //registry.addIngredientInfo(new OreIngredient("oreIron"), OreIngredient.class, "jei.info.forgecraft.oreiron");
registry.addIngredientInfo(new ItemStack(ModBlocks.stoneanvil, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.anvil"); registry.addIngredientInfo(new ItemStack(ModBlocks.stoneanvil, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.anvil");
} }

View File

@@ -13,6 +13,7 @@ import nmd.primal.core.common.helper.CommonUtils;
import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.compat.JEI.AbstractCategory; import nmd.primal.forgecraft.compat.JEI.AbstractCategory;
import nmd.primal.forgecraft.init.ModBlocks; import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@@ -23,13 +24,13 @@ public class AnvilRecipeCategory extends AbstractCategory<AnvilRecipeWrapper>
{ {
public static String CATEGORY = CommonUtils.prefix("anvil"); public static String CATEGORY = CommonUtils.prefix("anvil");
private static ResourceLocation gui_background = new ResourceLocation(ModInfo.MOD_ID,"textures/gui/jei/crucible.png"); private static ResourceLocation gui_background = new ResourceLocation(ModInfo.MOD_ID,"textures/gui/jei/anvil.png");
private final IDrawable background; private final IDrawable background;
public AnvilRecipeCategory(IGuiHelper guiHelper) public AnvilRecipeCategory(IGuiHelper guiHelper)
{ {
//background = guiHelper.createDrawable(gui_background, 0, 0, 134, 144, 0, 0, 0, 0); //background = guiHelper.createDrawable(gui_background, 0, 0, 134, 144, 0, 0, 0, 0);
background = guiHelper.createDrawable(gui_background, 0,0,160,134); background = guiHelper.createDrawable(gui_background, 0,0,160,96);
} }
@Nonnull @Nonnull
@@ -98,17 +99,17 @@ public class AnvilRecipeCategory extends AbstractCategory<AnvilRecipeWrapper>
//items.set(0, recipe.getIngredient(0)); //items.set(0, recipe.getIngredient(0));
for(int i =0; i < 25; i++){ for(int i =0; i < 25; i++){
items.set(i, new ItemStack(recipe.getIngredient(i), 1)); items.set(i, recipe.getIngredient(i));
} }
/***OUTPUTS***/ /***OUTPUTS***/
items.init(25, false, 115, 96); items.init(25, false, 133, 40);
items.set(25, recipe.output); items.set(25, recipe.output);
/***EXTRAS***/ /***EXTRAS***/
//items.init(6, false, 1, 96); items.init(26, false, 105, 28);
//ItemStack crucibleStack = new ItemStack(ModBlocks.nbtCrucible, 1, 0); ItemStack hammerStack = new ItemStack(ModItems.forgehammer, 1);
//items.set(6, crucibleStack); items.set(26, hammerStack);
//items.init(7, false, 58, 96); //items.init(7, false, 58, 96);
//ItemStack bloomeryStack = new ItemStack(ModBlocks.bloomery_brick, 1, 0); //ItemStack bloomeryStack = new ItemStack(ModBlocks.bloomery_brick, 1, 0);

View File

@@ -2,6 +2,7 @@ package nmd.primal.forgecraft.compat.JEI.anvil;
import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.IRecipeWrapper;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.inventory.ItemStackHelper; import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -12,6 +13,8 @@ import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.crafting.AnvilCrafting; import nmd.primal.forgecraft.crafting.AnvilCrafting;
import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.init.ModItems;
import javax.annotation.Nonnull;
import java.awt.*;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -22,7 +25,7 @@ public class AnvilRecipeWrapper implements IRecipeWrapper {
protected final AnvilCrafting recipe; protected final AnvilCrafting recipe;
protected String[] input; protected ItemStack[] input;
protected String upgradeType; protected String upgradeType;
protected ItemStack output; protected ItemStack output;
@@ -39,21 +42,22 @@ public class AnvilRecipeWrapper implements IRecipeWrapper {
@Override @Override
public void getIngredients(IIngredients ingredients) { public void getIngredients(IIngredients ingredients) {
for(int i =0; i < input.length; i++){ for(int i =0; i < 25; i++){
ResourceLocation name = new ResourceLocation(input[i]); //if(this.input[i] != new ItemStack(Items.AIR, 1) {
ingredients.setInput(ItemStack.class, ForgeRegistries.ITEMS.getValue(name)); ingredients.setInput(ItemStack.class, this.input[i]);
//}
} }
ingredients.setOutput(ItemStack.class, this.output);
} }
public Item getIngredient(int a){ public ItemStack getIngredient(int a){
return input[a];
}
Item[] tempArray = new Item[25]; @Override
for(int i =0; i < input.length; i++){ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY)
ResourceLocation name = new ResourceLocation(input[i]); {
tempArray[i] = ForgeRegistries.ITEMS.getValue(name); //minecraft.fontRenderer.drawString(recipe.getDropsCooked().getDisplayName() + " Recipe", 20, 5, Color.black.getRGB());
}
List<Item> stackList = Arrays.asList(tempArray);
return stackList.get(a);
} }
} }

View File

@@ -1,5 +1,6 @@
package nmd.primal.forgecraft.crafting; package nmd.primal.forgecraft.crafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import java.util.ArrayList; import java.util.ArrayList;
@@ -20,13 +21,13 @@ public class AnvilCrafting {
private static ArrayList<AnvilCrafting> anvilRecipes = new ArrayList<>(); private static ArrayList<AnvilCrafting> anvilRecipes = new ArrayList<>();
private String[] input = new String[25]; private ItemStack[] input = new ItemStack[25];
private String upgradeType; private String upgradeType;
private ItemStack output; private ItemStack output;
public AnvilCrafting(String[] input, ItemStack output, String upgrade){ public AnvilCrafting(ItemStack[] input, ItemStack output, String upgrade){
this.input = input; this.input = input;
this.output = output; this.output = output;
@@ -38,33 +39,47 @@ public class AnvilCrafting {
// Recipe Methods // Recipe Methods
// ***************************************************************************** // // ***************************************************************************** //
public static void addRecipe(String[] input, ItemStack output, String upgrade) public static void addRecipe(ItemStack[] input, ItemStack output, String upgrade)
{ {
anvilRecipes.add(new AnvilCrafting(input, output, upgrade)); anvilRecipes.add(new AnvilCrafting(input, output, upgrade));
} }
public static boolean isRecipe(String[] array) public static boolean isRecipe(ItemStack[] array)
{ {
for(AnvilCrafting recipe : anvilRecipes) { for(AnvilCrafting recipe : anvilRecipes) {
if (Arrays.equals(array, recipe.input)) if (Arrays.equals(array, recipe.input))
return true; return true;
} }
return false; return false;
} }
public static AnvilCrafting getRecipe(String[] array) public static AnvilCrafting getRecipe(ItemStack[] array)
{ {
for(AnvilCrafting recipe : anvilRecipes) { for(AnvilCrafting recipe : anvilRecipes) {
if (Arrays.equals(array, recipe.input)) if(checkArrays(recipe.getInput(), array)){
return recipe; return recipe;
}
} }
return null; return null;
} }
public String[] getInput() {return this.input;} public static boolean checkArrays (ItemStack[] leftArray, ItemStack[] rightArray){
int a =0;
for(int i=0; i<leftArray.length; i++){
if( (leftArray[i].isEmpty() && rightArray[i].isEmpty()) ||
((leftArray[i].isItemEqualIgnoreDurability(rightArray[i]))) ) {
a++;
}
if(a == 25){
return true;
}
}
return false;
}
public ItemStack getOutput() {return this.output;} public ItemStack[] getInput() {return this.input;}
public ItemStack getOutput() {return this.output.copy();}
public String getUpgrade() {return this.upgradeType; } public String getUpgrade() {return this.upgradeType; }

File diff suppressed because it is too large Load Diff

View File

@@ -5,6 +5,7 @@ import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor; import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
@@ -54,7 +55,7 @@ public interface AnvilHandler {
return reverseMax[x]; return reverseMax[x];
} }
default boolean doAnvilRecipe(ItemStack pItem, String[] tempArray, World world, TileAnvil tile, BlockPos pos, EntityPlayer player) { default boolean doAnvilRecipe(ItemStack pItem, ItemStack[] tempArray, World world, TileAnvil tile, BlockPos pos, EntityPlayer player) {
AnvilCrafting recipe = AnvilCrafting.getRecipe(tempArray); AnvilCrafting recipe = AnvilCrafting.getRecipe(tempArray);
if (recipe != null) { if (recipe != null) {
if (pItem.getItem() instanceof Gallagher) { if (pItem.getItem() instanceof Gallagher) {

View File

@@ -127,4 +127,5 @@ forgecraft.config.title=ForgeCraft Config
forgecraft.compatibility=Compatibility forgecraft.compatibility=Compatibility
forgecraft.compatibility.tooltip=Compatibility Features forgecraft.compatibility.tooltip=Compatibility Features
jei.category.forgecraft.crucible=Crucible Crafting jei.category.forgecraft.crucible=Crucible Crafting
jei.category.forgecraft.anvil=Anvil Crafting

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B