mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 15:18:34 +01:00
Gave color changing more freedom.
Bump API version to 10
This commit is contained in:
parent
d842367252
commit
73ebec3930
4 changed files with 18 additions and 9 deletions
|
@ -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>();
|
||||||
|
|
|
@ -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){
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue