Gave color changing more freedom.

Bump API version to 10
This commit is contained in:
Ellpeck 2016-05-06 12:26:41 +02:00
parent d842367252
commit 73ebec3930
4 changed files with 18 additions and 9 deletions

View file

@ -27,7 +27,7 @@ public class ActuallyAdditionsAPI{
public static final String MOD_ID = "actuallyadditions"; public static final String MOD_ID = "actuallyadditions";
public static final String API_ID = MOD_ID+"api"; public static final String API_ID = MOD_ID+"api";
public static final String API_VERSION = "9"; public static final String API_VERSION = "10";
public static List<CrusherRecipe> crusherRecipes = new ArrayList<CrusherRecipe>(); public static List<CrusherRecipe> crusherRecipes = new ArrayList<CrusherRecipe>();
public static List<BallOfFurReturn> ballOfFurReturnItems = new ArrayList<BallOfFurReturn>(); public static List<BallOfFurReturn> ballOfFurReturnItems = new ArrayList<BallOfFurReturn>();

View file

@ -1,6 +1,9 @@
package de.ellpeck.actuallyadditions.api.recipe; package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
/** /**
* Changes an item's color by changing its metadata. * Changes an item's color by changing its metadata.
@ -9,7 +12,7 @@ import net.minecraft.item.ItemStack;
public class ColorLensChangerByDyeMeta implements IColorLensChanger{ public class ColorLensChangerByDyeMeta implements IColorLensChanger{
@Override @Override
public ItemStack modifyItem(ItemStack stack){ public ItemStack modifyItem(ItemStack stack, IBlockState hitBlockState, BlockPos hitBlock, IAtomicReconstructor tile){
ItemStack newStack = stack.copy(); ItemStack newStack = stack.copy();
int meta = newStack.getItemDamage(); int meta = newStack.getItemDamage();
if(meta >= 15){ if(meta >= 15){

View file

@ -1,12 +1,15 @@
package de.ellpeck.actuallyadditions.api.recipe; package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
/** /**
* Used for the Atomic Reconstructor's Color Lens changing algorythm. * Used for the Atomic Reconstructor's Color Lens changing algorythm.
* When registering a new item to be changed, it needs an IColorLensChanger which * When registering a new item to be changed, it needs an IColorLensChanger which
* is the method with which the item will be changed. * is the method with which the item will be changed.
* * <p>
* See ColorLensChangerByDyeMeta for reference. * See ColorLensChangerByDyeMeta for reference.
*/ */
public interface IColorLensChanger{ public interface IColorLensChanger{
@ -16,9 +19,12 @@ public interface IColorLensChanger{
* Will only be called with stacks containing items that are registered with * Will only be called with stacks containing items that are registered with
* this IColorLensChanger. * this IColorLensChanger.
* *
* @param stack the stack to modify * @param stack the stack to modify
* @param hitBlockState The state of the block that was hit
* @param hitBlock the block that was hit (usually air, or the block that is also in the stack)
* @param tile the Reconstructor doing the color conversion
* @return the modified stack. Please make sure to return a modified COPY of the input stack. * @return the modified stack. Please make sure to return a modified COPY of the input stack.
*/ */
ItemStack modifyItem(ItemStack stack); ItemStack modifyItem(ItemStack stack, IBlockState hitBlockState, BlockPos hitBlock, IAtomicReconstructor tile);
} }

View file

@ -58,7 +58,7 @@ public class LensColor extends Lens{
if(hitBlock != null){ if(hitBlock != null){
if(tile.getEnergy() >= ENERGY_USE){ if(tile.getEnergy() >= ENERGY_USE){
int meta = PosUtil.getMetadata(hitBlock, tile.getWorldObject()); int meta = PosUtil.getMetadata(hitBlock, tile.getWorldObject());
ItemStack returnStack = this.tryConvert(new ItemStack(PosUtil.getBlock(hitBlock, tile.getWorldObject()), 1, meta)); ItemStack returnStack = this.tryConvert(new ItemStack(PosUtil.getBlock(hitBlock, tile.getWorldObject()), 1, meta), hitState, hitBlock, tile);
if(returnStack != null && returnStack.getItem() instanceof ItemBlock){ if(returnStack != null && returnStack.getItem() instanceof ItemBlock){
PosUtil.setBlock(hitBlock, tile.getWorldObject(), Block.getBlockFromItem(returnStack.getItem()), returnStack.getItemDamage(), 2); PosUtil.setBlock(hitBlock, tile.getWorldObject(), Block.getBlockFromItem(returnStack.getItem()), returnStack.getItemDamage(), 2);
@ -69,7 +69,7 @@ public class LensColor extends Lens{
ArrayList<EntityItem> items = (ArrayList<EntityItem>)tile.getWorldObject().getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), hitBlock.getX()+1, hitBlock.getY()+1, hitBlock.getZ()+1)); ArrayList<EntityItem> items = (ArrayList<EntityItem>)tile.getWorldObject().getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), hitBlock.getX()+1, hitBlock.getY()+1, hitBlock.getZ()+1));
for(EntityItem item : items){ for(EntityItem item : items){
if(!item.isDead && item.getEntityItem() != null && tile.getEnergy() >= ENERGY_USE){ if(!item.isDead && item.getEntityItem() != null && tile.getEnergy() >= ENERGY_USE){
ItemStack newStack = this.tryConvert(item.getEntityItem()); ItemStack newStack = this.tryConvert(item.getEntityItem(), hitState, hitBlock, tile);
if(newStack != null){ if(newStack != null){
item.setDead(); item.setDead();
@ -84,13 +84,13 @@ public class LensColor extends Lens{
return false; return false;
} }
private ItemStack tryConvert(ItemStack stack){ private ItemStack tryConvert(ItemStack stack, IBlockState hitState, BlockPos hitBlock, IAtomicReconstructor tile){
if(stack != null){ if(stack != null){
Item item = stack.getItem(); Item item = stack.getItem();
if(item != null){ if(item != null){
for(Map.Entry<Item, IColorLensChanger> changer : ActuallyAdditionsAPI.reconstructorLensColorChangers.entrySet()){ for(Map.Entry<Item, IColorLensChanger> changer : ActuallyAdditionsAPI.reconstructorLensColorChangers.entrySet()){
if(item == changer.getKey()){ if(item == changer.getKey()){
return changer.getValue().modifyItem(stack); return changer.getValue().modifyItem(stack, hitState, hitBlock, tile);
} }
} }
} }