Begin skill creation

master
mDiyo 2013-06-02 06:46:42 -07:00
parent 8a3dac472d
commit 5f73c2152e
33 changed files with 1324 additions and 791 deletions

View File

@ -172,6 +172,7 @@
<entry key="item.tconstruct.canister.empty.name">Empty Canister</entry> <entry key="item.tconstruct.canister.empty.name">Empty Canister</entry>
<entry key="item.tconstruct.canister.miniheart.red.name">Miniature Red Heart</entry> <entry key="item.tconstruct.canister.miniheart.red.name">Miniature Red Heart</entry>
<entry key="item.tconstruct.canister.heart.name">Heart Canister</entry> <entry key="item.tconstruct.canister.heart.name">Heart Canister</entry>
<entry key="item.tconstruct.glove.name">Dirtmover Gloves</entry>
<entry key="SearedBlock.Table.name">Casting Table</entry> <entry key="SearedBlock.Table.name">Casting Table</entry>
<entry key="SearedBlock.Faucet.name">Seared Faucet</entry> <entry key="SearedBlock.Faucet.name">Seared Faucet</entry>

View File

@ -2,20 +2,21 @@ package mods.tinker.tconstruct;
import mods.tinker.tconstruct.common.TContent; import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.common.TProxyCommon; import mods.tinker.tconstruct.common.TProxyCommon;
import mods.tinker.tconstruct.library.SkillRegistry;
import mods.tinker.tconstruct.library.TConstructRegistry; import mods.tinker.tconstruct.library.TConstructRegistry;
import mods.tinker.tconstruct.library.crafting.Detailing; import mods.tinker.tconstruct.library.crafting.Detailing;
import mods.tinker.tconstruct.library.crafting.LiquidCasting; import mods.tinker.tconstruct.library.crafting.LiquidCasting;
import mods.tinker.tconstruct.library.util.TabTools; import mods.tinker.tconstruct.library.util.TabTools;
import mods.tinker.tconstruct.skill.Jump;
import mods.tinker.tconstruct.skill.WallBuilding;
import mods.tinker.tconstruct.util.PHConstruct; import mods.tinker.tconstruct.util.PHConstruct;
import mods.tinker.tconstruct.util.TCraftingHandler; import mods.tinker.tconstruct.util.TCraftingHandler;
import mods.tinker.tconstruct.util.TEventHandler; import mods.tinker.tconstruct.util.TEventHandler;
import mods.tinker.tconstruct.util.player.TPlayerHandler; import mods.tinker.tconstruct.util.player.TPlayerHandler;
import mods.tinker.tconstruct.worldgen.OverworldProvider;
import mods.tinker.tconstruct.worldgen.TBaseWorldGenerator; import mods.tinker.tconstruct.worldgen.TBaseWorldGenerator;
import mods.tinker.tconstruct.worldgen.village.TVillageTrades; import mods.tinker.tconstruct.worldgen.village.TVillageTrades;
import mods.tinker.tconstruct.worldgen.village.VillageSmelteryHandler; import mods.tinker.tconstruct.worldgen.village.VillageSmelteryHandler;
import mods.tinker.tconstruct.worldgen.village.VillageToolStationHandler; import mods.tinker.tconstruct.worldgen.village.VillageToolStationHandler;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Init;
@ -37,7 +38,7 @@ import cpw.mods.fml.common.registry.VillagerRegistry;
* @dependencies: IC2 API, MFR API * @dependencies: IC2 API, MFR API
*/ */
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.dev49", dependencies = "required-after:Forge@[7.7.1.675,)") @Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.4", dependencies = "required-after:Forge@[7.7.1.675,)")
@NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = mods.tinker.tconstruct.util.network.TPacketHandler.class) @NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = mods.tinker.tconstruct.util.network.TPacketHandler.class)
public class TConstruct public class TConstruct
{ {
@ -106,6 +107,8 @@ public class TConstruct
content.modIntegration(); content.modIntegration();
content.createEntities(); content.createEntities();
SkillRegistry.registerSkill("Wall Building", new WallBuilding());
SkillRegistry.registerSkill("Jump", new Jump());
} }
public static LiquidCasting getTableCasting() public static LiquidCasting getTableCasting()
@ -122,11 +125,12 @@ public class TConstruct
{ {
return chiselDetailing; return chiselDetailing;
} }
public static TEventHandler events; public static TEventHandler events;
public static TPlayerHandler playerTracker; public static TPlayerHandler playerTracker;
public static TContent content; public static TContent content;
public static LiquidCasting tableCasting; public static LiquidCasting tableCasting;
public static LiquidCasting basinCasting; public static LiquidCasting basinCasting;
public static Detailing chiselDetailing; public static Detailing chiselDetailing;
public static SkillRegistry skillRegistry;
} }

View File

@ -116,7 +116,7 @@ public class OreberryBush extends BlockLeavesBase implements IPlantable
} }
else else
{ {
return AxisAlignedBB.getBoundingBox(x, y, z, (double) x + 1.0D, (double) y + 1.0D, (double) z + 1.0D); return AxisAlignedBB.getBoundingBox(x+0.0625, y, z+0.0625, (double) x + 0.9375D, (double) y + 0.9375D, (double) z + 0.9375D);
} }
} }

View File

@ -612,7 +612,8 @@ public class SmelteryLogic extends InventoryLogic implements IActiveLogic, IFaci
{ {
for (int zPos = z - 1; zPos <= z + 1; zPos++) for (int zPos = z - 1; zPos <= z + 1; zPos++)
{ {
if (worldObj.getBlockId(xPos, y, zPos) != 0) Block block = Block.blocksList[worldObj.getBlockId(xPos, y, zPos)];
if (block != null && block.isAirBlock(worldObj, xPos, y, zPos))
return count; return count;
} }
} }
@ -646,7 +647,8 @@ public class SmelteryLogic extends InventoryLogic implements IActiveLogic, IFaci
for (int zPos = z - 1; zPos <= z + 1; zPos++) for (int zPos = z - 1; zPos <= z + 1; zPos++)
{ {
int blockID = worldObj.getBlockId(xPos, y, zPos); int blockID = worldObj.getBlockId(xPos, y, zPos);
if (blockID != 0) Block block = Block.blocksList[blockID];
if (block != null && !block.isAirBlock(worldObj, xPos, y, zPos))
{ {
if (blockID == TContent.smeltery.blockID) if (blockID == TContent.smeltery.blockID)
return validateBottom(x, y, z, count); return validateBottom(x, y, z, count);

View File

@ -1,8 +1,12 @@
package mods.tinker.tconstruct.client; package mods.tinker.tconstruct.client;
import java.util.List;
import mods.tinker.tconstruct.TConstruct; import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.client.armor.WingModel; import mods.tinker.tconstruct.client.armor.WingModel;
import mods.tinker.tconstruct.common.TContent; import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.skill.Skill;
import mods.tinker.tconstruct.util.player.TPlayerStats;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelBiped;
@ -13,7 +17,12 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.event.sound.SoundLoadEvent; import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.liquids.LiquidStack;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -22,6 +31,22 @@ public class TClientEvents
{ {
Minecraft mc = Minecraft.getMinecraft(); Minecraft mc = Minecraft.getMinecraft();
EntityPlayer player; EntityPlayer player;
/*@ForgeSubscribe
public void interact (PlayerInteractEvent event)
{
if (event.action == Action.RIGHT_CLICK_BLOCK && event.entityPlayer.worldObj.isRemote)
{
System.out.println("Fired");
List<Skill> skills = TProxyClient.skillList;
if (skills.size() > 0)
{
Skill walls = TConstruct.playerTracker.getPlayerStats(event.entityPlayer.username).skillList.get(0);
walls.rightClickActivate(event.entityPlayer, event.entityPlayer.worldObj);
}
}
}*/
/* Sounds */ /* Sounds */
@ForgeSubscribe @ForgeSubscribe
public void onSound (SoundLoadEvent event) public void onSound (SoundLoadEvent event)
@ -51,20 +76,22 @@ public class TClientEvents
} }
} }
/* Health */ /* HUD */
@ForgeSubscribe @ForgeSubscribe
public void renderHealthbar (RenderGameOverlayEvent.Post event) public void renderHealthbar (RenderGameOverlayEvent.Post event)
{ {
if (player == null)
player = mc.thePlayer;
ScaledResolution scaledresolution = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
int scaledWidth = scaledresolution.getScaledWidth();
int scaledHeight = scaledresolution.getScaledHeight();
int xBasePos = scaledWidth / 2 - 91;
int yBasePos = scaledHeight - 39;
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
if (event.type == RenderGameOverlayEvent.ElementType.HEALTH) if (event.type == RenderGameOverlayEvent.ElementType.HEALTH)
{ {
if (player == null)
player = mc.thePlayer;
ScaledResolution scaledresolution = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
int scaledWidth = scaledresolution.getScaledWidth();
int scaledHeight = scaledresolution.getScaledHeight();
int xBasePos = scaledWidth / 2 - 91;
int yBasePos = scaledHeight - 39;
this.mc.renderEngine.bindTexture("/mods/tinker/textures/gui/newhearts.png"); this.mc.renderEngine.bindTexture("/mods/tinker/textures/gui/newhearts.png");
int hp = player.getHealth(); int hp = player.getHealth();
@ -85,9 +112,22 @@ public class TClientEvents
this.mc.renderEngine.bindTexture("/gui/icons.png"); this.mc.renderEngine.bindTexture("/gui/icons.png");
} }
if (event.type == RenderGameOverlayEvent.ElementType.HOTBAR)
{
int amount = 0;
GL11.glScalef(1/16f, 1/16f, 1/16f);
for (Skill skill : stats.skillList)
{
if (!skill.getActive())
GL11.glColor4f(0.5f, 0.5f, 0.5f, 1.0F);
this.mc.renderEngine.bindTexture(skill.getTextureFile(scaledresolution.getScaleFactor()));
this.drawTexturedModalRect((2+amount*18)*16, 32, 0, 0, 256, 256);
amount++;
}
GL11.glScalef(16f, 16f, 16f);
}
} }
public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6) public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6)
{ {

View File

@ -4,13 +4,13 @@ import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.util.EnumSet; import java.util.EnumSet;
import mods.tinker.tconstruct.client.gui.InventoryTab; import mods.tinker.tconstruct.TConstruct;
import net.minecraft.block.Block; import mods.tinker.tconstruct.skill.Skill;
import mods.tinker.tconstruct.util.player.TPlayerStats;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraft.item.Item; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.network.packet.Packet250CustomPayload;
import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.PacketDispatcher;
@ -19,22 +19,29 @@ public class TControls extends TKeyHandler
{ {
//static KeyBinding grabKey = new KeyBinding("key.grab", 29); //static KeyBinding grabKey = new KeyBinding("key.grab", 29);
//static KeyBinding stiltsKey = new KeyBinding("key.stilts", 46); //static KeyBinding stiltsKey = new KeyBinding("key.stilts", 46);
public static KeyBinding armorKey = new KeyBinding("key.tarmor", 24); public static KeyBinding armorKey = new KeyBinding("key.tarmor", 24);
public static KeyBinding skillOne = new KeyBinding("key.skill.one", 44);
public static KeyBinding skillTwo = new KeyBinding("key.skill.two", 45);
public static KeyBinding skillThree = new KeyBinding("key.skill.three", 46);
public static KeyBinding skillFour = new KeyBinding("key.skill.four", 47);
public static KeyBinding skillFive = new KeyBinding("key.skill.five", 48);
static KeyBinding jumpKey; static KeyBinding jumpKey;
static KeyBinding invKey; static KeyBinding invKey;
static Minecraft mc; static Minecraft mc;
boolean jumping; boolean jumping;
boolean doubleJump = true; boolean doubleJump = true;
boolean climbing = false; boolean climbing = false;
boolean onGround = false; boolean onGround = false;
boolean onStilts = false; boolean onStilts = false;
//boolean onStilts = false; //boolean onStilts = false;
public TControls() public TControls()
{ {
super(new KeyBinding[] { armorKey }, new boolean[] { false }, getVanillaKeyBindings(), new boolean[] { false, false }); super(new KeyBinding[] { armorKey, skillOne, skillTwo, skillThree, skillFour, skillFive }, new boolean[] { false, false, false, false, false, false }, getVanillaKeyBindings(), new boolean[] {
//System.out.println("Controls registered"); false, false });
//System.out.println("Controls registered");Natura
} }
private static KeyBinding[] getVanillaKeyBindings () private static KeyBinding[] getVanillaKeyBindings ()
@ -56,15 +63,34 @@ public class TControls extends TKeyHandler
{ {
if (tickEnd && mc.theWorld != null) if (tickEnd && mc.theWorld != null)
{ {
if (kb == armorKey && mc.currentScreen == null) //Extended Armor if (kb == armorKey && mc.currentScreen == null) //Extended Armor
{ {
openArmorGui(mc.thePlayer.username); openArmorGui();//mc.thePlayer.username);
} }
if (kb == invKey && mc.currentScreen != null && mc.currentScreen.getClass() == GuiInventory.class)// && !mc.playerController.isInCreativeMode()) if (kb == invKey && mc.currentScreen != null && mc.currentScreen.getClass() == GuiInventory.class)// && !mc.playerController.isInCreativeMode())
{ {
TProxyClient.addTabsToInventory(); TProxyClient.addTabsToInventory();
}
} if (kb == skillOne)
{
sendSkillkey(mc.thePlayer, (byte) 0);//, mc.thePlayer.dimension, mc.thePlayer.entityId);
}
if (kb == skillTwo)
{
sendSkillkey(mc.thePlayer, (byte) 1);//, mc.thePlayer.dimension, mc.thePlayer.entityId);
}
if (kb == skillThree)
{
sendSkillkey(mc.thePlayer, (byte) 2);//, mc.thePlayer.dimension, mc.thePlayer.entityId);
}
if (kb == skillFour)
{
sendSkillkey(mc.thePlayer, (byte) 3);//, mc.thePlayer.dimension, mc.thePlayer.entityId);
}
if (kb == skillFive)
{
sendSkillkey(mc.thePlayer, (byte) 4);//, mc.thePlayer.dimension, mc.thePlayer.entityId);
}
/*if (kb == jumpKey) //Double jump /*if (kb == jumpKey) //Double jump
{ {
if (jumping && !doubleJump) if (jumping && !doubleJump)
@ -124,8 +150,8 @@ public class TControls extends TKeyHandler
doubleJump = false; doubleJump = false;
jumping = false; jumping = false;
} }
public void resetControls() public void resetControls ()
{ {
doubleJump = false; doubleJump = false;
jumping = false; jumping = false;
@ -150,7 +176,7 @@ public class TControls extends TKeyHandler
updateServer(bos); updateServer(bos);
} }
void updateSize (String name, float size) void updateSize (String name, float size)
{ {
ByteArrayOutputStream bos = new ByteArrayOutputStream(8); ByteArrayOutputStream bos = new ByteArrayOutputStream(8);
@ -168,25 +194,57 @@ public class TControls extends TKeyHandler
updateServer(bos); updateServer(bos);
} }
public static void openArmorGui(String username)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(8);
DataOutputStream outputStream = new DataOutputStream(bos);
try
{
outputStream.writeByte(3);
outputStream.writeUTF(username);
}
catch (Exception ex)
{
ex.printStackTrace();
}
updateServer(bos); public static void openArmorGui ()//String username)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(8);
DataOutputStream outputStream = new DataOutputStream(bos);
try
{
outputStream.writeByte(3);
//outputStream.writeUTF(username);
}
catch (Exception ex)
{
ex.printStackTrace();
}
updateServer(bos);
} }
static void updateServer(ByteArrayOutputStream bos) /*public void activateSkill (EntityPlayer player, int slot)
{
if (TProxyClient.skillList.size() > slot)
{
Skill skill = TProxyClient.skillList.get(slot);
if (skill != null)
{
skill.activate(player, player.worldObj);
}
}
}*/
public void sendSkillkey (EntityPlayer player, byte key)//, int dim, int id)
{
TConstruct.playerTracker.activateSkill(player, key);
ByteArrayOutputStream bos = new ByteArrayOutputStream(8);
DataOutputStream outputStream = new DataOutputStream(bos);
try
{
outputStream.writeByte(4);
//outputStream.writeInt(dim);
//outputStream.writeInt(id);
outputStream.writeByte(key);
}
catch (Exception ex)
{
ex.printStackTrace();
}
updateServer(bos);
}
static void updateServer (ByteArrayOutputStream bos)
{ {
Packet250CustomPayload packet = new Packet250CustomPayload(); Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "TConstruct"; packet.channel = "TConstruct";

View File

@ -9,7 +9,6 @@ import java.util.List;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import mods.natura.entity.NitroCreeper;
import mods.tinker.tconstruct.TConstruct; import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.blocks.logic.CastingBasinLogic; import mods.tinker.tconstruct.blocks.logic.CastingBasinLogic;
import mods.tinker.tconstruct.blocks.logic.CastingTableLogic; import mods.tinker.tconstruct.blocks.logic.CastingTableLogic;
@ -67,7 +66,9 @@ import mods.tinker.tconstruct.library.client.TConstructClientRegistry;
import mods.tinker.tconstruct.library.client.ToolGuiElement; import mods.tinker.tconstruct.library.client.ToolGuiElement;
import mods.tinker.tconstruct.library.crafting.ToolBuilder; import mods.tinker.tconstruct.library.crafting.ToolBuilder;
import mods.tinker.tconstruct.library.tools.ToolCore; import mods.tinker.tconstruct.library.tools.ToolCore;
import mods.tinker.tconstruct.skill.Skill;
import mods.tinker.tconstruct.util.player.ArmorExtended; import mods.tinker.tconstruct.util.player.ArmorExtended;
import mods.tinker.tconstruct.util.player.ArmorExtendedClient;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -99,7 +100,6 @@ import net.minecraft.client.particle.EntitySplashFX;
import net.minecraft.client.particle.EntitySuspendFX; import net.minecraft.client.particle.EntitySuspendFX;
import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderCreeper;
import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.GameSettings;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
@ -125,8 +125,9 @@ public class TProxyClient extends TProxyCommon
public static SmallFontRenderer smallFontRenderer; public static SmallFontRenderer smallFontRenderer;
public static Icon metalBall; public static Icon metalBall;
public static Minecraft mc; public static Minecraft mc;
public static ArmorExtended armorExtended = new ArmorExtended();
public static RenderItem itemRenderer = new RenderItem(); public static RenderItem itemRenderer = new RenderItem();
public static ArmorExtended armorExtended = new ArmorExtended();
@Override @Override
public Object getClientGuiElement (int ID, EntityPlayer player, World world, int x, int y, int z) public Object getClientGuiElement (int ID, EntityPlayer player, World world, int x, int y, int z)

View File

@ -65,7 +65,7 @@ public class InventoryTab extends GuiButton
if (this.id == 2) if (this.id == 2)
TProxyClient.openInventoryGui(); TProxyClient.openInventoryGui();
if (this.id == 3) if (this.id == 3)
TControls.openArmorGui(mc.thePlayer.username); TControls.openArmorGui();//mc.thePlayer.username);
} }
return inWindow; return inWindow;
} }

View File

@ -47,6 +47,7 @@ import mods.tinker.tconstruct.items.StrangeFood;
import mods.tinker.tconstruct.items.TitleIcon; import mods.tinker.tconstruct.items.TitleIcon;
import mods.tinker.tconstruct.items.ToolPart; import mods.tinker.tconstruct.items.ToolPart;
import mods.tinker.tconstruct.items.ToolShard; import mods.tinker.tconstruct.items.ToolShard;
import mods.tinker.tconstruct.items.armor.Glove;
import mods.tinker.tconstruct.items.armor.TArmorBase; import mods.tinker.tconstruct.items.armor.TArmorBase;
import mods.tinker.tconstruct.items.blocks.CraftedSoilItemBlock; import mods.tinker.tconstruct.items.blocks.CraftedSoilItemBlock;
import mods.tinker.tconstruct.items.blocks.GravelOreItem; import mods.tinker.tconstruct.items.blocks.GravelOreItem;
@ -233,11 +234,12 @@ public class TContent implements IFuelHandler
public static Item notebook; public static Item notebook;
public static Item note; public static Item note;
//Wearaables //Wearables
public static Item heavyHelmet; public static Item heavyHelmet;
public static Item heavyChestplate; public static Item heavyChestplate;
public static Item heavyPants; public static Item heavyPants;
public static Item heavyBoots; public static Item heavyBoots;
public static Item glove;
public static Item heartCanister; public static Item heartCanister;
@ -484,6 +486,7 @@ public class TContent implements IFuelHandler
//heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet"); //heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet");
heartCanister = new HeartCanister(PHConstruct.heartCanister).setUnlocalizedName("tconstruct.canister"); heartCanister = new HeartCanister(PHConstruct.heartCanister).setUnlocalizedName("tconstruct.canister");
heavyBoots = new TArmorBase(PHConstruct.heavyBoots, 3).setUnlocalizedName("tconstruct.HeavyBoots"); heavyBoots = new TArmorBase(PHConstruct.heavyBoots, 3).setUnlocalizedName("tconstruct.HeavyBoots");
glove = new Glove(PHConstruct.glove).setUnlocalizedName("tconstruct.Glove");
/*public static Item heavyHelmet; /*public static Item heavyHelmet;
public static Item heavyChestplate; public static Item heavyChestplate;
public static Item heavyPants; public static Item heavyPants;

View File

@ -40,7 +40,7 @@ public class HeartCanister extends CraftingItem
slotStack.stackSize++; slotStack.stackSize++;
stack.stackSize--; stack.stackSize--;
} }
armor.recalculateHealth(); armor.recalculateHealth(player, stats);
} }
} }
return stack; return stack;

View File

@ -2,7 +2,6 @@ package mods.tinker.tconstruct.items;
import java.util.List; import java.util.List;
import mods.natura.entity.NitroCreeper;
import mods.tinker.tconstruct.client.TProxyClient; import mods.tinker.tconstruct.client.TProxyClient;
import mods.tinker.tconstruct.entity.BlueSlime; import mods.tinker.tconstruct.entity.BlueSlime;
import mods.tinker.tconstruct.library.tools.ToolCore; import mods.tinker.tconstruct.library.tools.ToolCore;
@ -10,7 +9,6 @@ import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -106,9 +104,6 @@ public class TitleIcon extends Item
case 1: case 1:
spawnBossSlime(posX, posY, posZ, new BlueSlime(world), world, player); spawnBossSlime(posX, posY, posZ, new BlueSlime(world), world, player);
break; break;
case 2:
spawnEntity(posX, posY, posZ, new NitroCreeper(world), world, player);
break;
} }
if (!player.capabilities.isCreativeMode) if (!player.capabilities.isCreativeMode)
{ {

View File

@ -0,0 +1,20 @@
package mods.tinker.tconstruct.items.armor;
import mods.tinker.tconstruct.library.TConstructRegistry;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.Item;
public class Glove extends Item
{
public Glove(int par1)
{
super(par1);
this.setCreativeTab(TConstructRegistry.materialTab);
}
@Override
public void registerIcons (IconRegister iconRegister)
{
itemIcon = iconRegister.registerIcon("tinker:armor/dirthand");
}
}

View File

@ -0,0 +1,24 @@
package mods.tinker.tconstruct.library;
import java.util.HashMap;
import mods.tinker.tconstruct.skill.Skill;
public class SkillRegistry
{
public static HashMap<String, Skill> skills = new HashMap<String, Skill>();
static int skillID = 0;
public static HashMap<Integer, String> skillMapping = new HashMap<Integer, String>(); //Simplifies network transmission
public static void registerSkill(String name, Skill skill)
{
skills.put(name, skill);
skillMapping.put(getNextID(), name);
}
static Integer getNextID ()
{
return skillID++;
}
}

View File

@ -20,6 +20,7 @@ import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityGhast; import net.minecraft.entity.monster.EntityGhast;
import net.minecraft.entity.passive.EntityWolf; import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion; import net.minecraft.potion.Potion;
@ -28,6 +29,8 @@ import net.minecraft.stats.StatList;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.FakePlayer; import net.minecraftforge.common.FakePlayer;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -610,4 +613,28 @@ public class AbilityHelper
world.spawnEntityInWorld(entityitem); world.spawnEntityInWorld(entityitem);
return entityitem; return entityitem;
} }
public static MovingObjectPosition raytraceFromEntity (World world, Entity player, boolean par3, double range)
{
float f = 1.0F;
float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f;
float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f;
double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double) f;
double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D - (double) player.yOffset;
double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f;
Vec3 vec3 = world.getWorldVec3Pool().getVecFromPool(d0, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI);
float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = range;
if (player instanceof EntityPlayerMP)
{
d3 = ((EntityPlayerMP) player).theItemInWorldManager.getBlockReachDistance();
}
Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
return world.rayTraceBlocks_do_do(vec3, vec31, par3, !par3);
}
} }

View File

@ -14,11 +14,13 @@ import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TActiveOmniMod extends ActiveToolMod public class TActiveOmniMod extends ActiveToolMod
@ -50,7 +52,7 @@ public class TActiveOmniMod extends ActiveToolMod
{ {
if (player.capabilities.isCreativeMode) if (player.capabilities.isCreativeMode)
return false; return false;
if (tool instanceof HarvestTool) if (tool instanceof HarvestTool)
TContent.modL.midStreamModify(stack); TContent.modL.midStreamModify(stack);
@ -89,6 +91,33 @@ public class TActiveOmniMod extends ActiveToolMod
entityitem.delayBeforeCanPickup = 10; entityitem.delayBeforeCanPickup = 10;
world.spawnEntityInWorld(entityitem); world.spawnEntityInWorld(entityitem);
world.playAuxSFX(2001, x, y, z, bID + (meta << 12)); world.playAuxSFX(2001, x, y, z, bID + (meta << 12));
int i = spawnme.stackSize;
float f = FurnaceRecipes.smelting().getExperience(spawnme);
int j;
if (f == 0.0F)
{
i = 0;
}
else if (f < 1.0F)
{
j = MathHelper.floor_float((float) i * f);
if (j < MathHelper.ceiling_float_int((float) i * f) && (float) Math.random() < (float) i * f - (float) j)
{
++j;
}
i = j;
}
while (i > 0)
{
j = EntityXPOrb.getXPSplit(i);
i -= j;
player.worldObj.spawnEntityInWorld(new EntityXPOrb(world, x, y + 0.5, z, j));
}
} }
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {

View File

@ -1,16 +1,11 @@
package mods.tinker.tconstruct.plugins.minefactoryreloaded; package mods.tinker.tconstruct.plugins.minefactoryreloaded;
import mods.natura.entity.NitroCreeper;
import mods.tinker.tconstruct.common.TContent; import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.entity.BlueSlime; import mods.tinker.tconstruct.entity.BlueSlime;
import mods.tinker.tconstruct.entity.Crystal;
import mods.tinker.tconstruct.entity.MetalSlime;
import mods.tinker.tconstruct.entity.Skyla;
import mods.tinker.tconstruct.plugins.minefactoryreloaded.grindables.GrindableStandard; import mods.tinker.tconstruct.plugins.minefactoryreloaded.grindables.GrindableStandard;
import mods.tinker.tconstruct.plugins.minefactoryreloaded.harvestables.HarvestableOreBerry; import mods.tinker.tconstruct.plugins.minefactoryreloaded.harvestables.HarvestableOreBerry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import powercrystals.minefactoryreloaded.api.FarmingRegistry;
import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
@ -18,8 +13,6 @@ import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkMod;
import powercrystals.minefactoryreloaded.api.FarmingRegistry;
@Mod(modid = "TConstruct|CompatMineFactoryReloaded", name = "TConstruct Compat: MFR", version = "0.1", dependencies = "after:MineFactoryReloaded;after:TConstruct") @Mod(modid = "TConstruct|CompatMineFactoryReloaded", name = "TConstruct Compat: MFR", version = "0.1", dependencies = "after:MineFactoryReloaded;after:TConstruct")
@NetworkMod(clientSideRequired = false, serverSideRequired = false) @NetworkMod(clientSideRequired = false, serverSideRequired = false)
@ -42,10 +35,10 @@ public class MineFactoryReloaded
// A note: in 1.6, this method of registering grindables will no longer exist, once MFR moves to a more universal way of gathering drops. // A note: in 1.6, this method of registering grindables will no longer exist, once MFR moves to a more universal way of gathering drops.
FarmingRegistry.registerGrindable(new GrindableStandard(BlueSlime.class, new ItemStack(TContent.strangeFood))); FarmingRegistry.registerGrindable(new GrindableStandard(BlueSlime.class, new ItemStack(TContent.strangeFood)));
FarmingRegistry.registerGrindable(new GrindableStandard(Crystal.class, new ItemStack(Item.gunpowder))); //FarmingRegistry.registerGrindable(new GrindableStandard(Crystal.class, new ItemStack(Item.gunpowder)));
FarmingRegistry.registerGrindable(new GrindableStandard(MetalSlime.class, new ItemStack(TContent.strangeFood))); //FarmingRegistry.registerGrindable(new GrindableStandard(MetalSlime.class, new ItemStack(TContent.strangeFood)));
FarmingRegistry.registerGrindable(new GrindableStandard(NitroCreeper.class, new ItemStack(Item.gunpowder))); //FarmingRegistry.registerGrindable(new GrindableStandard(NitroCreeper.class, new ItemStack(Item.gunpowder)));
FarmingRegistry.registerGrindable(new GrindableStandard(Skyla.class, new ItemStack(Item.gunpowder))); //FarmingRegistry.registerGrindable(new GrindableStandard(Skyla.class, new ItemStack(Item.gunpowder)));
/* /*
* Perhaps TC ores should be registered as drops from the MFR Laser Drill here, but I don't know which things would be suitable for that. * Perhaps TC ores should be registered as drops from the MFR Laser Drill here, but I don't know which things would be suitable for that.

View File

@ -0,0 +1,35 @@
package mods.tinker.tconstruct.skill;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.world.World;
public class Jump extends Skill
{
@Override
public String getTextureFile (int guiscale)
{
/*if (guiscale == 2)
return "/mods/tinker/textures/skill/Jump32x.png";
if (guiscale == 3)
return "/mods/tinker/textures/skill/Jump48x.png";
return "/mods/tinker/textures/skill/Jump16x.png";*/
return "/mods/tinker/textures/skill/Jump48x.png";
}
@Override
public String getSkillName ()
{
return "Jump";
}
@Override
public void activate (Entity entity, World world)
{
if (entity.onGround)
entity.motionY = 0.8f;
}
}

View File

@ -0,0 +1,57 @@
package mods.tinker.tconstruct.skill;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
/* Base skill
*
*/
public abstract class Skill
{
boolean active = true;
public abstract String getTextureFile(int guiscale);
public abstract String getSkillName();
public abstract void activate(Entity entity, World world);
public void rightClickActivate(Entity entity, World world) {};
public int chargeTime() //Ticks
{
return 0;
}
public boolean canEntityUseSkill(Entity entity)
{
return true;
}
public int getSkillCost()
{
return 0;
}
public boolean getActive()
{
return active;
}
public Skill copy() throws InstantiationException, IllegalAccessException
{
return this.getClass().newInstance();
}
/* Save/Load */
public void saveToNBT (NBTTagCompound tag)
{
}
public void readFromNBT (NBTTagCompound tag)
{
}
}

View File

@ -1,34 +0,0 @@
package mods.tinker.tconstruct.skill;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
/* Base skill
*
*/
public abstract class SkillBase
{
public abstract String getTextureFile();
public abstract String getSkillName();
public int chargeTime() //Ticks
{
return 0;
}
public boolean canPlayerUseSkill()
{
return true;
}
public void activateSkill(EntityPlayer player, World world)
{
}
public int getSkillCost()
{
return 0;
}
}

View File

@ -0,0 +1,135 @@
package mods.tinker.tconstruct.skill;
import mods.tinker.tconstruct.library.tools.AbilityHelper;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
public class WallBuilding extends Skill
{
@Override
public String getTextureFile (int guiscale)
{
if (guiscale == 2)
return "/mods/tinker/textures/skill/Wall32x.png";
if (guiscale == 3)
return "/mods/tinker/textures/skill/Wall48x.png";
return "/mods/tinker/textures/skill/Wall16x.png";
}
@Override
public String getSkillName ()
{
return "Wall Building";
}
@Override
public void activate (Entity entity, World world)
{
if (!world.isRemote)
this.active = !active;
}
@Override
public void rightClickActivate (Entity entity, World world)
{
if (!world.isRemote && active)
{
if (entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) entity;
ItemStack stack = player.getCurrentEquippedItem();
if (stack != null && stack.getItem() instanceof ItemBlock)
{
MovingObjectPosition mop = AbilityHelper.raytraceFromEntity(world, entity, true, 6);
if (mop != null)
{
int xPos = mop.blockX;
int yPos = mop.blockY;
int zPos = mop.blockZ;
/*ForgeDirection sideHit = ForgeDirection.getOrientation(mop.sideHit);
switch (sideHit)
{
case UP:
yPos += 1;
break;
case DOWN:
yPos -= 1;
break;
case NORTH:
zPos -= 1;
break;
case SOUTH:
zPos += 1;
break;
case EAST:
xPos += 1;
break;
case WEST:
xPos -= 1;
break;
default:
break;
}*/
int facing = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
int xMin = 0;
int xMax = 0;
int zMin = 0;
int zMax = 0;
if (facing % 2 == 0)
{
xMin = -1;
xMax = 1;
}
else
{
zMin = -1;
zMax = 1;
}
for (int y = -1; y <= 1; y++)
{
for (int x = xMin; x <= xMax; x++)
{
for (int z = zMin; z <= zMax; z++)
{
stack.getItem().onItemUse(stack, player, world, xPos + x, yPos + y, zPos + z, mop.sideHit, 0, 0, 0);
if (stack.stackSize < 1)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
break;
}
//world.setBlock(xPos + x, yPos + y, zPos + z, Block.whiteStone.blockID);
}
}
}
//entity.worldObj.setBlock(xPos, yPos, zPos, Block.stone.blockID, 0, 3);
world.playAuxSFX(2001, xPos, yPos, zPos, Block.stone.blockID + (0 << 12));
}
}
}
/*for (int x = -2; x <= 2; x++)
{
for (int y = -1; y <= 1; y++)
{
//for (int z = -2; z <= 2; z++)
{
world.setBlock((int) Math.floor(entity.posX) + x, (int) Math.floor(entity.posY) + y, (int) Math.floor(entity.posZ) + 2, Block.whiteStone.blockID);
}
}
}
world.playAuxSFX(2001, (int) entity.posX, (int) entity.posY, (int) entity.posZ, Block.stone.blockID + (0 << 12));*/
}
}
}

View File

@ -148,6 +148,7 @@ public class PHConstruct
heavyChestplate = config.getItem("Equipables", "Heavy Chestplate", 14108).getInt(14108); heavyChestplate = config.getItem("Equipables", "Heavy Chestplate", 14108).getInt(14108);
heavyPants = config.getItem("Equipables", "Heavy Pants", 14109).getInt(14109); heavyPants = config.getItem("Equipables", "Heavy Pants", 14109).getInt(14109);
heavyBoots = config.getItem("Equipables", "Heavy Boots", 14110).getInt(14110); heavyBoots = config.getItem("Equipables", "Heavy Boots", 14110).getInt(14110);
glove = config.getItem("Equipables", "Gloves", 14111).getInt(14111);
boolean ic2 = true; boolean ic2 = true;
boolean xycraft = true; boolean xycraft = true;
@ -334,6 +335,7 @@ public class PHConstruct
public static int heavyChestplate; public static int heavyChestplate;
public static int heavyPants; public static int heavyPants;
public static int heavyBoots; public static int heavyBoots;
public static int glove;
public static int heartCanister; public static int heartCanister;

File diff suppressed because it is too large Load Diff

View File

@ -6,9 +6,10 @@ import java.io.IOException;
import mods.tinker.tconstruct.TConstruct; import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.blocks.logic.ToolStationLogic; import mods.tinker.tconstruct.blocks.logic.ToolStationLogic;
import mods.tinker.tconstruct.inventory.SmelteryContainer;
import mods.tinker.tconstruct.library.blocks.InventoryLogic; import mods.tinker.tconstruct.library.blocks.InventoryLogic;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.INetworkManager; import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.network.packet.Packet250CustomPayload;
@ -31,7 +32,7 @@ public class TPacketHandler implements IPacketHandler
if (packet.channel.equals("TConstruct")) if (packet.channel.equals("TConstruct"))
{ {
if (side == Side.SERVER) if (side == Side.SERVER)
handleServerPacket(packet); handleServerPacket(packet, (EntityPlayerMP) player);
else else
handleClientPacket(packet); handleClientPacket(packet);
} }
@ -60,7 +61,7 @@ public class TPacketHandler implements IPacketHandler
} }
} }
void handleServerPacket (Packet250CustomPayload packet) void handleServerPacket (Packet250CustomPayload packet, EntityPlayerMP player)
{ {
DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data)); DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data));
@ -104,23 +105,23 @@ public class TPacketHandler implements IPacketHandler
else if (packetID == 3) //Armor else if (packetID == 3) //Armor
{ {
String user = inputStream.readUTF(); //String user = inputStream.readUTF();
EntityPlayer player = TConstruct.playerTracker.getEntityPlayer(user); //EntityPlayer player = TConstruct.playerTracker.getEntityPlayer(user);
player.openGui(TConstruct.instance, TConstruct.proxy.armorGuiID, player.worldObj, (int)player.posX, (int)player.posY, (int)player.posZ); player.openGui(TConstruct.instance, TConstruct.proxy.armorGuiID, player.worldObj, (int)player.posX, (int)player.posY, (int)player.posZ);
} }
else if (packetID == 4) //Active Skills
{
Byte id = inputStream.readByte();
TConstruct.playerTracker.activateSkill(player, id);
}
else if (packetID == 10) //Double jump else if (packetID == 10) //Double jump
{ {
String user = inputStream.readUTF(); //String user = inputStream.readUTF();
EntityPlayer player = TConstruct.playerTracker.getEntityPlayer(user); //EntityPlayer player = TConstruct.playerTracker.getEntityPlayer(user);
player.fallDistance = 0; player.fallDistance = 0;
} }
/*else if (packetID == 11)
{
String user = inputStream.readUTF();
float size = inputStream.readFloat();
TConstruct.playerTracker.updateSize(user, size);
}*/
} }
catch (IOException e) catch (IOException e)
{ {
@ -129,4 +130,14 @@ public class TPacketHandler implements IPacketHandler
return; return;
} }
} }
Entity getEntity (World world, int id)
{
for (Object o : world.loadedEntityList)
{
if (((Entity)o).entityId == id)
return (Entity) o;
}
return null;
}
} }

View File

@ -4,6 +4,7 @@ import java.lang.ref.WeakReference;
import mods.tinker.tconstruct.TConstruct; import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.common.TContent; import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.library.SkillRegistry;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -55,7 +56,9 @@ public class ArmorExtended implements IInventory
{ {
inventory[slot] = null; inventory[slot] = null;
} }
recalculateHealth(); EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
recalculateHealth(player, stats);
return split; return split;
} }
else else
@ -79,7 +82,10 @@ public class ArmorExtended implements IInventory
{ {
itemstack.stackSize = getInventoryStackLimit(); itemstack.stackSize = getInventoryStackLimit();
} }
recalculateHealth();
EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
recalculateHealth(player, stats);
} }
@Override @Override
@ -103,10 +109,38 @@ public class ArmorExtended implements IInventory
@Override @Override
public void onInventoryChanged () public void onInventoryChanged ()
{ {
recalculateHealth(); EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
recalculateSkills(player, stats);
recalculateHealth(player, stats);
} }
public void recalculateHealth() public void recalculateSkills(EntityPlayer player, TPlayerStats stats)
{
if (inventory[1] != null && inventory[1].getItem() == TContent.glove)
{
if (stats.skillList.size() < 1)
{
try
{
stats.skillList.add(SkillRegistry.skills.get("Wall Building").copy());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
else
{
if (stats.skillList.size() > 0)
{
stats.skillList.remove(0);
}
}
}
public void recalculateHealth(EntityPlayer player, TPlayerStats stats)
{ {
if (inventory[6] != null && inventory[6].getItem() == TContent.heartCanister) if (inventory[6] != null && inventory[6].getItem() == TContent.heartCanister)
{ {
@ -114,8 +148,6 @@ public class ArmorExtended implements IInventory
int meta = stack.getItemDamage(); int meta = stack.getItemDamage();
if (meta == 2) if (meta == 2)
{ {
EntityPlayer player = parent.get();
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
int bonusHP = stack.stackSize * 2; int bonusHP = stack.stackSize * 2;
stats.bonusHealth = bonusHP; stats.bonusHealth = bonusHP;
player.maxHealth = 20 + bonusHP; player.maxHealth = 20 + bonusHP;
@ -147,7 +179,7 @@ public class ArmorExtended implements IInventory
return false; return false;
} }
//Save/Load /* Save/Load */
public void saveToNBT (EntityPlayer entityplayer) public void saveToNBT (EntityPlayer entityplayer)
{ {
NBTTagCompound tags = entityplayer.getEntityData(); NBTTagCompound tags = entityplayer.getEntityData();
@ -168,7 +200,7 @@ public class ArmorExtended implements IInventory
tags.setTag("TConstruct.Inventory", tagList); tags.setTag("TConstruct.Inventory", tagList);
} }
public void loadFromNBT (EntityPlayer entityplayer) public void readFromNBT (EntityPlayer entityplayer)
{ {
NBTTagCompound tags = entityplayer.getEntityData(); NBTTagCompound tags = entityplayer.getEntityData();
NBTTagList tagList = tags.getTagList("TConstruct.Inventory"); NBTTagList tagList = tags.getTagList("TConstruct.Inventory");

View File

@ -0,0 +1,35 @@
package mods.tinker.tconstruct.util.player;
import mods.tinker.tconstruct.client.TProxyClient;
import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.library.SkillRegistry;
import net.minecraft.entity.player.EntityPlayer;
public class ArmorExtendedClient extends ArmorExtended
{
/*public void recalculateSkills(EntityPlayer player, TPlayerStats stats)
{
System.out.println("Client skills");
if (inventory[1] != null && inventory[1].getItem() == TContent.glove)
{
if (TProxyClient.skillList.size() < 1)
{
try
{
TProxyClient.skillList.add(SkillRegistry.skills.get("Wall Building").copy());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
else
{
if (TProxyClient.skillList.size() > 0)
{
TProxyClient.skillList.remove(0);
}
}
}*/
}

View File

@ -1,11 +1,15 @@
package mods.tinker.tconstruct.util.player; package mods.tinker.tconstruct.util.player;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import mods.tinker.tconstruct.common.TContent; import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.library.SkillRegistry;
import mods.tinker.tconstruct.library.tools.AbilityHelper; import mods.tinker.tconstruct.library.tools.AbilityHelper;
import mods.tinker.tconstruct.skill.Skill;
import mods.tinker.tconstruct.skill.WallBuilding;
import mods.tinker.tconstruct.util.PHConstruct; import mods.tinker.tconstruct.util.PHConstruct;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EnumEntitySize; import net.minecraft.entity.EnumEntitySize;
@ -28,6 +32,7 @@ public class TPlayerHandler implements IPlayerTracker
@Override @Override
public void onPlayerLogin (EntityPlayer entityplayer) public void onPlayerLogin (EntityPlayer entityplayer)
{ {
System.out.println("Player: "+entityplayer);
//Lookup player //Lookup player
TFoodStats food = new TFoodStats(); TFoodStats food = new TFoodStats();
food.readStats(entityplayer.foodStats); food.readStats(entityplayer.foodStats);
@ -41,7 +46,7 @@ public class TPlayerHandler implements IPlayerTracker
stats.player = new WeakReference<EntityPlayer>(entityplayer); stats.player = new WeakReference<EntityPlayer>(entityplayer);
stats.armor = new ArmorExtended(); stats.armor = new ArmorExtended();
stats.armor.init(entityplayer); stats.armor.init(entityplayer);
stats.armor.loadFromNBT(entityplayer); stats.armor.readFromNBT(entityplayer);
stats.level = entityplayer.experienceLevel; stats.level = entityplayer.experienceLevel;
stats.hunger = entityplayer.getFoodStats().getFoodLevel(); stats.hunger = entityplayer.getFoodStats().getFoodLevel();
@ -59,9 +64,38 @@ public class TPlayerHandler implements IPlayerTracker
} }
} }
stats.skillList = new ArrayList<Skill>();
stats.armor.recalculateSkills(entityplayer, stats);
/*try
{
stats.skillList.add(SkillRegistry.skills.get("Wall Building").copy());
}
catch (Exception e)
{
e.printStackTrace();
}/*
//stats.skillList.add(new ActiveSkill(new Jump()));
/*for (Map.Entry<String, SkillBase> entry : SkillRegistry.skills.entrySet())
{
SkillBase skill = entry.getValue();
}*/
playerStats.put(entityplayer.username, stats); playerStats.put(entityplayer.username, stats);
} }
public void activateSkill (EntityPlayer player, int slot)
{
TPlayerStats stats = getPlayerStats(player.username);
if (stats.skillList.size() > slot)
{
Skill skill = stats.skillList.get(slot);
if (skill != null)
{
skill.activate(player, player.worldObj);
}
}
}
@Override @Override
public void onPlayerLogout (EntityPlayer entityplayer) public void onPlayerLogout (EntityPlayer entityplayer)
{ {
@ -85,9 +119,10 @@ public class TPlayerHandler implements IPlayerTracker
if (clean) if (clean)
playerStats.remove(player.username); playerStats.remove(player.username);
} }
else //Revalidate all players else
//Revalidate all players
{ {
} }
} }
} }
@ -98,7 +133,7 @@ public class TPlayerHandler implements IPlayerTracker
//Boom! //Boom!
TPlayerStats stats = getPlayerStats(entityplayer.username); TPlayerStats stats = getPlayerStats(entityplayer.username);
stats.player = new WeakReference<EntityPlayer>(entityplayer); stats.player = new WeakReference<EntityPlayer>(entityplayer);
stats.armor.recalculateHealth(); stats.armor.recalculateHealth(entityplayer, stats);
TFoodStats food = new TFoodStats(); TFoodStats food = new TFoodStats();
entityplayer.foodStats = food; entityplayer.foodStats = food;

View File

@ -1,11 +1,10 @@
package mods.tinker.tconstruct.util.player; package mods.tinker.tconstruct.util.player;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.List;
import mods.tinker.tconstruct.skill.Skill;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.FMLCommonHandler;
public class TPlayerStats public class TPlayerStats
{ {
@ -18,4 +17,5 @@ public class TPlayerStats
public boolean materialManual; public boolean materialManual;
public boolean smelteryManual; public boolean smelteryManual;
public ArmorExtended armor; public ArmorExtended armor;
public List<Skill> skillList;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB