Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.client.entity;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.gui.GuiCommandBlock;
- import net.minecraft.client.gui.GuiEnchantment;
- import net.minecraft.client.gui.GuiHopper;
- import net.minecraft.client.gui.GuiMerchant;
- import net.minecraft.client.gui.GuiRepair;
- import net.minecraft.client.gui.GuiScreen;
- import net.minecraft.client.gui.GuiScreenBook;
- import net.minecraft.client.gui.inventory.GuiBeacon;
- import net.minecraft.client.gui.inventory.GuiBrewingStand;
- import net.minecraft.client.gui.inventory.GuiChest;
- import net.minecraft.client.gui.inventory.GuiCrafting;
- import net.minecraft.client.gui.inventory.GuiDispenser;
- import net.minecraft.client.gui.inventory.GuiEditSign;
- import net.minecraft.client.gui.inventory.GuiFurnace;
- import net.minecraft.client.particle.EntityCrit2FX;
- import net.minecraft.client.particle.EntityPickupFX;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.IMerchant;
- import net.minecraft.entity.item.EntityMinecartHopper;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.IInventory;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.potion.Potion;
- import net.minecraft.stats.Achievement;
- import net.minecraft.stats.AchievementList;
- import net.minecraft.stats.StatBase;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.tileentity.TileEntityBeacon;
- import net.minecraft.tileentity.TileEntityBrewingStand;
- import net.minecraft.tileentity.TileEntityCommandBlock;
- import net.minecraft.tileentity.TileEntityDispenser;
- import net.minecraft.tileentity.TileEntityFurnace;
- import net.minecraft.tileentity.TileEntityHopper;
- import net.minecraft.tileentity.TileEntitySign;
- import net.minecraft.util.ChunkCoordinates;
- import net.minecraft.util.DamageSource;
- import net.minecraft.util.MathHelper;
- import net.minecraft.util.MouseFilter;
- import net.minecraft.util.MovementInput;
- import net.minecraft.util.Session;
- import net.minecraft.util.StringUtils;
- import net.minecraft.world.World;
- @SideOnly(Side.CLIENT)
- public class EntityPlayerSP extends EntityPlayer
- {
- public MovementInput movementInput;
- protected Minecraft mc;
- /**
- * Used to tell if the player pressed forward twice. If this is at 0 and it's pressed (And they are allowed to
- * sprint, aka enough food on the ground etc) it sets this to 7. If it's pressed and it's greater than 0 enable
- * sprinting.
- */
- protected int sprintToggleTimer = 0;
- /** Ticks left before sprinting is disabled. */
- public int sprintingTicksLeft = 0;
- public float renderArmYaw;
- public float renderArmPitch;
- public float prevRenderArmYaw;
- public float prevRenderArmPitch;
- private MouseFilter field_71162_ch = new MouseFilter();
- private MouseFilter field_71160_ci = new MouseFilter();
- private MouseFilter field_71161_cj = new MouseFilter();
- /** The amount of time an entity has been in a Portal */
- public float timeInPortal;
- /** The amount of time an entity has been in a Portal the previous tick */
- public float prevTimeInPortal;
- public EntityPlayerSP(Minecraft par1Minecraft, World par2World, Session par3Session, int par4)
- {
- super(par2World);
- this.mc = par1Minecraft;
- this.dimension = par4;
- if (par3Session != null && par3Session.username != null && par3Session.username.length() > 0)
- {
- this.skinUrl = "http://skins.minecraft.net/MinecraftSkins/" + StringUtils.stripControlCodes(par3Session.username) + ".png";
- }
- this.username = par3Session.username;
- }
- /**
- * Tries to moves the entity by the passed in displacement. Args: x, y, z
- */
- public void moveEntity(double par1, double par3, double par5)
- {
- super.moveEntity(par1, par3, par5);
- }
- public void updateEntityActionState()
- {
- super.updateEntityActionState();
- this.moveStrafing = this.movementInput.moveStrafe;
- this.moveForward = this.movementInput.moveForward;
- this.isJumping = this.movementInput.jump;
- this.prevRenderArmYaw = this.renderArmYaw;
- this.prevRenderArmPitch = this.renderArmPitch;
- this.renderArmPitch = (float)((double)this.renderArmPitch + (double)(this.rotationPitch - this.renderArmPitch) * 0.5D);
- this.renderArmYaw = (float)((double)this.renderArmYaw + (double)(this.rotationYaw - this.renderArmYaw) * 0.5D);
- }
- /**
- * Returns whether the entity is in a local (client) world
- */
- protected boolean isClientWorld()
- {
- return true;
- }
- /**
- * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons
- * use this to react to sunlight and start to burn.
- */
- public void onLivingUpdate()
- {
- if (this.sprintingTicksLeft > 0)
- {
- --this.sprintingTicksLeft;
- if (this.sprintingTicksLeft == 0)
- {
- this.setSprinting(false);
- }
- }
- if (this.sprintToggleTimer > 0)
- {
- --this.sprintToggleTimer;
- }
- if (this.mc.playerController.enableEverythingIsScrewedUpMode())
- {
- this.posX = this.posZ = 0.5D;
- this.posX = 0.0D;
- this.posZ = 0.0D;
- this.rotationYaw = (float)this.ticksExisted / 12.0F;
- this.rotationPitch = 10.0F;
- this.posY = 68.5D;
- }
- else
- {
- if (!this.mc.statFileWriter.hasAchievementUnlocked(AchievementList.openInventory))
- {
- this.mc.guiAchievement.queueAchievementInformation(AchievementList.openInventory);
- }
- this.prevTimeInPortal = this.timeInPortal;
- if (this.inPortal)
- {
- if (this.mc.currentScreen != null)
- {
- this.mc.displayGuiScreen((GuiScreen)null);
- }
- if (this.timeInPortal == 0.0F)
- {
- this.mc.sndManager.playSoundFX("portal.trigger", 1.0F, this.rand.nextFloat() * 0.4F + 0.8F);
- }
- this.timeInPortal += 0.0125F;
- if (this.timeInPortal >= 1.0F)
- {
- this.timeInPortal = 1.0F;
- }
- this.inPortal = false;
- }
- else if (this.isPotionActive(Potion.confusion) && this.getActivePotionEffect(Potion.confusion).getDuration() > 60)
- {
- this.timeInPortal += 0.006666667F;
- if (this.timeInPortal > 1.0F)
- {
- this.timeInPortal = 1.0F;
- }
- }
- else
- {
- if (this.timeInPortal > 0.0F)
- {
- this.timeInPortal -= 0.05F;
- }
- if (this.timeInPortal < 0.0F)
- {
- this.timeInPortal = 0.0F;
- }
- }
- if (this.timeUntilPortal > 0)
- {
- --this.timeUntilPortal;
- }
- boolean flag = this.movementInput.jump;
- float f = 0.8F;
- boolean flag1 = this.movementInput.moveForward >= f;
- this.movementInput.updatePlayerMoveState();
- if (this.isUsingItem())
- {
- this.movementInput.moveStrafe *= 0.2F;
- this.movementInput.moveForward *= 0.2F;
- this.sprintToggleTimer = 0;
- }
- if (this.movementInput.sneak && this.ySize < 0.2F)
- {
- this.ySize = 0.2F;
- }
- this.pushOutOfBlocks(this.posX - (double)this.width * 0.35D, this.boundingBox.minY + 0.5D, this.posZ + (double)this.width * 0.35D);
- this.pushOutOfBlocks(this.posX - (double)this.width * 0.35D, this.boundingBox.minY + 0.5D, this.posZ - (double)this.width * 0.35D);
- this.pushOutOfBlocks(this.posX + (double)this.width * 0.35D, this.boundingBox.minY + 0.5D, this.posZ - (double)this.width * 0.35D);
- this.pushOutOfBlocks(this.posX + (double)this.width * 0.35D, this.boundingBox.minY + 0.5D, this.posZ + (double)this.width * 0.35D);
- boolean flag2 = (float)this.getFoodStats().getFoodLevel() > 6.0F || this.capabilities.allowFlying;
- if (this.onGround && !flag1 && this.movementInput.moveForward >= f && !this.isSprinting() && flag2 && !this.isUsingItem() && !this.isPotionActive(Potion.blindness))
- {
- if (this.sprintToggleTimer == 0)
- {
- this.sprintToggleTimer = 7;
- }
- else
- {
- this.setSprinting(true);
- this.sprintToggleTimer = 0;
- }
- }
- if (this.isSneaking())
- {
- this.sprintToggleTimer = 0;
- }
- if (this.isSprinting() && (this.movementInput.moveForward < f || this.isCollidedHorizontally || !flag2))
- {
- this.setSprinting(false);
- }
- if (this.capabilities.allowFlying && !flag && this.movementInput.jump)
- {
- if (this.flyToggleTimer == 0)
- {
- this.flyToggleTimer = 7;
- }
- else
- {
- this.capabilities.isFlying = !this.capabilities.isFlying;
- this.sendPlayerAbilities();
- this.flyToggleTimer = 0;
- }
- }
- if (this.capabilities.isFlying)
- {
- if (this.movementInput.sneak)
- {
- this.motionY -= 0.15D;
- }
- if (this.movementInput.jump)
- {
- this.motionY += 0.15D;
- }
- }
- super.onLivingUpdate();
- if (this.onGround && this.capabilities.isFlying)
- {
- this.capabilities.isFlying = false;
- this.sendPlayerAbilities();
- }
- }
- }
- /**
- * Gets the player's field of view multiplier. (ex. when flying)
- */
- public float getFOVMultiplier()
- {
- float f = 1.0F;
- if (this.capabilities.isFlying)
- {
- f *= 1.1F;
- }
- f *= (this.landMovementFactor * this.getSpeedModifier() / this.speedOnGround + 1.0F) / 2.0F;
- if (this.isUsingItem() && this.getItemInUse().itemID == Item.bow.itemID)
- {
- int i = this.getItemInUseDuration();
- float f1 = (float)i / 20.0F;
- if (f1 > 1.0F)
- {
- f1 = 1.0F;
- }
- else
- {
- f1 *= f1;
- }
- f *= 1.0F - f1 * 0.15F;
- }
- return f;
- }
- public void updateCloak()
- {
- this.cloakUrl = "http://skins.minecraft.net/MinecraftCloaks/" + StringUtils.stripControlCodes(this.username) + ".png";
- }
- /**
- * sets current screen to null (used on escape buttons of GUIs)
- */
- public void closeScreen()
- {
- super.closeScreen();
- this.mc.displayGuiScreen((GuiScreen)null);
- }
- /**
- * Displays the GUI for editing a sign. Args: tileEntitySign
- */
- public void displayGUIEditSign(TileEntity par1TileEntity)
- {
- if (par1TileEntity instanceof TileEntitySign)
- {
- this.mc.displayGuiScreen(new GuiEditSign((TileEntitySign)par1TileEntity));
- }
- else if (par1TileEntity instanceof TileEntityCommandBlock)
- {
- this.mc.displayGuiScreen(new GuiCommandBlock((TileEntityCommandBlock)par1TileEntity));
- }
- }
- /**
- * Displays the GUI for interacting with a book.
- */
- public void displayGUIBook(ItemStack par1ItemStack)
- {
- Item item = par1ItemStack.getItem();
- if (item == Item.writtenBook)
- {
- this.mc.displayGuiScreen(new GuiScreenBook(this, par1ItemStack, false));
- }
- else if (item == Item.writableBook)
- {
- this.mc.displayGuiScreen(new GuiScreenBook(this, par1ItemStack, true));
- }
- }
- /**
- * Displays the GUI for interacting with a chest inventory. Args: chestInventory
- */
- public void displayGUIChest(IInventory par1IInventory)
- {
- this.mc.displayGuiScreen(new GuiChest(this.inventory, par1IInventory));
- }
- public void func_94064_a(TileEntityHopper par1TileEntityHopper)
- {
- this.mc.displayGuiScreen(new GuiHopper(this.inventory, par1TileEntityHopper));
- }
- public void func_96125_a(EntityMinecartHopper par1EntityMinecartHopper)
- {
- this.mc.displayGuiScreen(new GuiHopper(this.inventory, par1EntityMinecartHopper));
- }
- /**
- * Displays the crafting GUI for a workbench.
- */
- public void displayGUIWorkbench(int par1, int par2, int par3)
- {
- this.mc.displayGuiScreen(new GuiCrafting(this.inventory, this.worldObj, par1, par2, par3));
- }
- public void displayGUIEnchantment(int par1, int par2, int par3, String par4Str)
- {
- this.mc.displayGuiScreen(new GuiEnchantment(this.inventory, this.worldObj, par1, par2, par3, par4Str));
- }
- /**
- * Displays the GUI for interacting with an anvil.
- */
- public void displayGUIAnvil(int par1, int par2, int par3)
- {
- this.mc.displayGuiScreen(new GuiRepair(this.inventory, this.worldObj, par1, par2, par3));
- }
- /**
- * Displays the furnace GUI for the passed in furnace entity. Args: tileEntityFurnace
- */
- public void displayGUIFurnace(TileEntityFurnace par1TileEntityFurnace)
- {
- this.mc.displayGuiScreen(new GuiFurnace(this.inventory, par1TileEntityFurnace));
- }
- /**
- * Displays the GUI for interacting with a brewing stand.
- */
- public void displayGUIBrewingStand(TileEntityBrewingStand par1TileEntityBrewingStand)
- {
- this.mc.displayGuiScreen(new GuiBrewingStand(this.inventory, par1TileEntityBrewingStand));
- }
- /**
- * Displays the GUI for interacting with a beacon.
- */
- public void displayGUIBeacon(TileEntityBeacon par1TileEntityBeacon)
- {
- this.mc.displayGuiScreen(new GuiBeacon(this.inventory, par1TileEntityBeacon));
- }
- /**
- * Displays the dipsenser GUI for the passed in dispenser entity. Args: TileEntityDispenser
- */
- public void displayGUIDispenser(TileEntityDispenser par1TileEntityDispenser)
- {
- this.mc.displayGuiScreen(new GuiDispenser(this.inventory, par1TileEntityDispenser));
- }
- public void displayGUIMerchant(IMerchant par1IMerchant, String par2Str)
- {
- this.mc.displayGuiScreen(new GuiMerchant(this.inventory, par1IMerchant, this.worldObj, par2Str));
- }
- /**
- * Called when the player performs a critical hit on the Entity. Args: entity that was hit critically
- */
- public void onCriticalHit(Entity par1Entity)
- {
- this.mc.effectRenderer.addEffect(new EntityCrit2FX(this.mc.theWorld, par1Entity));
- }
- public void onEnchantmentCritical(Entity par1Entity)
- {
- EntityCrit2FX entitycrit2fx = new EntityCrit2FX(this.mc.theWorld, par1Entity, "magicCrit");
- this.mc.effectRenderer.addEffect(entitycrit2fx);
- }
- /**
- * Called whenever an item is picked up from walking over it. Args: pickedUpEntity, stackSize
- */
- public void onItemPickup(Entity par1Entity, int par2)
- {
- this.mc.effectRenderer.addEffect(new EntityPickupFX(this.mc.theWorld, par1Entity, this, -0.5F));
- }
- /**
- * Returns if this entity is sneaking.
- */
- public boolean isSneaking()
- {
- return this.movementInput.sneak && !this.sleeping;
- }
- /**
- * Updates health locally.
- */
- public void setHealth(int par1)
- {
- int j = this.getHealth() - par1;
- if (j <= 0)
- {
- this.setEntityHealth(par1);
- if (j < 0)
- {
- this.hurtResistantTime = this.maxHurtResistantTime / 2;
- }
- }
- else
- {
- this.lastDamage = j;
- this.setEntityHealth(this.getHealth());
- this.hurtResistantTime = this.maxHurtResistantTime;
- this.damageEntity(DamageSource.generic, j);
- this.hurtTime = this.maxHurtTime = 10;
- }
- }
- /**
- * Add a chat message to the player
- */
- public void addChatMessage(String par1Str)
- {
- this.mc.ingameGUI.getChatGUI().addTranslatedMessage(par1Str, new Object[0]);
- }
- /**
- * Adds a value to a statistic field.
- */
- public void addStat(StatBase par1StatBase, int par2)
- {
- if (par1StatBase != null)
- {
- if (par1StatBase.isAchievement())
- {
- Achievement achievement = (Achievement)par1StatBase;
- if (achievement.parentAchievement == null || this.mc.statFileWriter.hasAchievementUnlocked(achievement.parentAchievement))
- {
- if (!this.mc.statFileWriter.hasAchievementUnlocked(achievement))
- {
- this.mc.guiAchievement.queueTakenAchievement(achievement);
- }
- this.mc.statFileWriter.readStat(par1StatBase, par2);
- }
- }
- else
- {
- this.mc.statFileWriter.readStat(par1StatBase, par2);
- }
- }
- }
- private boolean isBlockTranslucent(int par1, int par2, int par3)
- {
- return this.worldObj.isBlockNormalCube(par1, par2, par3);
- }
- /**
- * Adds velocity to push the entity out of blocks at the specified x, y, z position Args: x, y, z
- */
- protected boolean pushOutOfBlocks(double par1, double par3, double par5)
- {
- int i = MathHelper.floor_double(par1);
- int j = MathHelper.floor_double(par3);
- int k = MathHelper.floor_double(par5);
- double d3 = par1 - (double)i;
- double d4 = par5 - (double)k;
- if (this.isBlockTranslucent(i, j, k) || this.isBlockTranslucent(i, j + 1, k))
- {
- boolean flag = !this.isBlockTranslucent(i - 1, j, k) && !this.isBlockTranslucent(i - 1, j + 1, k);
- boolean flag1 = !this.isBlockTranslucent(i + 1, j, k) && !this.isBlockTranslucent(i + 1, j + 1, k);
- boolean flag2 = !this.isBlockTranslucent(i, j, k - 1) && !this.isBlockTranslucent(i, j + 1, k - 1);
- boolean flag3 = !this.isBlockTranslucent(i, j, k + 1) && !this.isBlockTranslucent(i, j + 1, k + 1);
- byte b0 = -1;
- double d5 = 9999.0D;
- if (flag && d3 < d5)
- {
- d5 = d3;
- b0 = 0;
- }
- if (flag1 && 1.0D - d3 < d5)
- {
- d5 = 1.0D - d3;
- b0 = 1;
- }
- if (flag2 && d4 < d5)
- {
- d5 = d4;
- b0 = 4;
- }
- if (flag3 && 1.0D - d4 < d5)
- {
- d5 = 1.0D - d4;
- b0 = 5;
- }
- float f = 0.1F;
- if (b0 == 0)
- {
- this.motionX = (double)(-f);
- }
- if (b0 == 1)
- {
- this.motionX = (double)f;
- }
- if (b0 == 4)
- {
- this.motionZ = (double)(-f);
- }
- if (b0 == 5)
- {
- this.motionZ = (double)f;
- }
- }
- return false;
- }
- /**
- * Set sprinting switch for Entity.
- */
- public void setSprinting(boolean par1)
- {
- super.setSprinting(par1);
- this.sprintingTicksLeft = par1 ? 600 : 0;
- }
- /**
- * Sets the current XP, total XP, and level number.
- */
- public void setXPStats(float par1, int par2, int par3)
- {
- this.experience = par1;
- this.experienceTotal = par2;
- this.experienceLevel = par3;
- }
- public void sendChatToPlayer(String par1Str)
- {
- this.mc.ingameGUI.getChatGUI().printChatMessage(par1Str);
- }
- /**
- * Returns true if the command sender is allowed to use the given command.
- */
- public boolean canCommandSenderUseCommand(int par1, String par2Str)
- {
- return par1 <= 0;
- }
- /**
- * Return the position for this command sender.
- */
- public ChunkCoordinates getPlayerCoordinates()
- {
- return new ChunkCoordinates(MathHelper.floor_double(this.posX + 0.5D), MathHelper.floor_double(this.posY + 0.5D), MathHelper.floor_double(this.posZ + 0.5D));
- }
- /**
- * Returns the item that this EntityLiving is holding, if any.
- */
- public ItemStack getHeldItem()
- {
- return this.inventory.getCurrentItem();
- }
- public void playSound(String par1Str, float par2, float par3)
- {
- this.worldObj.playSound(this.posX, this.posY - (double)this.yOffset, this.posZ, par1Str, par2, par3, false);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement