Re-did DuplicateItems, into Ore Camo Feature, better logic, and better config.

This commit is contained in:
AlgorithmX2
2014-08-02 18:09:41 -05:00
parent 7ccb850037
commit 476d9a478a
15 changed files with 226 additions and 72 deletions
+16 -4
View File
@@ -16,6 +16,7 @@ import appeng.api.util.IConfigManager;
import appeng.api.util.IConfigureableObject;
import appeng.core.features.AEFeature;
import appeng.core.settings.TickRates;
import appeng.items.materials.MaterialType;
import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost;
import appeng.util.Platform;
@@ -94,7 +95,7 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
public String grinderOres[] = {
// Vanilla Items
"Obsidian", "Ender", "Coal", "Iron", "Gold", "Charcoal", "NetherQuartz",
"Obsidian", "Ender", "EnderPearl", "Coal", "Iron", "Gold", "Charcoal", "NetherQuartz",
// Common Mod Ores
"Copper", "Tin", "Silver", "Lead", "Bronze",
// AE
@@ -260,9 +261,6 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
featureFlags.add( feature );
}
if ( featureFlags.contains( AEFeature.WebsiteRecipes ) )
featureFlags.add( AEFeature.DuplicateItems );
if ( cpw.mods.fml.common.Loader.isModLoaded( "ImmibisMicroblocks" ) )
featureFlags.remove( AEFeature.AlphaPass );
@@ -302,6 +300,20 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
updateable = true;
}
public boolean useAEVersion(MaterialType mt)
{
if ( isFeatureEnabled( AEFeature.WebsiteRecipes ) )
return true;
setCategoryComment(
"OreCamouflage",
"AE2 Automatically uses alternative ores present in your instance of MC to blend better with its surroundings, if you prefer you can disable this selectively using these flags; Its important to note, that some if these items even if enabled may not be craftable in game because other items are overriding their recipes." );
Property p = get( "OreCamouflage", mt.name(), true );
p.comment = "OreDictionary Names: " + mt.getOreName();
return !p.getBoolean( true );
}
private String getListComment(Enum value)
{
String comment = null;
+5 -1
View File
@@ -80,6 +80,7 @@ import appeng.core.features.AEFeatureHandler;
import appeng.core.features.ColoredItemDefinition;
import appeng.core.features.DamagedItemDefinition;
import appeng.core.features.IAEFeature;
import appeng.core.features.IStackSrc;
import appeng.core.features.ItemStackSrc;
import appeng.core.features.NullItemDefinition;
import appeng.core.features.WrappedDamageItemDefinition;
@@ -234,7 +235,7 @@ public class Registration
else
{
Field f = materialClass.getField( "material" + mat.name() );
ItemStackSrc is = ((ItemMultiMaterial) materialItem.item()).createMaterial( mat );
IStackSrc is = ((ItemMultiMaterial) materialItem.item()).createMaterial( mat );
if ( is != null )
f.set( materials, new DamagedItemDefinition( is ) );
else
@@ -509,6 +510,9 @@ public class Registration
public void Init(FMLInitializationEvent event)
{
// Perform ore camouflage!
ItemMultiMaterial.instance.unduplicate();
if ( AEConfig.instance.isFeatureEnabled( AEFeature.CustomRecipes ) )
recipeHandler.parseRecipes( new ConfigLoader( AppEng.instance.getConfigPath() ), "index.recipe" );
else
+1 -1
View File
@@ -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),
+6 -19
View File
@@ -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
+15
View File
@@ -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();
}
+18 -2
View File
@@ -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;
}
}
+36
View File
@@ -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 );
}