mirror of
https://github.com/GTNewHorizons/TinkersConstruct.git
synced 2026-10-26 14:33:50 +00:00
Merge pull request #1155 from TheTemportalist/master
This should be valid for NEK integration.
This commit is contained in:
commit
ec2311ec87
6 files changed
+696
-704
No files matched your search
@@ -0,0 +1,40 @@
|
||||
package modwarriors.notenoughkeys.api;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
* Center of the API. Main api methods can be found in this class.
|
||||
*
|
||||
* @author TheTemportalist
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class Api {
|
||||
|
||||
/**
|
||||
* Checks if NotEnoughKeys is loaded in the current environment
|
||||
*
|
||||
* @return 'true' if loaded
|
||||
*/
|
||||
public static boolean isLoaded() {
|
||||
return Loader.isModLoaded("notenoughkeys");
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a mod's keys with NEK
|
||||
*
|
||||
* @param modname The NAME of the mod registering the key
|
||||
* @param keyDecriptions A String[] (Array[String]) of the key descriptions. i.e. new String[]{"key.hotbar1"}
|
||||
*/
|
||||
public static void registerMod(String modname, String[] keyDecriptions) {
|
||||
try {
|
||||
Class.forName("modwarriors.notenoughkeys.keys.KeyBindTracker").getMethod(
|
||||
"registerMod", String.class, String[].class
|
||||
).invoke(null, modname, keyDecriptions);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package modwarriors.notenoughkeys.api;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.Cancelable;
|
||||
import cpw.mods.fml.common.eventhandler.Event;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
|
||||
/**
|
||||
* Called when a keybinding is triggered with the passed with valid modifiers
|
||||
*
|
||||
* @author TheTemportalist
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Cancelable
|
||||
public class KeyBindingPressedEvent extends Event {
|
||||
|
||||
/**
|
||||
* The KeyBinding being triggered
|
||||
*/
|
||||
public KeyBinding keyBinding = null;
|
||||
/**
|
||||
* Tells whether a modifier was required AND was down when triggered
|
||||
*/
|
||||
public boolean shiftRequired = false, ctrlRequired = false, altRequired = false;
|
||||
|
||||
/**
|
||||
* Called with the passed keyBinding and modifiers.
|
||||
* Subscribe to this event so activate a keybinding when triggered.
|
||||
*
|
||||
* @param keyBinding The KeyBinding being triggered. Stores the key's description and keycode
|
||||
* @param modifiers The modifiers (SHIFT, CTRL, ALT) that determine when a compatible key is pressed
|
||||
*/
|
||||
public KeyBindingPressedEvent(KeyBinding keyBinding, boolean[] modifiers) {
|
||||
super();
|
||||
this.keyBinding = keyBinding;
|
||||
this.shiftRequired = modifiers[0];
|
||||
this.ctrlRequired = modifiers[1];
|
||||
this.altRequired = modifiers[2];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
@API(owner = "Not Enough Keys", provides = "API_NEK",
|
||||
apiVersion = "1.0.0") package modwarriors.notenoughkeys.api;
|
||||
|
||||
import cpw.mods.fml.common.API;
|
||||
@@ -1,34 +1,48 @@
|
||||
package tconstruct.armor;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import cpw.mods.fml.common.*;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import java.util.*;
|
||||
import mantle.lib.client.MantleClientRegistry;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.gui.inventory.GuiInventory;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.settings.*;
|
||||
import net.minecraft.entity.*;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.IAttributeInstance;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.*;
|
||||
import net.minecraft.item.*;
|
||||
import net.minecraft.potion.*;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.GuiIngameForge;
|
||||
import net.minecraftforge.client.event.*;
|
||||
import net.minecraftforge.client.event.FOVUpdateEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import tconstruct.armor.gui.*;
|
||||
import tconstruct.armor.gui.ArmorExtendedGui;
|
||||
import tconstruct.armor.gui.KnapsackGui;
|
||||
import tconstruct.armor.items.TravelGear;
|
||||
import tconstruct.armor.model.*;
|
||||
import tconstruct.armor.player.*;
|
||||
import tconstruct.client.*;
|
||||
import tconstruct.client.tabs.*;
|
||||
import tconstruct.armor.model.BeltModel;
|
||||
import tconstruct.armor.model.BootBump;
|
||||
import tconstruct.armor.model.HiddenPlayerModel;
|
||||
import tconstruct.armor.model.WingModel;
|
||||
import tconstruct.armor.player.ArmorExtended;
|
||||
import tconstruct.armor.player.KnapsackInventory;
|
||||
import tconstruct.client.ArmorControls;
|
||||
import tconstruct.client.tabs.InventoryTabArmorExtended;
|
||||
import tconstruct.client.tabs.InventoryTabKnapsack;
|
||||
import tconstruct.client.tabs.InventoryTabVanilla;
|
||||
import tconstruct.client.tabs.TabRegistry;
|
||||
import tconstruct.common.TProxyCommon;
|
||||
import tconstruct.library.accessory.IAccessoryModel;
|
||||
import tconstruct.library.client.TConstructClientRegistry;
|
||||
@@ -36,476 +50,477 @@ import tconstruct.library.crafting.ModifyBuilder;
|
||||
import tconstruct.tools.TinkerTools;
|
||||
import tconstruct.world.TinkerWorld;
|
||||
|
||||
public class ArmorProxyClient extends ArmorProxyCommon
|
||||
{
|
||||
public static WingModel wings = new WingModel();
|
||||
public static BootBump bootbump = new BootBump();
|
||||
public static HiddenPlayerModel glove = new HiddenPlayerModel(0.25F, 4);
|
||||
public static HiddenPlayerModel vest = new HiddenPlayerModel(0.25f, 1);
|
||||
public static BeltModel belt = new BeltModel();
|
||||
import java.util.Random;
|
||||
|
||||
public static KnapsackInventory knapsack = new KnapsackInventory();
|
||||
public static ArmorExtended armorExtended = new ArmorExtended();
|
||||
public class ArmorProxyClient extends ArmorProxyCommon {
|
||||
public static WingModel wings = new WingModel();
|
||||
public static BootBump bootbump = new BootBump();
|
||||
public static HiddenPlayerModel glove = new HiddenPlayerModel(0.25F, 4);
|
||||
public static HiddenPlayerModel vest = new HiddenPlayerModel(0.25f, 1);
|
||||
public static BeltModel belt = new BeltModel();
|
||||
|
||||
@Override
|
||||
public void preInit() {
|
||||
controlInstance = new ArmorControls();
|
||||
FMLCommonHandler.instance().bus().register(controlInstance);
|
||||
MinecraftForge.EVENT_BUS.register(new TabRegistry());
|
||||
}
|
||||
public static KnapsackInventory knapsack = new KnapsackInventory();
|
||||
public static ArmorExtended armorExtended = new ArmorExtended();
|
||||
|
||||
@Override
|
||||
public void initialize ()
|
||||
{
|
||||
registerGuiHandler();
|
||||
registerKeys();
|
||||
registerManualIcons();
|
||||
registerManualRecipes();
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
FMLCommonHandler.instance().bus().register(new ArmorAbilitiesClient(mc, controlInstance));
|
||||
}
|
||||
@Override
|
||||
public void preInit() {
|
||||
controlInstance = new ArmorControls();
|
||||
FMLCommonHandler.instance().bus().register(controlInstance);
|
||||
MinecraftForge.EVENT_BUS.register(new TabRegistry());
|
||||
}
|
||||
|
||||
private void registerManualIcons ()
|
||||
{
|
||||
MantleClientRegistry.registerManualIcon("travelgoggles", TinkerArmor.travelGoggles.getDefaultItem());
|
||||
MantleClientRegistry.registerManualIcon("travelvest", TinkerArmor.travelVest.getDefaultItem());
|
||||
MantleClientRegistry.registerManualIcon("travelwings", TinkerArmor.travelWings.getDefaultItem());
|
||||
MantleClientRegistry.registerManualIcon("travelboots", TinkerArmor.travelBoots.getDefaultItem());
|
||||
MantleClientRegistry.registerManualIcon("travelbelt", TinkerArmor.travelBelt.getDefaultItem());
|
||||
MantleClientRegistry.registerManualIcon("travelglove", TinkerArmor.travelGlove.getDefaultItem());
|
||||
}
|
||||
@Override
|
||||
public void initialize() {
|
||||
registerGuiHandler();
|
||||
registerKeys();
|
||||
registerManualIcons();
|
||||
registerManualRecipes();
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
FMLCommonHandler.instance().bus().register(new ArmorAbilitiesClient(mc, controlInstance));
|
||||
}
|
||||
|
||||
private void registerManualRecipes ()
|
||||
{
|
||||
ItemStack feather = new ItemStack(Items.feather);
|
||||
ItemStack redstone = new ItemStack(Items.redstone);
|
||||
ItemStack goggles = TinkerArmor.travelGoggles.getDefaultItem();
|
||||
private void registerManualIcons() {
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelgoggles", TinkerArmor.travelGoggles.getDefaultItem());
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelvest", TinkerArmor.travelVest.getDefaultItem());
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelwings", TinkerArmor.travelWings.getDefaultItem());
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelboots", TinkerArmor.travelBoots.getDefaultItem());
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelbelt", TinkerArmor.travelBelt.getDefaultItem());
|
||||
MantleClientRegistry
|
||||
.registerManualIcon("travelglove", TinkerArmor.travelGlove.getDefaultItem());
|
||||
}
|
||||
|
||||
TConstructClientRegistry.registerManualModifier("nightvision", goggles.copy(), new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198), new ItemStack(Items.golden_carrot), null);
|
||||
private void registerManualRecipes() {
|
||||
ItemStack feather = new ItemStack(Items.feather);
|
||||
ItemStack redstone = new ItemStack(Items.redstone);
|
||||
ItemStack goggles = TinkerArmor.travelGoggles.getDefaultItem();
|
||||
|
||||
ItemStack vest = TinkerArmor.travelVest.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("dodge", vest.copy(), new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null);
|
||||
TConstructClientRegistry.registerManualModifier("stealth", vest.copy(), new ItemStack(Items.fermented_spider_eye), new ItemStack(Items.ender_eye), new ItemStack(Items.potionitem, 1, 8206), new ItemStack(Items.golden_carrot));
|
||||
TConstructClientRegistry.registerManualModifier("nightvision", goggles.copy(),
|
||||
new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198),
|
||||
new ItemStack(Items.golden_carrot), null);
|
||||
|
||||
ItemStack wings = TinkerArmor.travelWings.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("doublejumpwings", wings.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Blocks.piston), null);
|
||||
ItemStack vest = TinkerArmor.travelVest.getDefaultItem();
|
||||
TConstructClientRegistry
|
||||
.registerManualModifier("dodge", vest.copy(), new ItemStack(Items.ender_eye),
|
||||
new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null);
|
||||
TConstructClientRegistry.registerManualModifier("stealth", vest.copy(),
|
||||
new ItemStack(Items.fermented_spider_eye), new ItemStack(Items.ender_eye),
|
||||
new ItemStack(Items.potionitem, 1, 8206), new ItemStack(Items.golden_carrot));
|
||||
|
||||
ItemStack[] recipe = new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Items.ender_pearl), feather, feather, feather, feather, feather, feather };
|
||||
ItemStack modWings = ModifyBuilder.instance.modifyItem(wings, recipe);
|
||||
MantleClientRegistry.registerManualLargeRecipe("featherfall", modWings.copy(), feather, new ItemStack(TinkerWorld.slimeGel, 1, 0), feather, feather, wings.copy(), feather, feather, new ItemStack(Items.ender_pearl), feather);
|
||||
ItemStack wings = TinkerArmor.travelWings.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("doublejumpwings", wings.copy(),
|
||||
new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0),
|
||||
new ItemStack(Blocks.piston), null);
|
||||
|
||||
ItemStack boots = TinkerArmor.travelBoots.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("doublejumpboots", boots.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Blocks.piston), null);
|
||||
TConstructClientRegistry.registerManualModifier("waterwalk", boots.copy(), new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily));
|
||||
TConstructClientRegistry.registerManualModifier("leadboots", boots.copy(), new ItemStack(Blocks.iron_block));
|
||||
TConstructClientRegistry.registerManualModifier("slimysoles", boots.copy(), new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0));
|
||||
ItemStack[] recipe = new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 0),
|
||||
new ItemStack(Items.ender_pearl), feather, feather, feather, feather, feather,
|
||||
feather
|
||||
};
|
||||
ItemStack modWings = ModifyBuilder.instance.modifyItem(wings, recipe);
|
||||
MantleClientRegistry.registerManualLargeRecipe("featherfall", modWings.copy(), feather,
|
||||
new ItemStack(TinkerWorld.slimeGel, 1, 0), feather, feather, wings.copy(), feather,
|
||||
feather, new ItemStack(Items.ender_pearl), feather);
|
||||
|
||||
ItemStack gloves = TinkerArmor.travelGlove.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("glovehaste", gloves.copy(), redstone, new ItemStack(Blocks.redstone_block));
|
||||
//MantleClientRegistry.registerManualSmallRecipe("gloveclimb", gloves.copy(), new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25), null);
|
||||
TConstructClientRegistry.registerManualModifier("gloveknuckles", gloves.copy(), new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE));
|
||||
ItemStack boots = TinkerArmor.travelBoots.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("doublejumpboots", boots.copy(),
|
||||
new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1),
|
||||
new ItemStack(Blocks.piston), null);
|
||||
TConstructClientRegistry
|
||||
.registerManualModifier("waterwalk", boots.copy(), new ItemStack(Blocks.waterlily),
|
||||
new ItemStack(Blocks.waterlily));
|
||||
TConstructClientRegistry.registerManualModifier("leadboots", boots.copy(),
|
||||
new ItemStack(Blocks.iron_block));
|
||||
TConstructClientRegistry.registerManualModifier("slimysoles", boots.copy(),
|
||||
new ItemStack(TinkerWorld.slimePad, 1, 0),
|
||||
new ItemStack(TinkerWorld.slimePad, 1, 0));
|
||||
|
||||
// moss
|
||||
ItemStack moss = new ItemStack(TinkerTools.materials, 1, 6);
|
||||
TConstructClientRegistry.registerManualModifier("mossgoggles", goggles.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mossvest", vest.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mosswings", wings.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mossboots", boots.copy(), moss.copy());
|
||||
}
|
||||
ItemStack gloves = TinkerArmor.travelGlove.getDefaultItem();
|
||||
TConstructClientRegistry.registerManualModifier("glovehaste", gloves.copy(), redstone,
|
||||
new ItemStack(Blocks.redstone_block));
|
||||
//MantleClientRegistry.registerManualSmallRecipe("gloveclimb", gloves.copy(), new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25), null);
|
||||
TConstructClientRegistry
|
||||
.registerManualModifier("gloveknuckles", gloves.copy(), new ItemStack(Items.quartz),
|
||||
new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE));
|
||||
|
||||
@Override
|
||||
protected void registerGuiHandler ()
|
||||
{
|
||||
super.registerGuiHandler();
|
||||
TProxyCommon.registerClientGuiHandler(inventoryGui, this);
|
||||
TProxyCommon.registerClientGuiHandler(armorGuiID, this);
|
||||
TProxyCommon.registerClientGuiHandler(knapsackGuiID, this);
|
||||
}
|
||||
// moss
|
||||
ItemStack moss = new ItemStack(TinkerTools.materials, 1, 6);
|
||||
TConstructClientRegistry.registerManualModifier("mossgoggles", goggles.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mossvest", vest.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mosswings", wings.copy(), moss.copy());
|
||||
TConstructClientRegistry.registerManualModifier("mossboots", boots.copy(), moss.copy());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement (int ID, EntityPlayer player, World world, int x, int y, int z)
|
||||
{
|
||||
if (ID == ArmorProxyCommon.inventoryGui)
|
||||
{
|
||||
GuiInventory inventory = new GuiInventory(player);
|
||||
return inventory;
|
||||
}
|
||||
if (ID == ArmorProxyCommon.armorGuiID)
|
||||
{
|
||||
ArmorProxyClient.armorExtended.init(Minecraft.getMinecraft().thePlayer);
|
||||
return new ArmorExtendedGui(player.inventory, ArmorProxyClient.armorExtended);
|
||||
}
|
||||
if (ID == ArmorProxyCommon.knapsackGuiID)
|
||||
{
|
||||
ArmorProxyClient.knapsack.init(Minecraft.getMinecraft().thePlayer);
|
||||
return new KnapsackGui(player.inventory, ArmorProxyClient.knapsack);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
protected void registerGuiHandler() {
|
||||
super.registerGuiHandler();
|
||||
TProxyCommon.registerClientGuiHandler(inventoryGui, this);
|
||||
TProxyCommon.registerClientGuiHandler(armorGuiID, this);
|
||||
TProxyCommon.registerClientGuiHandler(knapsackGuiID, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTickHandler ()
|
||||
{
|
||||
FMLCommonHandler.instance().bus().register(new ArmorTickHandler());
|
||||
}
|
||||
@Override
|
||||
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y,
|
||||
int z) {
|
||||
if (ID == ArmorProxyCommon.inventoryGui) {
|
||||
GuiInventory inventory = new GuiInventory(player);
|
||||
return inventory;
|
||||
}
|
||||
if (ID == ArmorProxyCommon.armorGuiID) {
|
||||
ArmorProxyClient.armorExtended.init(Minecraft.getMinecraft().thePlayer);
|
||||
return new ArmorExtendedGui(player.inventory, ArmorProxyClient.armorExtended);
|
||||
}
|
||||
if (ID == ArmorProxyCommon.knapsackGuiID) {
|
||||
ArmorProxyClient.knapsack.init(Minecraft.getMinecraft().thePlayer);
|
||||
return new KnapsackGui(player.inventory, ArmorProxyClient.knapsack);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/* Keybindings */
|
||||
public static ArmorControls controlInstance;
|
||||
@Override
|
||||
public void registerTickHandler() {
|
||||
FMLCommonHandler.instance().bus().register(new ArmorTickHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerKeys ()
|
||||
{
|
||||
uploadKeyBindingsToGame(Minecraft.getMinecraft().gameSettings, controlInstance);
|
||||
/* Keybindings */
|
||||
public static ArmorControls controlInstance;
|
||||
|
||||
TabRegistry.registerTab(new InventoryTabVanilla());
|
||||
TabRegistry.registerTab(new InventoryTabArmorExtended());
|
||||
TabRegistry.registerTab(new InventoryTabKnapsack());
|
||||
}
|
||||
@Override
|
||||
public void registerKeys() {
|
||||
controlInstance.registerKeys();
|
||||
|
||||
public void uploadKeyBindingsToGame (GameSettings settings, TKeyHandler keyhandler)
|
||||
{
|
||||
ArrayList<KeyBinding> harvestedBindings = Lists.newArrayList();
|
||||
for (KeyBinding kb : keyhandler.keyBindings)
|
||||
{
|
||||
harvestedBindings.add(kb);
|
||||
}
|
||||
TabRegistry.registerTab(new InventoryTabVanilla());
|
||||
TabRegistry.registerTab(new InventoryTabArmorExtended());
|
||||
TabRegistry.registerTab(new InventoryTabKnapsack());
|
||||
}
|
||||
|
||||
KeyBinding[] modKeyBindings = harvestedBindings.toArray(new KeyBinding[harvestedBindings.size()]);
|
||||
KeyBinding[] allKeys = new KeyBinding[settings.keyBindings.length + modKeyBindings.length];
|
||||
System.arraycopy(settings.keyBindings, 0, allKeys, 0, settings.keyBindings.length);
|
||||
System.arraycopy(modKeyBindings, 0, allKeys, settings.keyBindings.length, modKeyBindings.length);
|
||||
settings.keyBindings = allKeys;
|
||||
settings.loadOptions();
|
||||
}
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
private static final ResourceLocation hearts = new ResourceLocation("tinker",
|
||||
"textures/gui/newhearts.png");
|
||||
private static final ResourceLocation icons = new ResourceLocation("textures/gui/icons.png");
|
||||
// public static int left_height = 39;
|
||||
// public static int right_height = 39;
|
||||
Random rand = new Random();
|
||||
int updateCounter = 0;
|
||||
|
||||
private static final ResourceLocation hearts = new ResourceLocation("tinker", "textures/gui/newhearts.png");
|
||||
private static final ResourceLocation icons = new ResourceLocation("textures/gui/icons.png");
|
||||
// public static int left_height = 39;
|
||||
// public static int right_height = 39;
|
||||
Random rand = new Random();
|
||||
int updateCounter = 0;
|
||||
GameSettings gs = Minecraft.getMinecraft().gameSettings;
|
||||
|
||||
GameSettings gs = Minecraft.getMinecraft().gameSettings;
|
||||
@SubscribeEvent
|
||||
public void goggleZoom(FOVUpdateEvent event) {
|
||||
if (ArmorControls.zoom) {
|
||||
ItemStack helmet = event.entity.getCurrentArmor(3);
|
||||
if (helmet != null && helmet.getItem() instanceof TravelGear) {
|
||||
event.newfov = 0.3f;
|
||||
}
|
||||
}
|
||||
//ItemStack feet = player.getCurrentArmor(0);
|
||||
//event.newfov = 1.0f;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void goggleZoom (FOVUpdateEvent event)
|
||||
{
|
||||
if (ArmorControls.zoom)
|
||||
{
|
||||
ItemStack helmet = event.entity.getCurrentArmor(3);
|
||||
if (helmet != null && helmet.getItem() instanceof TravelGear)
|
||||
{
|
||||
event.newfov = 0.3f;
|
||||
}
|
||||
}
|
||||
//ItemStack feet = player.getCurrentArmor(0);
|
||||
//event.newfov = 1.0f;
|
||||
}
|
||||
/* HUD */
|
||||
@SubscribeEvent
|
||||
public void renderHealthbar(RenderGameOverlayEvent.Pre event) {
|
||||
if (Loader.isModLoaded(
|
||||
"rpghud")) // uses different display, displays health correctly by itself.
|
||||
return;
|
||||
|
||||
/* HUD */
|
||||
@SubscribeEvent
|
||||
public void renderHealthbar (RenderGameOverlayEvent.Pre event)
|
||||
{
|
||||
if(Loader.isModLoaded("rpghud")) // uses different display, displays health correctly by itself.
|
||||
return;
|
||||
if (!Loader.isModLoaded("tukmc_Vz") || Loader
|
||||
.isModLoaded("borderlands"))// Loader check to avoid conflicting
|
||||
// with a GUI mod (thanks Vazkii!)
|
||||
{
|
||||
if (event.type == ElementType.HEALTH) {
|
||||
updateCounter++;
|
||||
|
||||
if (!Loader.isModLoaded("tukmc_Vz") || Loader.isModLoaded("borderlands"))// Loader check to avoid conflicting
|
||||
// with a GUI mod (thanks Vazkii!)
|
||||
{
|
||||
if (event.type == ElementType.HEALTH)
|
||||
{
|
||||
updateCounter++;
|
||||
ScaledResolution scaledresolution = new ScaledResolution(this.mc,
|
||||
this.mc.displayWidth, this.mc.displayHeight);
|
||||
int scaledWidth = scaledresolution.getScaledWidth();
|
||||
int scaledHeight = scaledresolution.getScaledHeight();
|
||||
int xBasePos = scaledWidth / 2 - 91;
|
||||
int yBasePos = scaledHeight - 39;
|
||||
|
||||
ScaledResolution scaledresolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
|
||||
int scaledWidth = scaledresolution.getScaledWidth();
|
||||
int scaledHeight = scaledresolution.getScaledHeight();
|
||||
int xBasePos = scaledWidth / 2 - 91;
|
||||
int yBasePos = scaledHeight - 39;
|
||||
boolean highlight = mc.thePlayer.hurtResistantTime / 3 % 2 == 1;
|
||||
|
||||
boolean highlight = mc.thePlayer.hurtResistantTime / 3 % 2 == 1;
|
||||
if (mc.thePlayer.hurtResistantTime < 10) {
|
||||
highlight = false;
|
||||
}
|
||||
|
||||
if (mc.thePlayer.hurtResistantTime < 10)
|
||||
{
|
||||
highlight = false;
|
||||
}
|
||||
IAttributeInstance attrMaxHealth = this.mc.thePlayer
|
||||
.getEntityAttribute(SharedMonsterAttributes.maxHealth);
|
||||
int health = MathHelper.ceiling_float_int(mc.thePlayer.getHealth());
|
||||
int healthLast = MathHelper.ceiling_float_int(mc.thePlayer.prevHealth);
|
||||
float healthMax = (float) attrMaxHealth.getAttributeValue();
|
||||
if (healthMax > 20)
|
||||
healthMax = 20;
|
||||
float absorb = this.mc.thePlayer.getAbsorptionAmount();
|
||||
|
||||
IAttributeInstance attrMaxHealth = this.mc.thePlayer.getEntityAttribute(SharedMonsterAttributes.maxHealth);
|
||||
int health = MathHelper.ceiling_float_int(mc.thePlayer.getHealth());
|
||||
int healthLast = MathHelper.ceiling_float_int(mc.thePlayer.prevHealth);
|
||||
float healthMax = (float) attrMaxHealth.getAttributeValue();
|
||||
if (healthMax > 20)
|
||||
healthMax = 20;
|
||||
float absorb = this.mc.thePlayer.getAbsorptionAmount();
|
||||
int healthRows = MathHelper.ceiling_float_int((healthMax + absorb) / 2.0F / 10.0F);
|
||||
int rowHeight = Math.max(10 - (healthRows - 2), 3);
|
||||
|
||||
int healthRows = MathHelper.ceiling_float_int((healthMax + absorb) / 2.0F / 10.0F);
|
||||
int rowHeight = Math.max(10 - (healthRows - 2), 3);
|
||||
this.rand.setSeed((long) (updateCounter * 312871));
|
||||
|
||||
this.rand.setSeed((long) (updateCounter * 312871));
|
||||
int left = scaledWidth / 2 - 91;
|
||||
int top = scaledHeight - GuiIngameForge.left_height;
|
||||
|
||||
int left = scaledWidth / 2 - 91;
|
||||
int top = scaledHeight - GuiIngameForge.left_height;
|
||||
if (!GuiIngameForge.renderExperiance) {
|
||||
top += 7;
|
||||
yBasePos += 7;
|
||||
}
|
||||
|
||||
if (!GuiIngameForge.renderExperiance)
|
||||
{
|
||||
top += 7;
|
||||
yBasePos += 7;
|
||||
}
|
||||
int regen = -1;
|
||||
if (mc.thePlayer.isPotionActive(Potion.regeneration)) {
|
||||
regen = updateCounter % 25;
|
||||
}
|
||||
|
||||
int regen = -1;
|
||||
if (mc.thePlayer.isPotionActive(Potion.regeneration))
|
||||
{
|
||||
regen = updateCounter % 25;
|
||||
}
|
||||
final int TOP = 9 * (mc.theWorld.getWorldInfo().isHardcoreModeEnabled() ? 5 : 0);
|
||||
final int BACKGROUND = (highlight ? 25 : 16);
|
||||
int MARGIN = 16;
|
||||
if (mc.thePlayer.isPotionActive(Potion.poison))
|
||||
MARGIN += 36;
|
||||
else if (mc.thePlayer.isPotionActive(Potion.wither))
|
||||
MARGIN += 72;
|
||||
float absorbRemaining = absorb;
|
||||
|
||||
final int TOP = 9 * (mc.theWorld.getWorldInfo().isHardcoreModeEnabled() ? 5 : 0);
|
||||
final int BACKGROUND = (highlight ? 25 : 16);
|
||||
int MARGIN = 16;
|
||||
if (mc.thePlayer.isPotionActive(Potion.poison))
|
||||
MARGIN += 36;
|
||||
else if (mc.thePlayer.isPotionActive(Potion.wither))
|
||||
MARGIN += 72;
|
||||
float absorbRemaining = absorb;
|
||||
for (int i = MathHelper.ceiling_float_int((healthMax + absorb) / 2.0F) - 1;
|
||||
i >= 0; --i) {
|
||||
int b0 = (highlight ? 1 : 0);
|
||||
int row = MathHelper.ceiling_float_int((float) (i + 1) / 10.0F) - 1;
|
||||
int x = left + i % 10 * 8;
|
||||
int y = top - row * rowHeight;
|
||||
|
||||
for (int i = MathHelper.ceiling_float_int((healthMax + absorb) / 2.0F) - 1; i >= 0; --i)
|
||||
{
|
||||
int b0 = (highlight ? 1 : 0);
|
||||
int row = MathHelper.ceiling_float_int((float) (i + 1) / 10.0F) - 1;
|
||||
int x = left + i % 10 * 8;
|
||||
int y = top - row * rowHeight;
|
||||
if (health <= 4)
|
||||
y += rand.nextInt(2);
|
||||
if (i == regen)
|
||||
y -= 2;
|
||||
|
||||
if (health <= 4)
|
||||
y += rand.nextInt(2);
|
||||
if (i == regen)
|
||||
y -= 2;
|
||||
drawTexturedModalRect(x, y, BACKGROUND, TOP, 9, 9);
|
||||
|
||||
drawTexturedModalRect(x, y, BACKGROUND, TOP, 9, 9);
|
||||
if (highlight) {
|
||||
if (i * 2 + 1 < healthLast)
|
||||
drawTexturedModalRect(x, y, MARGIN + 54, TOP, 9, 9); // 6
|
||||
else if (i * 2 + 1 == healthLast)
|
||||
drawTexturedModalRect(x, y, MARGIN + 63, TOP, 9, 9); // 7
|
||||
}
|
||||
|
||||
if (highlight)
|
||||
{
|
||||
if (i * 2 + 1 < healthLast)
|
||||
drawTexturedModalRect(x, y, MARGIN + 54, TOP, 9, 9); // 6
|
||||
else if (i * 2 + 1 == healthLast)
|
||||
drawTexturedModalRect(x, y, MARGIN + 63, TOP, 9, 9); // 7
|
||||
}
|
||||
if (absorbRemaining > 0.0F) {
|
||||
if (absorbRemaining == absorb && absorb % 2.0F == 1.0F)
|
||||
drawTexturedModalRect(x, y, MARGIN + 153, TOP, 9, 9); // 17
|
||||
else
|
||||
drawTexturedModalRect(x, y, MARGIN + 144, TOP, 9, 9); // 16
|
||||
absorbRemaining -= 2.0F;
|
||||
}
|
||||
else {
|
||||
if (i * 2 + 1 < health)
|
||||
drawTexturedModalRect(x, y, MARGIN + 36, TOP, 9, 9); // 4
|
||||
else if (i * 2 + 1 == health)
|
||||
drawTexturedModalRect(x, y, MARGIN + 45, TOP, 9, 9); // 5
|
||||
}
|
||||
}
|
||||
|
||||
if (absorbRemaining > 0.0F)
|
||||
{
|
||||
if (absorbRemaining == absorb && absorb % 2.0F == 1.0F)
|
||||
drawTexturedModalRect(x, y, MARGIN + 153, TOP, 9, 9); // 17
|
||||
else
|
||||
drawTexturedModalRect(x, y, MARGIN + 144, TOP, 9, 9); // 16
|
||||
absorbRemaining -= 2.0F;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i * 2 + 1 < health)
|
||||
drawTexturedModalRect(x, y, MARGIN + 36, TOP, 9, 9); // 4
|
||||
else if (i * 2 + 1 == health)
|
||||
drawTexturedModalRect(x, y, MARGIN + 45, TOP, 9, 9); // 5
|
||||
}
|
||||
}
|
||||
|
||||
int potionOffset = 0;
|
||||
PotionEffect potion = mc.thePlayer.getActivePotionEffect(Potion.wither);
|
||||
if (potion != null)
|
||||
potionOffset = 18;
|
||||
potion = mc.thePlayer.getActivePotionEffect(Potion.poison);
|
||||
if (potion != null)
|
||||
potionOffset = 9;
|
||||
int potionOffset = 0;
|
||||
PotionEffect potion = mc.thePlayer.getActivePotionEffect(Potion.wither);
|
||||
if (potion != null)
|
||||
potionOffset = 18;
|
||||
potion = mc.thePlayer.getActivePotionEffect(Potion.poison);
|
||||
if (potion != null)
|
||||
potionOffset = 9;
|
||||
if (mc.theWorld.getWorldInfo().isHardcoreModeEnabled())
|
||||
potionOffset += 27;
|
||||
|
||||
// Extra hearts
|
||||
this.mc.getTextureManager().bindTexture(hearts);
|
||||
// Extra hearts
|
||||
this.mc.getTextureManager().bindTexture(hearts);
|
||||
|
||||
int hp = MathHelper.ceiling_float_int(this.mc.thePlayer.getHealth());
|
||||
for (int iter = 0; iter < hp / 20; iter++)
|
||||
{
|
||||
int renderHearts = (hp - 20 * (iter + 1)) / 2;
|
||||
if (renderHearts > 10)
|
||||
renderHearts = 10;
|
||||
for (int i = 0; i < renderHearts; i++)
|
||||
{
|
||||
int y = 0;
|
||||
if (i == regen)
|
||||
y -= 2;
|
||||
this.drawTexturedModalRect(xBasePos + 8 * i, yBasePos + y, 0 + 18 * iter, potionOffset, 9, 9);
|
||||
}
|
||||
if (hp % 2 == 1 && renderHearts < 10)
|
||||
{
|
||||
this.drawTexturedModalRect(xBasePos + 8 * renderHearts, yBasePos, 9 + 18 * iter, potionOffset, 9, 9);
|
||||
}
|
||||
}
|
||||
int hp = MathHelper.ceiling_float_int(this.mc.thePlayer.getHealth());
|
||||
for (int iter = 0; iter < hp / 20; iter++) {
|
||||
int renderHearts = (hp - 20 * (iter + 1)) / 2;
|
||||
if (renderHearts > 10)
|
||||
renderHearts = 10;
|
||||
for (int i = 0; i < renderHearts; i++) {
|
||||
int y = 0;
|
||||
if (i == regen)
|
||||
y -= 2;
|
||||
this.drawTexturedModalRect(xBasePos + 8 * i, yBasePos + y, 0 + 18 * iter,
|
||||
potionOffset, 9, 9);
|
||||
}
|
||||
if (hp % 2 == 1 && renderHearts < 10) {
|
||||
this.drawTexturedModalRect(xBasePos + 8 * renderHearts, yBasePos,
|
||||
9 + 18 * iter, potionOffset, 9, 9);
|
||||
}
|
||||
}
|
||||
|
||||
this.mc.getTextureManager().bindTexture(icons);
|
||||
GuiIngameForge.left_height += 10;
|
||||
if (absorb > 0)
|
||||
GuiIngameForge.left_height += 10;
|
||||
this.mc.getTextureManager().bindTexture(icons);
|
||||
GuiIngameForge.left_height += 10;
|
||||
if (absorb > 0)
|
||||
GuiIngameForge.left_height += 10;
|
||||
|
||||
event.setCanceled(true);
|
||||
if (event.type == ElementType.CROSSHAIRS && gs.thirdPersonView != 0)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
event.setCanceled(true);
|
||||
if (event.type == ElementType.CROSSHAIRS && gs.thirdPersonView != 0) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void drawTexturedModalRect (int par1, int par2, int par3, int par4, int par5, int par6)
|
||||
{
|
||||
float f = 0.00390625F;
|
||||
float f1 = 0.00390625F;
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.addVertexWithUV((double) (par1 + 0), (double) (par2 + par6), (double) this.zLevel, (double) ((float) (par3 + 0) * f), (double) ((float) (par4 + par6) * f1));
|
||||
tessellator.addVertexWithUV((double) (par1 + par5), (double) (par2 + par6), (double) this.zLevel, (double) ((float) (par3 + par5) * f), (double) ((float) (par4 + par6) * f1));
|
||||
tessellator.addVertexWithUV((double) (par1 + par5), (double) (par2 + 0), (double) this.zLevel, (double) ((float) (par3 + par5) * f), (double) ((float) (par4 + 0) * f1));
|
||||
tessellator.addVertexWithUV((double) (par1 + 0), (double) (par2 + 0), (double) this.zLevel, (double) ((float) (par3 + 0) * f), (double) ((float) (par4 + 0) * f1));
|
||||
tessellator.draw();
|
||||
}
|
||||
public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6) {
|
||||
float f = 0.00390625F;
|
||||
float f1 = 0.00390625F;
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator
|
||||
.addVertexWithUV((double) (par1 + 0), (double) (par2 + par6), (double) this.zLevel,
|
||||
(double) ((float) (par3 + 0) * f), (double) ((float) (par4 + par6) * f1));
|
||||
tessellator.addVertexWithUV((double) (par1 + par5), (double) (par2 + par6),
|
||||
(double) this.zLevel, (double) ((float) (par3 + par5) * f),
|
||||
(double) ((float) (par4 + par6) * f1));
|
||||
tessellator
|
||||
.addVertexWithUV((double) (par1 + par5), (double) (par2 + 0), (double) this.zLevel,
|
||||
(double) ((float) (par3 + par5) * f), (double) ((float) (par4 + 0) * f1));
|
||||
tessellator.addVertexWithUV((double) (par1 + 0), (double) (par2 + 0), (double) this.zLevel,
|
||||
(double) ((float) (par3 + 0) * f), (double) ((float) (par4 + 0) * f1));
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
double zLevel = 0;
|
||||
double zLevel = 0;
|
||||
|
||||
/* Armor rendering */
|
||||
@SubscribeEvent
|
||||
public void adjustArmor (RenderPlayerEvent.SetArmorModel event)
|
||||
{
|
||||
switch (event.slot)
|
||||
{
|
||||
case 1:
|
||||
ArmorProxyClient.vest.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.vest.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.vest.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.vest.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
case 2:
|
||||
ArmorProxyClient.wings.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.wings.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.wings.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.wings.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
/* Armor rendering */
|
||||
@SubscribeEvent
|
||||
public void adjustArmor(RenderPlayerEvent.SetArmorModel event) {
|
||||
switch (event.slot) {
|
||||
case 1:
|
||||
ArmorProxyClient.vest.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.vest.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.vest.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.vest.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
case 2:
|
||||
ArmorProxyClient.wings.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.wings.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.wings.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.wings.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
|
||||
ArmorProxyClient.glove.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.glove.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.glove.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.glove.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
ArmorProxyClient.glove.heldItemLeft = event.renderer.modelBipedMain.heldItemLeft;
|
||||
ArmorProxyClient.glove.heldItemRight = event.renderer.modelBipedMain.heldItemRight;
|
||||
ArmorProxyClient.glove.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.glove.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.glove.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.glove.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
ArmorProxyClient.glove.heldItemLeft = event.renderer.modelBipedMain.heldItemLeft;
|
||||
ArmorProxyClient.glove.heldItemRight = event.renderer.modelBipedMain.heldItemRight;
|
||||
|
||||
ArmorProxyClient.belt.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.belt.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.belt.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.belt.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
ArmorProxyClient.belt.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.belt.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.belt.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.belt.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
|
||||
renderArmorExtras(event);
|
||||
renderArmorExtras(event);
|
||||
|
||||
break;
|
||||
case 3:
|
||||
ArmorProxyClient.bootbump.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.bootbump.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.bootbump.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.bootbump.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
ArmorProxyClient.bootbump.onGround = event.renderer.modelBipedMain.onGround;
|
||||
ArmorProxyClient.bootbump.isRiding = event.renderer.modelBipedMain.isRiding;
|
||||
ArmorProxyClient.bootbump.isChild = event.renderer.modelBipedMain.isChild;
|
||||
ArmorProxyClient.bootbump.isSneak = event.renderer.modelBipedMain.isSneak;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void renderArmorExtras (RenderPlayerEvent.SetArmorModel event)
|
||||
{
|
||||
float partialTick = event.partialRenderTick;
|
||||
void renderArmorExtras(RenderPlayerEvent.SetArmorModel event) {
|
||||
float partialTick = event.partialRenderTick;
|
||||
|
||||
EntityPlayer player = event.entityPlayer;
|
||||
EntityPlayer player = event.entityPlayer;
|
||||
|
||||
// todo: synchronize extra armor with other clients. Until then, only draw locally
|
||||
if(player != Minecraft.getMinecraft().thePlayer)
|
||||
return;
|
||||
// todo: synchronize extra armor with other clients. Until then, only draw locally
|
||||
if (player != Minecraft.getMinecraft().thePlayer)
|
||||
return;
|
||||
|
||||
float posX = (float) (player.lastTickPosX
|
||||
+ (player.posX - player.lastTickPosX) * partialTick);
|
||||
float posY = (float) (player.lastTickPosY
|
||||
+ (player.posY - player.lastTickPosY) * partialTick);
|
||||
float posZ = (float) (player.lastTickPosZ
|
||||
+ (player.posZ - player.lastTickPosZ) * partialTick);
|
||||
|
||||
float posX = (float) (player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTick);
|
||||
float posY = (float) (player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTick);
|
||||
float posZ = (float) (player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTick);
|
||||
float yawOffset = this
|
||||
.interpolateRotation(player.prevRenderYawOffset, player.renderYawOffset,
|
||||
partialTick);
|
||||
float yawRotation = this
|
||||
.interpolateRotation(player.prevRotationYawHead, player.rotationYawHead,
|
||||
partialTick);
|
||||
float pitch;
|
||||
final float zeropointsixtwofive = 0.0625F;
|
||||
|
||||
float yawOffset = this.interpolateRotation(player.prevRenderYawOffset, player.renderYawOffset, partialTick);
|
||||
float yawRotation = this.interpolateRotation(player.prevRotationYawHead, player.rotationYawHead, partialTick);
|
||||
float pitch;
|
||||
final float zeropointsixtwofive = 0.0625F;
|
||||
if (player.isRiding() && player.ridingEntity instanceof EntityLivingBase) {
|
||||
EntityLivingBase entitylivingbase1 = (EntityLivingBase) player.ridingEntity;
|
||||
yawOffset = this.interpolateRotation(entitylivingbase1.prevRenderYawOffset,
|
||||
entitylivingbase1.renderYawOffset, partialTick);
|
||||
pitch = MathHelper.wrapAngleTo180_float(yawRotation - yawOffset);
|
||||
|
||||
if (player.isRiding() && player.ridingEntity instanceof EntityLivingBase)
|
||||
{
|
||||
EntityLivingBase entitylivingbase1 = (EntityLivingBase) player.ridingEntity;
|
||||
yawOffset = this.interpolateRotation(entitylivingbase1.prevRenderYawOffset, entitylivingbase1.renderYawOffset, partialTick);
|
||||
pitch = MathHelper.wrapAngleTo180_float(yawRotation - yawOffset);
|
||||
if (pitch < -85.0F) {
|
||||
pitch = -85.0F;
|
||||
}
|
||||
|
||||
if (pitch < -85.0F)
|
||||
{
|
||||
pitch = -85.0F;
|
||||
}
|
||||
if (pitch >= 85.0F) {
|
||||
pitch = 85.0F;
|
||||
}
|
||||
|
||||
if (pitch >= 85.0F)
|
||||
{
|
||||
pitch = 85.0F;
|
||||
}
|
||||
yawOffset = yawRotation - pitch;
|
||||
|
||||
yawOffset = yawRotation - pitch;
|
||||
if (pitch * pitch > 2500.0F) {
|
||||
yawOffset += pitch * 0.2F;
|
||||
}
|
||||
}
|
||||
|
||||
if (pitch * pitch > 2500.0F)
|
||||
{
|
||||
yawOffset += pitch * 0.2F;
|
||||
}
|
||||
}
|
||||
pitch = this.handleRotationFloat(player, partialTick);
|
||||
float bodyRotation = player.prevRotationPitch
|
||||
+ (player.rotationPitch - player.prevRotationPitch) * partialTick;
|
||||
float limbSwing = player.prevLimbSwingAmount
|
||||
+ (player.limbSwingAmount - player.prevLimbSwingAmount) * partialTick;
|
||||
float limbSwingMod = player.limbSwing - player.limbSwingAmount * (1.0F - partialTick);
|
||||
//TPlayerStats stats = TPlayerStats.get(player);
|
||||
ArmorExtended armor = ArmorProxyClient.armorExtended; //TODO: Do this for every player, not just the client
|
||||
if (armor.inventory[1] != null) {
|
||||
Item item = armor.inventory[1].getItem();
|
||||
ModelBiped model = item.getArmorModel(player, armor.inventory[1], 4);
|
||||
|
||||
pitch = this.handleRotationFloat(player, partialTick);
|
||||
float bodyRotation = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * partialTick;
|
||||
float limbSwing = player.prevLimbSwingAmount + (player.limbSwingAmount - player.prevLimbSwingAmount) * partialTick;
|
||||
float limbSwingMod = player.limbSwing - player.limbSwingAmount * (1.0F - partialTick);
|
||||
//TPlayerStats stats = TPlayerStats.get(player);
|
||||
ArmorExtended armor = ArmorProxyClient.armorExtended; //TODO: Do this for every player, not just the client
|
||||
if (armor.inventory[1] != null)
|
||||
{
|
||||
Item item = armor.inventory[1].getItem();
|
||||
ModelBiped model = item.getArmorModel(player, armor.inventory[1], 4);
|
||||
if (item instanceof IAccessoryModel) {
|
||||
this.mc.getTextureManager().bindTexture(
|
||||
((IAccessoryModel) item).getWearbleTexture(player, armor.inventory[1], 1));
|
||||
model.setLivingAnimations(player, limbSwingMod, limbSwing, partialTick);
|
||||
model.render(player, limbSwingMod, limbSwing, pitch, yawRotation - yawOffset,
|
||||
bodyRotation, zeropointsixtwofive);
|
||||
}
|
||||
}
|
||||
|
||||
if (item instanceof IAccessoryModel)
|
||||
{
|
||||
this.mc.getTextureManager().bindTexture(((IAccessoryModel) item).getWearbleTexture(player, armor.inventory[1], 1));
|
||||
model.setLivingAnimations(player, limbSwingMod, limbSwing, partialTick);
|
||||
model.render(player, limbSwingMod, limbSwing, pitch, yawRotation - yawOffset, bodyRotation, zeropointsixtwofive);
|
||||
}
|
||||
}
|
||||
if (armor.inventory[3] != null) {
|
||||
Item item = armor.inventory[3].getItem();
|
||||
ModelBiped model = item.getArmorModel(player, armor.inventory[3], 5);
|
||||
|
||||
if (armor.inventory[3] != null)
|
||||
{
|
||||
Item item = armor.inventory[3].getItem();
|
||||
ModelBiped model = item.getArmorModel(player, armor.inventory[3], 5);
|
||||
if (item instanceof IAccessoryModel) {
|
||||
this.mc.getTextureManager().bindTexture(
|
||||
((IAccessoryModel) item).getWearbleTexture(player, armor.inventory[1], 1));
|
||||
model.setLivingAnimations(player, limbSwingMod, limbSwing, partialTick);
|
||||
model.render(player, limbSwingMod, limbSwing, pitch, yawRotation - yawOffset,
|
||||
bodyRotation, zeropointsixtwofive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (item instanceof IAccessoryModel)
|
||||
{
|
||||
this.mc.getTextureManager().bindTexture(((IAccessoryModel) item).getWearbleTexture(player, armor.inventory[1], 1));
|
||||
model.setLivingAnimations(player, limbSwingMod, limbSwing, partialTick);
|
||||
model.render(player, limbSwingMod, limbSwing, pitch, yawRotation - yawOffset, bodyRotation, zeropointsixtwofive);
|
||||
}
|
||||
}
|
||||
}
|
||||
private float interpolateRotation(float par1, float par2, float par3) {
|
||||
float f3;
|
||||
|
||||
private float interpolateRotation (float par1, float par2, float par3)
|
||||
{
|
||||
float f3;
|
||||
for (f3 = par2 - par1; f3 < -180.0F; f3 += 360.0F) {
|
||||
;
|
||||
}
|
||||
|
||||
for (f3 = par2 - par1; f3 < -180.0F; f3 += 360.0F)
|
||||
{
|
||||
;
|
||||
}
|
||||
while (f3 >= 180.0F) {
|
||||
f3 -= 360.0F;
|
||||
}
|
||||
|
||||
while (f3 >= 180.0F)
|
||||
{
|
||||
f3 -= 360.0F;
|
||||
}
|
||||
return par1 + par3 * f3;
|
||||
}
|
||||
|
||||
return par1 + par3 * f3;
|
||||
}
|
||||
|
||||
protected float handleRotationFloat (EntityLivingBase par1EntityLivingBase, float par2)
|
||||
{
|
||||
return (float) par1EntityLivingBase.ticksExisted + par2;
|
||||
}
|
||||
protected float handleRotationFloat(EntityLivingBase par1EntityLivingBase, float par2) {
|
||||
return (float) par1EntityLivingBase.ticksExisted + par2;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,183 +1,214 @@
|
||||
package tconstruct.client;
|
||||
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Type;
|
||||
import cpw.mods.fml.client.registry.ClientRegistry;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.InputEvent;
|
||||
import mantle.common.network.AbstractPacket;
|
||||
import modwarriors.notenoughkeys.api.Api;
|
||||
import modwarriors.notenoughkeys.api.KeyBindingPressedEvent;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import tconstruct.TConstruct;
|
||||
import tconstruct.armor.*;
|
||||
import tconstruct.armor.ArmorProxyClient;
|
||||
import tconstruct.armor.ArmorProxyCommon;
|
||||
import tconstruct.armor.PlayerAbilityHelper;
|
||||
import tconstruct.armor.items.TravelGear;
|
||||
import tconstruct.util.network.*;
|
||||
import tconstruct.util.network.AccessoryInventoryPacket;
|
||||
import tconstruct.util.network.BeltPacket;
|
||||
import tconstruct.util.network.DoubleJumpPacket;
|
||||
import tconstruct.util.network.GogglePacket;
|
||||
|
||||
public class ArmorControls extends TKeyHandler
|
||||
{
|
||||
public static final String keybindCategory = "tconstruct.keybindings";
|
||||
public static KeyBinding armorKey = new KeyBinding("key.tarmor", 24, keybindCategory);
|
||||
public static KeyBinding toggleGoggles = new KeyBinding("key.tgoggles", 34, keybindCategory);
|
||||
public static KeyBinding beltSwap = new KeyBinding("key.tbelt", 48, keybindCategory);
|
||||
public static KeyBinding zoomKey = new KeyBinding("key.tzoom", 44, keybindCategory); //TODO: Make this hold, not toggle
|
||||
static KeyBinding jumpKey;
|
||||
static KeyBinding invKey;
|
||||
static Minecraft mc;
|
||||
public class ArmorControls {
|
||||
public static final String keybindCategory = "tconstruct.keybindings";
|
||||
public static KeyBinding armorKey = new KeyBinding("key.tarmor", 24, keybindCategory);
|
||||
public static KeyBinding toggleGoggles = new KeyBinding("key.tgoggles", 34, keybindCategory);
|
||||
public static KeyBinding beltSwap = new KeyBinding("key.tbelt", 48, keybindCategory);
|
||||
public static KeyBinding zoomKey = new KeyBinding("key.tzoom", 44,
|
||||
keybindCategory); //TODO: Make this hold, not toggle
|
||||
static KeyBinding jumpKey;
|
||||
static KeyBinding invKey;
|
||||
static Minecraft mc;
|
||||
|
||||
boolean jumping;
|
||||
int midairJumps = 0;
|
||||
boolean climbing = false;
|
||||
boolean onGround = false;
|
||||
public static boolean zoom = false;
|
||||
boolean activeGoggles = false; //TODO: Set this on server login
|
||||
boolean jumping;
|
||||
int midairJumps = 0;
|
||||
boolean climbing = false;
|
||||
boolean onGround = false;
|
||||
public static boolean zoom = false;
|
||||
boolean activeGoggles = false; //TODO: Set this on server login
|
||||
|
||||
int currentTab = 1;
|
||||
int currentTab = 1;
|
||||
|
||||
// boolean onStilts = false;
|
||||
// boolean onStilts = false;
|
||||
|
||||
public ArmorControls()
|
||||
{
|
||||
super(new KeyBinding[] { armorKey, toggleGoggles, beltSwap, zoomKey }, new boolean[] { false, false, false, false }, getVanillaKeyBindings(), new boolean[] { false, false });
|
||||
/*ClientRegistry.registerKeyBinding(armorKey);
|
||||
ClientRegistry.registerKeyBinding(refreshCapes);
|
||||
ClientRegistry.registerKeyBinding(toggleGoggles);
|
||||
ClientRegistry.registerKeyBinding(beltSwap);
|
||||
ClientRegistry.registerKeyBinding(zoomKey);*/
|
||||
}
|
||||
private final KeyBinding[] keys;
|
||||
|
||||
private static KeyBinding[] getVanillaKeyBindings ()
|
||||
{
|
||||
mc = Minecraft.getMinecraft();
|
||||
jumpKey = mc.gameSettings.keyBindJump;
|
||||
invKey = mc.gameSettings.keyBindInventory;
|
||||
return new KeyBinding[] { jumpKey, invKey };
|
||||
}
|
||||
public ArmorControls() {
|
||||
getVanillaKeyBindings();
|
||||
this.keys = new KeyBinding[] {
|
||||
ArmorControls.armorKey,
|
||||
ArmorControls.toggleGoggles,
|
||||
ArmorControls.beltSwap,
|
||||
ArmorControls.zoomKey,
|
||||
null, null
|
||||
};
|
||||
|
||||
@Override
|
||||
public void keyDown (Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
|
||||
{
|
||||
if (tickEnd && mc.theWorld != null)
|
||||
{
|
||||
if (kb == armorKey && mc.currentScreen == null) // Extended Armor
|
||||
{
|
||||
openArmorGui();// mc.thePlayer.username);
|
||||
}
|
||||
}
|
||||
|
||||
if (kb == jumpKey) // Double jump
|
||||
{
|
||||
if (mc.thePlayer.capabilities.isCreativeMode)
|
||||
return;
|
||||
public void registerKeys() {
|
||||
// Register bindings
|
||||
for (KeyBinding key : this.keys) {
|
||||
if (key != null)
|
||||
ClientRegistry.registerKeyBinding(key);
|
||||
}
|
||||
// Add mc keys
|
||||
this.keys[4] = ArmorControls.jumpKey;
|
||||
this.keys[5] = ArmorControls.invKey;
|
||||
}
|
||||
|
||||
if (jumping && midairJumps > 0)
|
||||
{
|
||||
mc.thePlayer.motionY = 0.42D;
|
||||
mc.thePlayer.fallDistance = 0;
|
||||
private static KeyBinding[] getVanillaKeyBindings() {
|
||||
mc = Minecraft.getMinecraft();
|
||||
jumpKey = mc.gameSettings.keyBindJump;
|
||||
invKey = mc.gameSettings.keyBindInventory;
|
||||
return new KeyBinding[] { jumpKey, invKey };
|
||||
}
|
||||
|
||||
if (mc.thePlayer.isPotionActive(Potion.jump))
|
||||
{
|
||||
mc.thePlayer.motionY += (double) ((float) (mc.thePlayer.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F);
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void mouseEvent(InputEvent.MouseInputEvent event) {
|
||||
if (!Api.isLoaded())
|
||||
this.checkKeys();
|
||||
}
|
||||
|
||||
midairJumps--;
|
||||
resetFallDamage();
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void keyEvent(InputEvent.KeyInputEvent event) {
|
||||
if (!Api.isLoaded())
|
||||
this.checkKeys();
|
||||
}
|
||||
|
||||
if (!jumping)
|
||||
{
|
||||
jumping = mc.thePlayer.isAirBorne;
|
||||
ItemStack shoes = mc.thePlayer.getCurrentArmor(0);
|
||||
if (shoes != null && shoes.hasTagCompound() && shoes.getTagCompound().hasKey("TinkerArmor"))
|
||||
{
|
||||
NBTTagCompound shoeTag = shoes.getTagCompound().getCompoundTag("TinkerArmor");
|
||||
midairJumps += shoeTag.getInteger("Double-Jump");
|
||||
}
|
||||
ItemStack wings = mc.thePlayer.getCurrentArmor(1);
|
||||
if (wings != null && wings.hasTagCompound() && wings.getTagCompound().hasKey("TinkerArmor"))
|
||||
{
|
||||
NBTTagCompound shoeTag = wings.getTagCompound().getCompoundTag("TinkerArmor");
|
||||
midairJumps += shoeTag.getInteger("Double-Jump");
|
||||
}
|
||||
}
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void keyEventSpecial(KeyBindingPressedEvent event) {
|
||||
this.keyPressed(event.keyBinding);
|
||||
}
|
||||
|
||||
if (mc.currentScreen == null)
|
||||
{
|
||||
if (kb == toggleGoggles)
|
||||
{
|
||||
ItemStack goggles = mc.thePlayer.getCurrentArmor(3);
|
||||
if (goggles != null && goggles.getItem() instanceof TravelGear) //TODO: Genericize this
|
||||
{
|
||||
activeGoggles = !activeGoggles;
|
||||
PlayerAbilityHelper.toggleGoggles(mc.thePlayer, activeGoggles);
|
||||
toggleGoggles();
|
||||
}
|
||||
}
|
||||
if (kb == beltSwap)
|
||||
{
|
||||
if (ArmorProxyClient.armorExtended.inventory[3] != null)
|
||||
{
|
||||
PlayerAbilityHelper.swapBelt(mc.thePlayer, ArmorProxyClient.armorExtended);
|
||||
toggleBelt();
|
||||
}
|
||||
}
|
||||
if (kb == zoomKey)
|
||||
zoom = !zoom;
|
||||
}
|
||||
}
|
||||
}
|
||||
private void checkKeys() {
|
||||
for (KeyBinding key : this.keys) {
|
||||
if (this.isKeyActive(key.getKeyCode())) {
|
||||
this.keyPressed(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyUp (Type types, KeyBinding kb, boolean tickEnd)
|
||||
{
|
||||
// landOnGround();
|
||||
}
|
||||
private boolean isKeyActive(int keyCode) {
|
||||
if (keyCode < 0)
|
||||
return Mouse.isButtonDown(keyCode + 100);
|
||||
else
|
||||
return Keyboard.isKeyDown(keyCode);
|
||||
}
|
||||
|
||||
public void landOnGround ()
|
||||
{
|
||||
midairJumps = 0;
|
||||
jumping = false;
|
||||
}
|
||||
private void keyPressed(KeyBinding key) {
|
||||
if (key == ArmorControls.armorKey) {
|
||||
openArmorGui();
|
||||
}
|
||||
if (key == ArmorControls.jumpKey) {
|
||||
if (mc.thePlayer.capabilities.isCreativeMode)
|
||||
return;
|
||||
|
||||
public void resetControls ()
|
||||
{
|
||||
midairJumps = 0;
|
||||
jumping = false;
|
||||
climbing = false;
|
||||
onGround = false;
|
||||
}
|
||||
if (jumping && midairJumps > 0) {
|
||||
mc.thePlayer.motionY = 0.42D;
|
||||
mc.thePlayer.fallDistance = 0;
|
||||
|
||||
void resetFallDamage ()
|
||||
{
|
||||
AbstractPacket packet = new DoubleJumpPacket();
|
||||
updateServer(packet);
|
||||
}
|
||||
if (mc.thePlayer.isPotionActive(Potion.jump)) {
|
||||
mc.thePlayer.motionY += (double) (
|
||||
(float) (mc.thePlayer.getActivePotionEffect(Potion.jump).getAmplifier()
|
||||
+ 1) * 0.1F);
|
||||
}
|
||||
|
||||
public static void openArmorGui ()
|
||||
{
|
||||
AbstractPacket packet = new AccessoryInventoryPacket(ArmorProxyCommon.armorGuiID);
|
||||
updateServer(packet);
|
||||
}
|
||||
midairJumps--;
|
||||
resetFallDamage();
|
||||
}
|
||||
|
||||
public static void openKnapsackGui ()
|
||||
{
|
||||
AbstractPacket packet = new AccessoryInventoryPacket(ArmorProxyCommon.knapsackGuiID);
|
||||
updateServer(packet);
|
||||
}
|
||||
if (!jumping) {
|
||||
jumping = mc.thePlayer.isAirBorne;
|
||||
ItemStack shoes = mc.thePlayer.getCurrentArmor(0);
|
||||
if (shoes != null && shoes.hasTagCompound() && shoes.getTagCompound()
|
||||
.hasKey("TinkerArmor")) {
|
||||
NBTTagCompound shoeTag = shoes.getTagCompound().getCompoundTag("TinkerArmor");
|
||||
midairJumps += shoeTag.getInteger("Double-Jump");
|
||||
}
|
||||
ItemStack wings = mc.thePlayer.getCurrentArmor(1);
|
||||
if (wings != null && wings.hasTagCompound() && wings.getTagCompound()
|
||||
.hasKey("TinkerArmor")) {
|
||||
NBTTagCompound shoeTag = wings.getTagCompound().getCompoundTag("TinkerArmor");
|
||||
midairJumps += shoeTag.getInteger("Double-Jump");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mc.currentScreen == null) {
|
||||
if (key == ArmorControls.toggleGoggles) {
|
||||
ItemStack goggles = mc.thePlayer.getCurrentArmor(3);
|
||||
if (goggles != null && goggles
|
||||
.getItem() instanceof TravelGear) //TODO: Genericize this
|
||||
{
|
||||
activeGoggles = !activeGoggles;
|
||||
PlayerAbilityHelper.toggleGoggles(mc.thePlayer, activeGoggles);
|
||||
toggleGoggles();
|
||||
}
|
||||
}
|
||||
if (key == ArmorControls.beltSwap) {
|
||||
if (ArmorProxyClient.armorExtended.inventory[3] != null) {
|
||||
PlayerAbilityHelper.swapBelt(mc.thePlayer, ArmorProxyClient.armorExtended);
|
||||
toggleBelt();
|
||||
}
|
||||
}
|
||||
if (key == ArmorControls.zoomKey) {
|
||||
zoom = !zoom;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void toggleGoggles ()
|
||||
{
|
||||
AbstractPacket packet = new GogglePacket(activeGoggles);
|
||||
updateServer(packet);
|
||||
}
|
||||
public void landOnGround() {
|
||||
midairJumps = 0;
|
||||
jumping = false;
|
||||
}
|
||||
|
||||
private void toggleBelt ()
|
||||
{
|
||||
AbstractPacket packet = new BeltPacket();
|
||||
updateServer(packet);
|
||||
}
|
||||
public void resetControls() {
|
||||
midairJumps = 0;
|
||||
jumping = false;
|
||||
climbing = false;
|
||||
onGround = false;
|
||||
}
|
||||
|
||||
static void updateServer (AbstractPacket abstractPacket)
|
||||
{
|
||||
TConstruct.packetPipeline.sendToServer(abstractPacket);
|
||||
}
|
||||
void resetFallDamage() {
|
||||
AbstractPacket packet = new DoubleJumpPacket();
|
||||
updateServer(packet);
|
||||
}
|
||||
|
||||
public static void openArmorGui() {
|
||||
AbstractPacket packet = new AccessoryInventoryPacket(ArmorProxyCommon.armorGuiID);
|
||||
updateServer(packet);
|
||||
}
|
||||
|
||||
public static void openKnapsackGui() {
|
||||
AbstractPacket packet = new AccessoryInventoryPacket(ArmorProxyCommon.knapsackGuiID);
|
||||
updateServer(packet);
|
||||
}
|
||||
|
||||
private void toggleGoggles() {
|
||||
AbstractPacket packet = new GogglePacket(activeGoggles);
|
||||
updateServer(packet);
|
||||
}
|
||||
|
||||
private void toggleBelt() {
|
||||
AbstractPacket packet = new BeltPacket();
|
||||
updateServer(packet);
|
||||
}
|
||||
|
||||
static void updateServer(AbstractPacket abstractPacket) {
|
||||
TConstruct.packetPipeline.sendToServer(abstractPacket);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
package tconstruct.client;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Type;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import java.util.EnumSet;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import org.lwjgl.input.*;
|
||||
|
||||
public abstract class TKeyHandler
|
||||
{
|
||||
public KeyBinding[] keyBindings;
|
||||
public KeyBinding[] vKeyBindings;
|
||||
public boolean[] keyDown;
|
||||
public boolean[] repeatings;
|
||||
public boolean[] vRepeatings;
|
||||
public boolean isDummy;
|
||||
|
||||
/**
|
||||
* Pass an array of keybindings and a repeat flag for each one
|
||||
*
|
||||
* @param keyBindings
|
||||
* @param repeatings
|
||||
*/
|
||||
public TKeyHandler(KeyBinding[] keyBindings, boolean[] repeatings, KeyBinding[] vanillaKeys, boolean[] vanillaRepeatings)
|
||||
{
|
||||
assert keyBindings.length == repeatings.length : "You need to pass two arrays of identical length";
|
||||
assert vanillaKeys.length == vanillaRepeatings.length : "You need to pass two arrays of identical length";
|
||||
this.keyBindings = keyBindings;
|
||||
this.repeatings = repeatings;
|
||||
this.vKeyBindings = vanillaKeys;
|
||||
this.vRepeatings = vanillaRepeatings;
|
||||
this.keyDown = new boolean[keyBindings.length + vanillaKeys.length];
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the keys into the system. You will do your own keyboard
|
||||
* management elsewhere. No events will fire if you use this method
|
||||
*
|
||||
* @param keyBindings
|
||||
*/
|
||||
public TKeyHandler(KeyBinding[] keyBindings)
|
||||
{
|
||||
this.keyBindings = keyBindings;
|
||||
this.isDummy = true;
|
||||
}
|
||||
|
||||
public KeyBinding[] getKeyBindings ()
|
||||
{
|
||||
return this.keyBindings;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onTick (ClientTickEvent event)
|
||||
{
|
||||
if (event.side == Side.CLIENT)
|
||||
{
|
||||
if (event.phase == Phase.START)
|
||||
keyTick(event.type, false);
|
||||
else if (event.phase == Phase.END)
|
||||
keyTick(event.type, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void keyTick (Type type, boolean tickEnd)
|
||||
{
|
||||
for (int i = 0; i < keyBindings.length; i++)
|
||||
{
|
||||
KeyBinding keyBinding = keyBindings[i];
|
||||
int keyCode = keyBinding.getKeyCode();
|
||||
boolean state = (keyCode < 0 ? Mouse.isButtonDown(keyCode + 100) : Keyboard.isKeyDown(keyCode));
|
||||
if (state != keyDown[i] || (state && repeatings[i]))
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
keyDown(type, keyBinding, tickEnd, state != keyDown[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
keyUp(type, keyBinding, tickEnd);
|
||||
}
|
||||
if (tickEnd)
|
||||
{
|
||||
keyDown[i] = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < vKeyBindings.length; i++)
|
||||
{
|
||||
KeyBinding keyBinding = vKeyBindings[i];
|
||||
int keyCode = keyBinding.getKeyCode();
|
||||
boolean state = (keyCode < 0 ? Mouse.isButtonDown(keyCode + 100) : Keyboard.isKeyDown(keyCode));
|
||||
if (state != keyDown[i + keyBindings.length] || (state && vRepeatings[i]))
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
keyDown(type, keyBinding, tickEnd, state != keyDown[i + keyBindings.length]);
|
||||
}
|
||||
else
|
||||
{
|
||||
keyUp(type, keyBinding, tickEnd);
|
||||
}
|
||||
if (tickEnd)
|
||||
{
|
||||
keyDown[i + keyBindings.length] = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the key is first in the down position on any tick from the
|
||||
* {@link #ticks()} set. Will be called subsequently with isRepeat set to
|
||||
* true
|
||||
*
|
||||
* @see #keyUp(EnumSet, KeyBinding, boolean)
|
||||
*
|
||||
* @param types
|
||||
* the type(s) of tick that fired when this key was first down
|
||||
* @param tickEnd
|
||||
* was it an end or start tick which fired the key
|
||||
* @param isRepeat
|
||||
* is it a repeat key event
|
||||
*/
|
||||
public abstract void keyDown (Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat);
|
||||
|
||||
/**
|
||||
* Fired once when the key changes state from down to up
|
||||
*
|
||||
* @see #keyDown(EnumSet, KeyBinding, boolean, boolean)
|
||||
*
|
||||
* @param types
|
||||
* the type(s) of tick that fired when this key was first down
|
||||
* @param tickEnd
|
||||
* was it an end or start tick which fired the key
|
||||
*/
|
||||
public abstract void keyUp (Type types, KeyBinding kb, boolean tickEnd);
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user