Added the Updraft Array (feather + glowstone)
This commit is contained in:
parent
39d215887f
commit
b4ff6d5d2f
11 changed files with 124 additions and 11 deletions
|
@ -0,0 +1,52 @@
|
|||
package WayofTime.bloodmagic.alchemyArray;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyArrayEffect;
|
||||
import WayofTime.bloodmagic.api.iface.IAlchemyArray;
|
||||
|
||||
public class AlchemyArrayEffectUpdraft extends AlchemyArrayEffect
|
||||
{
|
||||
public AlchemyArrayEffectUpdraft(String key)
|
||||
{
|
||||
super(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(TileEntity tile, int ticksActive)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(IAlchemyArray array, World world, BlockPos pos, IBlockState state, Entity entity)
|
||||
{
|
||||
double motionY = 1.5;
|
||||
|
||||
entity.fallDistance = 0;
|
||||
|
||||
entity.motionY = motionY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound tag)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound tag)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlchemyArrayEffect getNewCopy()
|
||||
{
|
||||
return new AlchemyArrayEffectUpdraft(key);
|
||||
}
|
||||
}
|
|
@ -60,7 +60,15 @@ public class AlchemyArrayRecipeRegistry
|
|||
{
|
||||
arrayRecipe.catalystMap.put(ItemStackWrapper.getHolder(catalystStack), arrayEffect);
|
||||
if (circleRenderer != null)
|
||||
arrayRecipe.circleRenderer = circleRenderer;
|
||||
{
|
||||
if (arrayRecipe.defaultCircleRenderer == null)
|
||||
{
|
||||
arrayRecipe.defaultCircleRenderer = circleRenderer;
|
||||
} else
|
||||
{
|
||||
arrayRecipe.circleMap.put(ItemStackWrapper.getHolder(catalystStack), circleRenderer);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -157,7 +165,7 @@ public class AlchemyArrayRecipeRegistry
|
|||
{
|
||||
AlchemyArrayRecipe arrayRecipe = entry.getValue();
|
||||
if (arrayRecipe.doesInputMatchRecipe(input))
|
||||
arrayRecipe.circleRenderer = circleRenderer;
|
||||
arrayRecipe.defaultCircleRenderer = circleRenderer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -208,21 +216,23 @@ public class AlchemyArrayRecipeRegistry
|
|||
return getAlchemyArrayEffect(Collections.singletonList(input), catalystStack);
|
||||
}
|
||||
|
||||
public static AlchemyCircleRenderer getAlchemyCircleRenderer(List<ItemStack> input)
|
||||
public static AlchemyCircleRenderer getAlchemyCircleRenderer(List<ItemStack> input, @Nullable ItemStack catalystStack)
|
||||
{
|
||||
for (Entry<List<ItemStack>, AlchemyArrayRecipe> entry : recipes.entrySet())
|
||||
{
|
||||
AlchemyArrayRecipe arrayRecipe = entry.getValue();
|
||||
if (arrayRecipe.doesInputMatchRecipe(input))
|
||||
return arrayRecipe.circleRenderer;
|
||||
{
|
||||
return arrayRecipe.getAlchemyArrayRendererForCatalyst(catalystStack);
|
||||
}
|
||||
}
|
||||
|
||||
return defaultRenderer;
|
||||
}
|
||||
|
||||
public static AlchemyCircleRenderer getAlchemyCircleRenderer(ItemStack itemStack)
|
||||
public static AlchemyCircleRenderer getAlchemyCircleRenderer(ItemStack itemStack, @Nullable ItemStack catalystStack)
|
||||
{
|
||||
return getAlchemyCircleRenderer(Collections.singletonList(itemStack));
|
||||
return getAlchemyCircleRenderer(Collections.singletonList(itemStack), catalystStack);
|
||||
}
|
||||
|
||||
@Getter
|
||||
|
@ -230,9 +240,10 @@ public class AlchemyArrayRecipeRegistry
|
|||
@EqualsAndHashCode
|
||||
public static class AlchemyArrayRecipe
|
||||
{
|
||||
public AlchemyCircleRenderer circleRenderer;
|
||||
public AlchemyCircleRenderer defaultCircleRenderer;
|
||||
public final List<ItemStack> input;
|
||||
public final BiMap<ItemStackWrapper, AlchemyArrayEffect> catalystMap = HashBiMap.create();
|
||||
public final BiMap<ItemStackWrapper, AlchemyCircleRenderer> circleMap = HashBiMap.create();
|
||||
|
||||
private AlchemyArrayRecipe(List<ItemStack> input, ItemStack catalystStack, AlchemyArrayEffect arrayEffect, AlchemyCircleRenderer circleRenderer, boolean useless)
|
||||
{
|
||||
|
@ -240,7 +251,7 @@ public class AlchemyArrayRecipeRegistry
|
|||
|
||||
catalystMap.put(ItemStackWrapper.getHolder(catalystStack), arrayEffect);
|
||||
|
||||
this.circleRenderer = circleRenderer;
|
||||
this.defaultCircleRenderer = circleRenderer;
|
||||
}
|
||||
|
||||
public AlchemyArrayRecipe(ItemStack inputStack, ItemStack catalystStack, AlchemyArrayEffect arrayEffect, AlchemyCircleRenderer circleRenderer)
|
||||
|
@ -298,6 +309,25 @@ public class AlchemyArrayRecipeRegistry
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
public AlchemyCircleRenderer getAlchemyArrayRendererForCatalyst(@Nullable ItemStack comparedStack)
|
||||
{
|
||||
for (Entry<ItemStackWrapper, AlchemyCircleRenderer> entry : circleMap.entrySet())
|
||||
{
|
||||
ItemStack catalystStack = entry.getKey().toStack();
|
||||
|
||||
if (comparedStack == null && catalystStack == null)
|
||||
return entry.getValue();
|
||||
|
||||
if (comparedStack == null || catalystStack == null)
|
||||
continue;
|
||||
|
||||
if (catalystStack.isItemEqual(comparedStack))
|
||||
return entry.getValue();
|
||||
}
|
||||
|
||||
return defaultCircleRenderer;
|
||||
}
|
||||
}
|
||||
|
||||
public static BiMap<List<ItemStack>, AlchemyArrayRecipe> getRecipes()
|
||||
|
|
|
@ -12,8 +12,9 @@ public class RenderAlchemyArray extends TileEntitySpecialRenderer<TileAlchemyArr
|
|||
public void renderTileEntityAt(TileAlchemyArray alchemyArray, double x, double y, double z, float partialTicks, int destroyStage)
|
||||
{
|
||||
ItemStack inputStack = alchemyArray.getStackInSlot(0);
|
||||
ItemStack catalystStack = alchemyArray.getStackInSlot(1);
|
||||
int craftTime = alchemyArray.activeCounter;
|
||||
AlchemyCircleRenderer renderer = AlchemyArrayRecipeRegistry.getAlchemyCircleRenderer(inputStack);
|
||||
AlchemyCircleRenderer renderer = AlchemyArrayRecipeRegistry.getAlchemyCircleRenderer(inputStack, catalystStack);
|
||||
|
||||
renderer.renderAt(alchemyArray, x, y, z, (craftTime > 0 ? craftTime + partialTicks : 0));
|
||||
}
|
||||
|
|
|
@ -15,7 +15,12 @@ public class AttractorAlchemyCircleRenderer extends AlchemyCircleRenderer
|
|||
{
|
||||
public AttractorAlchemyCircleRenderer()
|
||||
{
|
||||
super(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ZombieBeacon.png"));
|
||||
this(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ZombieBeacon.png"));
|
||||
}
|
||||
|
||||
public AttractorAlchemyCircleRenderer(ResourceLocation resourceLocation)
|
||||
{
|
||||
super(resourceLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -90,6 +90,15 @@ public class CategoryDemon
|
|||
reactionsPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "reactions" + ".info"), 270));
|
||||
entries.put(new ResourceLocation(keyBase + "reactions"), new EntryText(reactionsPages, TextHelper.localize(keyBase + "reactions"), false));
|
||||
|
||||
List<IPage> sentientGemPages = new ArrayList<IPage>();
|
||||
sentientGemPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sentientGem" + ".info.1"), 270));
|
||||
sentientGemPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sentientGem" + ".info.2"), 270));
|
||||
entries.put(new ResourceLocation(keyBase + "sentientGem"), new EntryText(sentientGemPages, TextHelper.localize(keyBase + "sentientGem"), false));
|
||||
|
||||
List<IPage> routingPages = new ArrayList<IPage>();
|
||||
routingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "routing" + ".info"), 270));
|
||||
entries.put(new ResourceLocation(keyBase + "routing"), new EntryText(routingPages, TextHelper.localize(keyBase + "routing"), false));
|
||||
|
||||
return entries;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectAttractor;
|
|||
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectBinding;
|
||||
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectMovement;
|
||||
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectSkeletonTurret;
|
||||
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectUpdraft;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.api.altar.EnumAltarTier;
|
||||
import WayofTime.bloodmagic.api.compress.CompressionRegistry;
|
||||
|
@ -232,6 +233,8 @@ public class ModRecipes
|
|||
|
||||
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ROTTEN_FLESH), new ItemStack(Items.ROTTEN_FLESH), new AlchemyArrayEffectAttractor("attractor"), new AttractorAlchemyCircleRenderer());
|
||||
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.FEATHER), new ItemStack(Items.REDSTONE), new AlchemyArrayEffectMovement("movement"), new StaticAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MovementArray.png")));
|
||||
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.FEATHER), new ItemStack(Items.GLOWSTONE_DUST), new AlchemyArrayEffectUpdraft("updraft"), new AttractorAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/UpdraftArray.png")));
|
||||
|
||||
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ARROW), new ItemStack(Items.FEATHER), new AlchemyArrayEffectSkeletonTurret("skeletonTurret"), new DualAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret1.png"), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret2.png")));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue