Re-did DuplicateItems, into Ore Camo Feature, better logic, and better config.
This commit is contained in:
@@ -46,7 +46,7 @@ public enum AEFeature
|
||||
|
||||
MassCannonBlockDamage("BlockFeatures"), TinyTNTBlockDamage("BlockFeatures"), Facades("Facades"),
|
||||
|
||||
DuplicateItems("Misc", false), Profiler("Services", false), VersionChecker("Services"), UnsupportedDeveloperTools("Misc", false), Creative("Misc"),
|
||||
Profiler("Services", false), VersionChecker("Services"), UnsupportedDeveloperTools("Misc", false), Creative("Misc"),
|
||||
|
||||
GrinderLogging("Misc", false), Logging("Misc"), IntegrationLogging("Misc", false), CustomRecipes("Crafting", false), WebsiteRecipes("Misc", false),
|
||||
|
||||
|
||||
@@ -10,20 +10,10 @@ import appeng.api.util.AEItemDefinition;
|
||||
public class DamagedItemDefinition implements AEItemDefinition
|
||||
{
|
||||
|
||||
final Item baseItem;
|
||||
final int damage;
|
||||
final IStackSrc src;
|
||||
|
||||
public DamagedItemDefinition(ItemStackSrc is) {
|
||||
if ( is == null )
|
||||
{
|
||||
baseItem = null;
|
||||
damage = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
baseItem = is.item;
|
||||
damage = is.damage;
|
||||
}
|
||||
public DamagedItemDefinition(IStackSrc is) {
|
||||
src = is;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -35,7 +25,7 @@ public class DamagedItemDefinition implements AEItemDefinition
|
||||
@Override
|
||||
public Item item()
|
||||
{
|
||||
return baseItem;
|
||||
return src.getItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,10 +37,7 @@ public class DamagedItemDefinition implements AEItemDefinition
|
||||
@Override
|
||||
public ItemStack stack(int stackSize)
|
||||
{
|
||||
if ( baseItem == null )
|
||||
return null;
|
||||
|
||||
return new ItemStack( baseItem, stackSize, damage );
|
||||
return src.stack( stackSize );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,7 +46,7 @@ public class DamagedItemDefinition implements AEItemDefinition
|
||||
if ( comparableItem == null )
|
||||
return false;
|
||||
|
||||
return comparableItem.getItem() == baseItem && comparableItem.getItemDamage() == damage;
|
||||
return comparableItem.getItem() == src.getItem() && comparableItem.getItemDamage() == src.getDamage();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package appeng.core.features;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface IStackSrc
|
||||
{
|
||||
|
||||
ItemStack stack(int i);
|
||||
|
||||
Item getItem();
|
||||
|
||||
int getDamage();
|
||||
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemStackSrc
|
||||
public class ItemStackSrc implements IStackSrc
|
||||
{
|
||||
|
||||
public final Item item;
|
||||
@@ -23,11 +23,27 @@ public class ItemStackSrc
|
||||
damage = dmg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack stack(int i)
|
||||
{
|
||||
if ( block != null )
|
||||
return new ItemStack( block, i, damage );
|
||||
return new ItemStack( item, i, damage );
|
||||
|
||||
if ( item != null )
|
||||
return new ItemStack( item, i, damage );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItem()
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamage()
|
||||
{
|
||||
return damage;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package appeng.core.features;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import appeng.items.materials.MaterialType;
|
||||
|
||||
public class MaterialStackSrc implements IStackSrc
|
||||
{
|
||||
|
||||
MaterialType src;
|
||||
|
||||
public MaterialStackSrc(MaterialType src) {
|
||||
this.src = src;
|
||||
if ( src == null )
|
||||
throw new RuntimeException( "Invalid Item Stack" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack stack(int stackSize)
|
||||
{
|
||||
return src.stack( stackSize );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItem()
|
||||
{
|
||||
return src.itemInstance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamage()
|
||||
{
|
||||
return src.damageValue;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -46,7 +46,9 @@ public class GrinderRecipeManager implements IGrinderRegistry, IOreListener
|
||||
addIngot( "Iron", new ItemStack( Items.iron_ingot ) );
|
||||
|
||||
addOre( "Obsidian", new ItemStack( Blocks.obsidian ) );
|
||||
|
||||
addIngot( "Ender", new ItemStack( Items.ender_pearl ) );
|
||||
addIngot( "EnderPearl", new ItemStack( Items.ender_pearl ) );
|
||||
|
||||
addIngot( "Wheat", new ItemStack( Items.wheat ) );
|
||||
|
||||
@@ -226,7 +228,7 @@ public class GrinderRecipeManager implements IGrinderRegistry, IOreListener
|
||||
@Override
|
||||
public void oreRegistered(String Name, ItemStack item)
|
||||
{
|
||||
if ( Name.startsWith( "ore" ) || Name.startsWith( "crystal" ) || Name.startsWith( "ingot" ) || Name.startsWith( "dust" ) )
|
||||
if ( Name.startsWith( "ore" ) || Name.startsWith( "crystal" ) || Name.startsWith( "gem" ) || Name.startsWith( "ingot" ) || Name.startsWith( "dust" ) )
|
||||
{
|
||||
for (String ore : AEConfig.instance.grinderOres)
|
||||
{
|
||||
@@ -234,11 +236,7 @@ public class GrinderRecipeManager implements IGrinderRegistry, IOreListener
|
||||
{
|
||||
addOre( ore, item );
|
||||
}
|
||||
else if ( Name.equals( "crystal" + ore ) )
|
||||
{
|
||||
addIngot( ore, item );
|
||||
}
|
||||
else if ( Name.equals( "ingot" + ore ) )
|
||||
else if ( Name.equals( "crystal" + ore ) || Name.equals( "ingot" + ore ) || Name.equals( "gem" + ore ) )
|
||||
{
|
||||
addIngot( ore, item );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user