Enable FZ Integration - Crafting and Barrels ( Untested ).
This commit is contained in:
parent
a475a3e91f
commit
9e85c33b16
7 changed files with 85 additions and 46 deletions
|
@ -78,7 +78,7 @@ public class AppEng
|
||||||
// IntegrationSide.BOTH, "Mine Factory Reloaded", "MineFactoryReloaded", "MFR", // MFR
|
// IntegrationSide.BOTH, "Mine Factory Reloaded", "MineFactoryReloaded", "MFR", // MFR
|
||||||
IntegrationSide.BOTH, "Deep Storage Unit", null, "DSU", // DSU
|
IntegrationSide.BOTH, "Deep Storage Unit", null, "DSU", // DSU
|
||||||
// IntegrationSide.BOTH, "Better Storage", "betterstorage", "BS", // BS
|
// IntegrationSide.BOTH, "Better Storage", "betterstorage", "BS", // BS
|
||||||
// IntegrationSide.BOTH, "Factorization", "factorization", "FZ", // FZ
|
IntegrationSide.BOTH, "Factorization", "factorization", "FZ", // FZ
|
||||||
// IntegrationSide.BOTH, "Forestry", "Forestry", "Forestry", // Forestry
|
// IntegrationSide.BOTH, "Forestry", "Forestry", "Forestry", // Forestry
|
||||||
// IntegrationSide.BOTH, "Mekanism", "Mekanism", "Mekanism", // MeK
|
// IntegrationSide.BOTH, "Mekanism", "Mekanism", "Mekanism", // MeK
|
||||||
IntegrationSide.CLIENT, "Waila", "Waila", "Waila", // Waila
|
IntegrationSide.CLIENT, "Waila", "Waila", "Waila", // Waila
|
||||||
|
|
|
@ -130,6 +130,7 @@ import appeng.recipes.game.FacadeRecipe;
|
||||||
import appeng.recipes.game.ShapedRecipe;
|
import appeng.recipes.game.ShapedRecipe;
|
||||||
import appeng.recipes.game.ShapelessRecipe;
|
import appeng.recipes.game.ShapelessRecipe;
|
||||||
import appeng.recipes.handlers.Grind;
|
import appeng.recipes.handlers.Grind;
|
||||||
|
import appeng.recipes.handlers.GrindFZ;
|
||||||
import appeng.recipes.handlers.Inscribe;
|
import appeng.recipes.handlers.Inscribe;
|
||||||
import appeng.recipes.handlers.Macerator;
|
import appeng.recipes.handlers.Macerator;
|
||||||
import appeng.recipes.handlers.Press;
|
import appeng.recipes.handlers.Press;
|
||||||
|
@ -177,6 +178,7 @@ public class Registration
|
||||||
recipeRegistery.addNewSubItemResolver( new AEItemResolver() );
|
recipeRegistery.addNewSubItemResolver( new AEItemResolver() );
|
||||||
|
|
||||||
recipeRegistery.addNewCraftHandler( "grind", Grind.class );
|
recipeRegistery.addNewCraftHandler( "grind", Grind.class );
|
||||||
|
recipeRegistery.addNewCraftHandler( "grindfz", GrindFZ.class );
|
||||||
recipeRegistery.addNewCraftHandler( "pulverizer", Pulverizer.class );
|
recipeRegistery.addNewCraftHandler( "pulverizer", Pulverizer.class );
|
||||||
recipeRegistery.addNewCraftHandler( "macerator", Macerator.class );
|
recipeRegistery.addNewCraftHandler( "macerator", Macerator.class );
|
||||||
|
|
||||||
|
|
|
@ -21,4 +21,6 @@ public interface IFZ
|
||||||
|
|
||||||
boolean isBarrel(TileEntity te);
|
boolean isBarrel(TileEntity te);
|
||||||
|
|
||||||
|
void grinderRecipe(ItemStack is, ItemStack itemStack);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
package appeng.integration.modules.dead;
|
package appeng.integration.modules;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.storage.IMEInventory;
|
import appeng.api.storage.IMEInventory;
|
||||||
import appeng.integration.IIntegrationModule;
|
import appeng.integration.IIntegrationModule;
|
||||||
import appeng.integration.abstraction.IFZ;
|
import appeng.integration.abstraction.IFZ;
|
||||||
import appeng.integration.modules.helpers.dead.FactorizationBarrel;
|
import appeng.integration.modules.helpers.FactorizationBarrel;
|
||||||
import appeng.integration.modules.helpers.dead.FactorizationHandler;
|
import appeng.integration.modules.helpers.FactorizationHandler;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,26 +28,19 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
private static Method day_getMaxSize;
|
private static Method day_getMaxSize;
|
||||||
private static Field day_item;
|
private static Field day_item;
|
||||||
|
|
||||||
private static Class barrelClass;
|
|
||||||
private static Method getItemCount;
|
|
||||||
private static Method setItemCount;
|
|
||||||
private static Method getMaxSize;
|
|
||||||
private static Field item;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack barrelGetItem(TileEntity te)
|
public ItemStack barrelGetItem(TileEntity te)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ItemStack i;
|
ItemStack i = null;
|
||||||
|
|
||||||
if ( day_BarrelClass.isInstance( te ) )
|
if ( day_BarrelClass.isInstance( te ) )
|
||||||
i = (ItemStack) day_item.get( te );
|
i = (ItemStack) day_item.get( te );
|
||||||
else
|
|
||||||
i = (ItemStack) item.get( te );
|
|
||||||
|
|
||||||
if ( i != null )
|
if ( i != null )
|
||||||
i = Platform.cloneItemStack( i );
|
i = Platform.cloneItemStack( i );
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException e)
|
catch (IllegalArgumentException e)
|
||||||
|
@ -67,8 +59,6 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
{
|
{
|
||||||
if ( day_BarrelClass.isInstance( te ) )
|
if ( day_BarrelClass.isInstance( te ) )
|
||||||
return (Integer) day_getMaxSize.invoke( te );
|
return (Integer) day_getMaxSize.invoke( te );
|
||||||
else
|
|
||||||
return (Integer) getMaxSize.invoke( te );
|
|
||||||
}
|
}
|
||||||
catch (IllegalAccessException e)
|
catch (IllegalAccessException e)
|
||||||
{
|
{
|
||||||
|
@ -89,8 +79,6 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
{
|
{
|
||||||
if ( day_BarrelClass.isInstance( te ) )
|
if ( day_BarrelClass.isInstance( te ) )
|
||||||
return (Integer) day_getItemCount.invoke( te );
|
return (Integer) day_getItemCount.invoke( te );
|
||||||
else
|
|
||||||
return (Integer) getItemCount.invoke( te );
|
|
||||||
}
|
}
|
||||||
catch (IllegalAccessException e)
|
catch (IllegalAccessException e)
|
||||||
{
|
{
|
||||||
|
@ -111,8 +99,6 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
{
|
{
|
||||||
if ( day_BarrelClass.isInstance( te ) )
|
if ( day_BarrelClass.isInstance( te ) )
|
||||||
day_item.set( te, input == null ? null : input.copy() );
|
day_item.set( te, input == null ? null : input.copy() );
|
||||||
else
|
|
||||||
item.set( te, input == null ? null : input.copy() );
|
|
||||||
|
|
||||||
te.markDirty();
|
te.markDirty();
|
||||||
}
|
}
|
||||||
|
@ -131,8 +117,6 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
{
|
{
|
||||||
if ( day_BarrelClass.isInstance( te ) )
|
if ( day_BarrelClass.isInstance( te ) )
|
||||||
day_setItemCount.invoke( te, max );
|
day_setItemCount.invoke( te, max );
|
||||||
else
|
|
||||||
setItemCount.invoke( te, max );
|
|
||||||
|
|
||||||
te.markDirty();
|
te.markDirty();
|
||||||
}
|
}
|
||||||
|
@ -158,22 +142,14 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
{
|
{
|
||||||
if ( day_BarrelClass.isAssignableFrom( te.getClass() ) )
|
if ( day_BarrelClass.isAssignableFrom( te.getClass() ) )
|
||||||
return true;
|
return true;
|
||||||
if ( barrelClass.isAssignableFrom( te.getClass() ) )
|
|
||||||
return true;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void Init() throws Throwable
|
public void Init() throws Throwable
|
||||||
{
|
{
|
||||||
barrelClass = Class.forName( "factorization.weird.TileEntityBarrel" );
|
|
||||||
day_BarrelClass = Class.forName( "factorization.weird.TileEntityDayBarrel" );
|
day_BarrelClass = Class.forName( "factorization.weird.TileEntityDayBarrel" );
|
||||||
|
|
||||||
getItemCount = barrelClass.getDeclaredMethod( "getItemCount", new Class[] {} );
|
|
||||||
setItemCount = barrelClass.getDeclaredMethod( "setItemCount", new Class[] { int.class } );
|
|
||||||
getMaxSize = barrelClass.getDeclaredMethod( "getMaxSize", new Class[] {} );
|
|
||||||
item = barrelClass.getDeclaredField( "item" );
|
|
||||||
|
|
||||||
day_getItemCount = day_BarrelClass.getDeclaredMethod( "getItemCount", new Class[] {} );
|
day_getItemCount = day_BarrelClass.getDeclaredMethod( "getItemCount", new Class[] {} );
|
||||||
day_setItemCount = day_BarrelClass.getDeclaredMethod( "setItemCount", new Class[] { int.class } );
|
day_setItemCount = day_BarrelClass.getDeclaredMethod( "setItemCount", new Class[] { int.class } );
|
||||||
day_getMaxSize = day_BarrelClass.getDeclaredMethod( "getMaxSize", new Class[] {} );
|
day_getMaxSize = day_BarrelClass.getDeclaredMethod( "getMaxSize", new Class[] {} );
|
||||||
|
@ -184,25 +160,13 @@ public class FZ implements IFZ, IIntegrationModule
|
||||||
public void PostInit()
|
public void PostInit()
|
||||||
{
|
{
|
||||||
AEApi.instance().registries().externalStorage().addExternalStorageInterface( new FactorizationHandler() );
|
AEApi.instance().registries().externalStorage().addExternalStorageInterface( new FactorizationHandler() );
|
||||||
|
|
||||||
// certus quartz
|
|
||||||
grinderRecipe( AEApi.instance().materials().materialCertusQuartzCrystal.stack( 1 ), AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) );
|
|
||||||
|
|
||||||
grinderRecipe( AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( 1 ),
|
|
||||||
AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) );
|
|
||||||
|
|
||||||
// fluix
|
|
||||||
grinderRecipe( AEApi.instance().materials().materialFluixCrystal.stack( 1 ), AEApi.instance().materials().materialFluixDust.stack( 1 ) );
|
|
||||||
|
|
||||||
// nether quartz
|
|
||||||
grinderRecipe( new ItemStack( Item.netherQuartz ), AEApi.instance().materials().materialNetherQuartzDust.stack( 1 ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void grinderRecipe(ItemStack in, ItemStack out)
|
public void grinderRecipe(ItemStack in, ItemStack out)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Class c = Class.forName( "factorization.common.TileEntityGrinder" );
|
Class c = Class.forName( "factorization.oreprocessing.TileEntityGrinder" );
|
||||||
Method m = c.getMethod( "addRecipe", Object.class, ItemStack.class, float.class );
|
Method m = c.getMethod( "addRecipe", Object.class, ItemStack.class, float.class );
|
||||||
m.invoke( c, in, out, 1.0 );
|
m.invoke( c, in, out, 1.0 );
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package appeng.integration.modules.helpers.dead;
|
package appeng.integration.modules.helpers;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
|
@ -1,4 +1,4 @@
|
||||||
package appeng.integration.modules.helpers.dead;
|
package appeng.integration.modules.helpers;
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
71
recipes/handlers/GrindFZ.java
Normal file
71
recipes/handlers/GrindFZ.java
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
package appeng.recipes.handlers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import appeng.api.exceptions.MissingIngredientError;
|
||||||
|
import appeng.api.exceptions.RecipeError;
|
||||||
|
import appeng.api.exceptions.RegistrationError;
|
||||||
|
import appeng.api.recipes.ICraftHandler;
|
||||||
|
import appeng.api.recipes.IIngredient;
|
||||||
|
import appeng.core.AELog;
|
||||||
|
import appeng.core.AppEng;
|
||||||
|
import appeng.integration.abstraction.IFZ;
|
||||||
|
import appeng.recipes.RecipeHandler;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
|
||||||
|
public class GrindFZ implements ICraftHandler, IWebsiteSeralizer
|
||||||
|
{
|
||||||
|
|
||||||
|
IIngredient pro_input;
|
||||||
|
IIngredient pro_output[];
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setup(List<List<IIngredient>> input, List<List<IIngredient>> output) throws RecipeError
|
||||||
|
{
|
||||||
|
if ( input.size() == 1 && output.size() == 1 )
|
||||||
|
{
|
||||||
|
int outs = output.get( 0 ).size();
|
||||||
|
if ( input.get( 0 ).size() == 1 && outs == 1 )
|
||||||
|
{
|
||||||
|
pro_input = input.get( 0 ).get( 0 );
|
||||||
|
pro_output = output.get( 0 ).toArray( new IIngredient[outs] );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new RecipeError( "Grind must have a single input, and single output." );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() throws RegistrationError, MissingIngredientError
|
||||||
|
{
|
||||||
|
if ( AppEng.instance.isIntegrationEnabled( "FZ" ) )
|
||||||
|
{
|
||||||
|
IFZ fz = (IFZ) AppEng.instance.getIntegration( "FZ" );
|
||||||
|
for (ItemStack is : pro_input.getItemStackSet())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fz.grinderRecipe( is, pro_output[0].getItemStack() );
|
||||||
|
}
|
||||||
|
catch (java.lang.RuntimeException err)
|
||||||
|
{
|
||||||
|
AELog.info( "FZ not happy - " + err.getMessage() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canCraft(ItemStack output) throws RegistrationError, MissingIngredientError
|
||||||
|
{
|
||||||
|
return Platform.isSameItemPrecise( pro_output[0].getItemStack(), output );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPattern(RecipeHandler h)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue