Added stuffs
This commit is contained in:
parent
76f4b5b0d9
commit
bf14e3ebb1
41
src/main/java/WayofTime/alchemicalWizardry/api/Vector3.java
Normal file
41
src/main/java/WayofTime/alchemicalWizardry/api/Vector3.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package WayofTime.alchemicalWizardry.api;
|
||||
|
||||
public class Vector3
|
||||
{
|
||||
public int x, y, z;
|
||||
|
||||
public Vector3(int x, int y, int z)
|
||||
{
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public Vector3 add(Vector3 vec1)
|
||||
{
|
||||
return new Vector3(this.x + vec1.x, this.y + vec1.y, this.z + vec1.z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "V3(" + x + "}, " + y + "}," + z + "})";
|
||||
}
|
||||
|
||||
private boolean canEqual(Object object)
|
||||
{
|
||||
return object instanceof Vector3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object object)
|
||||
{
|
||||
return object == this ? true : (object instanceof Vector3 ? canEqual(this) && this.x == ((Vector3) object).x && this.y == ((Vector3) object).y && this.z == ((Vector3) object).z : false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return 48131 * x - 95021 * y + z;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
package WayofTime.alchemicalWizardry.client.renderer;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RenderFakeBlocks
|
||||
{
|
||||
public static void drawFakeBlock(WayofTime.alchemicalWizardry.api.Vector3 vector3, Block block, int meta, double minX, double minY, double minZ, World world)
|
||||
{
|
||||
double maxX = minX + 1;
|
||||
double maxY = minY + 1;
|
||||
double maxZ = minZ + 1;
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
|
||||
float texMinU, texMaxU, texMinV, texMaxV;
|
||||
|
||||
texMinU = getMinU(block, meta, 0);
|
||||
texMaxU = getMaxU(block, meta, 0);
|
||||
texMinV = getMinV(block, meta, 0);
|
||||
texMaxV = getMaxV(block, meta, 0);
|
||||
tessellator.addVertexWithUV(minX, minY, minZ, texMinU, texMinV);
|
||||
tessellator.addVertexWithUV(maxX, minY, minZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(maxX, minY, maxZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(minX, minY, maxZ, texMinU, texMaxV);
|
||||
|
||||
texMinU = getMinU(block, meta, 1);
|
||||
texMaxU = getMaxU(block, meta, 1);
|
||||
texMinV = getMinV(block, meta, 1);
|
||||
texMaxV = getMaxV(block, meta, 1);
|
||||
tessellator.addVertexWithUV(minX, maxY, maxZ, texMinU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, maxZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, minZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(minX, maxY, minZ, texMinU, texMinV);
|
||||
|
||||
texMinU = getMinU(block, meta, 2);
|
||||
texMaxU = getMaxU(block, meta, 2);
|
||||
texMinV = getMinV(block, meta, 2);
|
||||
texMaxV = getMaxV(block, meta, 2);
|
||||
tessellator.addVertexWithUV(maxX, minY, minZ, texMinU, texMaxV);
|
||||
tessellator.addVertexWithUV(minX, minY, minZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(minX, maxY, minZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, minZ, texMinU, texMinV);
|
||||
|
||||
texMinU = getMinU(block, meta, 3);
|
||||
texMaxU = getMaxU(block, meta, 3);
|
||||
texMinV = getMinV(block, meta, 3);
|
||||
texMaxV = getMaxV(block, meta, 3);
|
||||
tessellator.addVertexWithUV(minX, minY, maxZ, texMinU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, minY, maxZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, maxZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(minX, maxY, maxZ, texMinU, texMinV);
|
||||
|
||||
texMinU = getMinU(block, meta, 4);
|
||||
texMaxU = getMaxU(block, meta, 4);
|
||||
texMinV = getMinV(block, meta, 4);
|
||||
texMaxV = getMaxV(block, meta, 4);
|
||||
tessellator.addVertexWithUV(minX, minY, minZ, texMinU, texMaxV);
|
||||
tessellator.addVertexWithUV(minX, minY, maxZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(minX, maxY, maxZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(minX, maxY, minZ, texMinU, texMinV);
|
||||
|
||||
texMinU = getMinU(block, meta, 5);
|
||||
texMaxU = getMaxU(block, meta, 5);
|
||||
texMinV = getMinV(block, meta, 5);
|
||||
texMaxV = getMaxV(block, meta, 5);
|
||||
tessellator.addVertexWithUV(maxX, minY, maxZ, texMinU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, minY, minZ, texMaxU, texMaxV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, minZ, texMaxU, texMinV);
|
||||
tessellator.addVertexWithUV(maxX, maxY, maxZ, texMinU, texMinV);
|
||||
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
private static float getMinU(Block block, int meta, int side)
|
||||
{
|
||||
IIcon icon = block.getIcon(side, meta);
|
||||
return icon.getMinU();
|
||||
}
|
||||
|
||||
private static float getMaxU(Block block, int meta, int side)
|
||||
{
|
||||
IIcon icon = block.getIcon(side, meta);
|
||||
return icon.getMaxU();
|
||||
}
|
||||
|
||||
private static float getMinV(Block block, int meta, int side)
|
||||
{
|
||||
IIcon icon = block.getIcon(side, meta);
|
||||
return icon.getMinV();
|
||||
}
|
||||
|
||||
private static float getMaxV(Block block, int meta, int side)
|
||||
{
|
||||
IIcon icon = block.getIcon(side, meta);
|
||||
return icon.getMaxV();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
package WayofTime.alchemicalWizardry.client.renderer;
|
||||
|
||||
import WayofTime.alchemicalWizardry.ModBlocks;
|
||||
import WayofTime.alchemicalWizardry.api.Vector3;
|
||||
import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
|
||||
import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
|
||||
import WayofTime.alchemicalWizardry.api.rituals.RitualEffect;
|
||||
import WayofTime.alchemicalWizardry.api.rituals.Rituals;
|
||||
import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||
|
||||
public class RitualDivinerRender
|
||||
{
|
||||
@SubscribeEvent
|
||||
public void render(RenderWorldLastEvent event)
|
||||
{
|
||||
Minecraft minecraft = Minecraft.getMinecraft();
|
||||
EntityClientPlayerMP player = minecraft.thePlayer;
|
||||
World world = player.worldObj;
|
||||
|
||||
if (minecraft.objectMouseOver == null || minecraft.objectMouseOver.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TileEntity tileEntity = world.getTileEntity(minecraft.objectMouseOver.blockX, minecraft.objectMouseOver.blockY, minecraft.objectMouseOver.blockZ);
|
||||
|
||||
if (!(tileEntity instanceof IMasterRitualStone))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3 vec3 = new Vector3(minecraft.objectMouseOver.blockX, minecraft.objectMouseOver.blockY, minecraft.objectMouseOver.blockZ);
|
||||
double posX = player.lastTickPosX + (player.posX - player.lastTickPosX) * event.partialTicks;
|
||||
double posY = player.lastTickPosY + (player.posY - player.lastTickPosY) * event.partialTicks;
|
||||
double posZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * event.partialTicks;
|
||||
|
||||
if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemRitualDiviner)
|
||||
{
|
||||
ItemRitualDiviner ritualDiviner = (ItemRitualDiviner) player.inventory.getCurrentItem().getItem();
|
||||
int direction = ritualDiviner.getDirection(player.inventory.getCurrentItem());
|
||||
RitualEffect ritualEffect = getEffectFromString(ritualDiviner.getCurrentRitual(player.inventory.getCurrentItem()));
|
||||
|
||||
if (ritualEffect == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (RitualComponent ritualComponent : ritualEffect.getRitualComponentList())
|
||||
{
|
||||
Vector3 vX = vec3.add(new Vector3(ritualComponent.getX(direction), ritualComponent.getY(), ritualComponent.getZ(direction)));
|
||||
double minX = vX.x - posX;
|
||||
double minY = vX.y - posY;
|
||||
double minZ = vX.z - posZ;
|
||||
|
||||
if (!world.getBlock(vX.x, vX.y, vX.z).isOpaqueCube())
|
||||
{
|
||||
RenderFakeBlocks.drawFakeBlock(vX, ModBlocks.ritualStone, ritualComponent.getStoneType(), minX, minY, minZ, world);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static RitualEffect getEffectFromString(String name)
|
||||
{
|
||||
Rituals ritual = Rituals.ritualMap.get(name);
|
||||
|
||||
if (ritual == null)
|
||||
return null;
|
||||
|
||||
return ritual.effect;
|
||||
}
|
||||
}
|
|
@ -10,17 +10,14 @@ public class AchievementTrigger
|
|||
{
|
||||
@SubscribeEvent
|
||||
public void onItemPickedUp(PlayerEvent.ItemPickupEvent event)
|
||||
{
|
||||
for (Item item : AchievementsRegistry.pickupList)
|
||||
{
|
||||
ItemStack stack = event.pickedUp.getEntityItem();
|
||||
|
||||
for (Item item : AchievementsRegistry.list)
|
||||
if (stack != null && stack.getItem() == item)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
if (stack != null && stack.getItem() instanceof IPickupAchievement)
|
||||
{
|
||||
Achievement achievement = ((IPickupAchievement) stack.getItem()).getAchievementOnPickup(stack, event.player, event.pickedUp);
|
||||
Achievement achievement = AchievementsRegistry.getAchievementForItem(item);
|
||||
|
||||
if (achievement != null)
|
||||
{
|
||||
|
@ -28,13 +25,16 @@ public class AchievementTrigger
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onItemCrafted(PlayerEvent.ItemCraftedEvent event)
|
||||
{
|
||||
if (event.crafting != null && event.crafting.getItem() instanceof ICraftAchievement)
|
||||
for (Item item : AchievementsRegistry.craftinglist)
|
||||
{
|
||||
Achievement achievement = ((ICraftAchievement) event.crafting.getItem()).getAchievementOnCraft(event.crafting, event.player, event.craftMatrix);
|
||||
if (event.crafting != null && event.crafting.getItem() == item)
|
||||
{
|
||||
Achievement achievement = AchievementsRegistry.getAchievementForItem(event.crafting.getItem());
|
||||
|
||||
if (achievement != null)
|
||||
{
|
||||
|
@ -43,3 +43,4 @@ public class AchievementTrigger
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,16 +2,42 @@ package WayofTime.alchemicalWizardry.common.achievements;
|
|||
|
||||
import WayofTime.alchemicalWizardry.ModItems;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.stats.Achievement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AchievementsRegistry
|
||||
{
|
||||
public static List<Item> list = new ArrayList();
|
||||
public final static List<Item> craftinglist = new ArrayList();
|
||||
public final static List<Item> pickupList = new ArrayList();
|
||||
|
||||
public void addItemsToList()
|
||||
public static void init()
|
||||
{
|
||||
list.add(ModItems.sacrificialDagger);
|
||||
addItemsToCraftingList();
|
||||
addItemsToPickupList();
|
||||
}
|
||||
|
||||
public static void addItemsToCraftingList()
|
||||
{
|
||||
craftinglist.add(ModItems.sacrificialDagger);
|
||||
}
|
||||
|
||||
public static void addItemsToPickupList()
|
||||
{
|
||||
pickupList.add(ModItems.weakBloodOrb);
|
||||
}
|
||||
|
||||
public static Achievement getAchievementForItem(Item item)
|
||||
{
|
||||
if (item == ModItems.sacrificialDagger)
|
||||
{
|
||||
return ModAchievements.firstPrick;
|
||||
}
|
||||
if (item == ModItems.weakBloodOrb)
|
||||
{
|
||||
return ModAchievements.weakOrb;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,19 +5,23 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||
import net.minecraft.stats.Achievement;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraftforge.common.AchievementPage;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
public class ModAchievements
|
||||
{
|
||||
public static AchievementPage alchemicalWizardryPage;
|
||||
|
||||
public static Achievement firstPrick;
|
||||
public static Achievement weakOrb;
|
||||
|
||||
public static void init()
|
||||
{
|
||||
firstPrick = new AchievementsMod(StatCollector.translateToLocal("achievement.firstPrick"), 0, 0, ModItems.sacrificialDagger, firstPrick);
|
||||
firstPrick = new AchievementsMod(StatCollector.translateToLocal("firstPrick"), 0, 0, ModItems.sacrificialDagger, null);
|
||||
weakOrb = new AchievementsMod(StatCollector.translateToLocal("weakOrb"), 3, 0, ModItems.weakBloodOrb, firstPrick);
|
||||
|
||||
alchemicalWizardryPage = new AchievementPage("AlchemicalWizardry", AchievementsMod.achievements.toArray(new Achievement[AchievementsMod.achievements.size()]));
|
||||
AchievementPage.registerAchievementPage(alchemicalWizardryPage);
|
||||
AchievementsRegistry.init();
|
||||
FMLCommonHandler.instance().bus().register(new AchievementTrigger());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -258,11 +258,6 @@ public class SigilOfTheBridge extends EnergyItems implements ArmourUpgrade
|
|||
verticalOffset--;
|
||||
}
|
||||
|
||||
if (world.isRemote)
|
||||
{
|
||||
verticalOffset--;
|
||||
}
|
||||
|
||||
int posX = (int) Math.round(player.posX - 0.5f);
|
||||
int posY = (int) player.posY;
|
||||
int posZ = (int) Math.round(player.posZ - 0.5f);
|
||||
|
|
|
@ -451,5 +451,7 @@ message.tanksegmenter.tankssetto=tank(s) set to:
|
|||
message.routerfocus.limit=Focus' Item Limit set to:
|
||||
|
||||
#Achievements
|
||||
achievement.alchemicalwizardy:firstPrick=Your first prick!
|
||||
achievement.alchemicalwizardy:firstPrick.desc=The first drop of life into the Altar...
|
||||
achievement.alchemicalwizardry:firstPrick=Your First Prick!
|
||||
achievement.alchemicalwizardry:firstPrick.desc=The first drop of life into the Altar...
|
||||
achievement.alchemicalwizardry:weakOrb=Faintly Glowing Red...
|
||||
achievement.alchemicalwizardry:weakOrb.desc=This orb will suffice...for now...
|
||||
|
|
Loading…
Reference in a new issue