Added slope velocity hook for Covert
This commit is contained in:
parent
d54857e4de
commit
8ac1fe53f6
2 changed files with 140 additions and 39 deletions
|
@ -173,7 +173,7 @@
|
|||
{
|
||||
this.worldObj.spawnParticle("largesmoke", this.posX, this.posY + 0.8D, this.posZ, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
@@ -309,25 +308,20 @@
|
||||
@@ -309,49 +308,26 @@
|
||||
double var6 = 0.0078125D;
|
||||
int var8 = this.worldObj.getBlockId(var1, var2, var3);
|
||||
|
||||
|
@ -202,7 +202,33 @@
|
|||
if (var10 >= 2 && var10 <= 5)
|
||||
{
|
||||
this.posY = (double)(var2 + 1);
|
||||
@@ -370,7 +364,7 @@
|
||||
}
|
||||
-
|
||||
- if (var10 == 2)
|
||||
- {
|
||||
- this.motionX -= var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 3)
|
||||
- {
|
||||
- this.motionX += var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 4)
|
||||
- {
|
||||
- this.motionZ += var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 5)
|
||||
- {
|
||||
- this.motionZ -= var6;
|
||||
- }
|
||||
+
|
||||
+ adjustSlopeVelocities(var10);
|
||||
|
||||
int[][] var13 = field_855_j[var10];
|
||||
double var14 = (double)(var13[1][0] - var13[0][0]);
|
||||
@@ -370,7 +346,7 @@
|
||||
this.motionZ = var22 * var16 / var18;
|
||||
double var24;
|
||||
|
||||
|
@ -211,7 +237,7 @@
|
|||
{
|
||||
var24 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
|
||||
@@ -420,36 +414,8 @@
|
||||
@@ -420,36 +396,8 @@
|
||||
this.posX = var26 + var14 * var24;
|
||||
this.posZ = var28 + var16 * var24;
|
||||
this.setPosition(this.posX, this.posY + (double)this.yOffset, this.posZ);
|
||||
|
@ -250,7 +276,7 @@
|
|||
|
||||
if (var13[0][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var13[0][0] && MathHelper.floor_double(this.posZ) - var3 == var13[0][2])
|
||||
{
|
||||
@@ -460,41 +426,7 @@
|
||||
@@ -460,41 +408,7 @@
|
||||
this.setPosition(this.posX, this.posY + (double)var13[1][1], this.posZ);
|
||||
}
|
||||
|
||||
|
@ -293,7 +319,7 @@
|
|||
|
||||
Vec3D var52 = this.func_514_g(this.posX, this.posY, this.posZ);
|
||||
|
||||
@@ -523,30 +455,15 @@
|
||||
@@ -523,30 +437,15 @@
|
||||
}
|
||||
|
||||
double var41;
|
||||
|
@ -330,7 +356,7 @@
|
|||
{
|
||||
var41 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
|
||||
@@ -582,41 +499,7 @@
|
||||
@@ -582,41 +481,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -373,7 +399,7 @@
|
|||
}
|
||||
|
||||
this.rotationPitch = 0.0F;
|
||||
@@ -652,7 +535,18 @@
|
||||
@@ -652,7 +517,18 @@
|
||||
}
|
||||
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
|
@ -393,7 +419,7 @@
|
|||
|
||||
if (var15 != null && var15.size() > 0)
|
||||
{
|
||||
@@ -677,17 +571,8 @@
|
||||
@@ -677,17 +553,8 @@
|
||||
this.riddenByEntity = null;
|
||||
}
|
||||
|
||||
|
@ -413,7 +439,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -710,12 +595,7 @@
|
||||
@@ -710,12 +577,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -427,7 +453,7 @@
|
|||
|
||||
par3 = (double)var10;
|
||||
|
||||
@@ -761,14 +641,9 @@
|
||||
@@ -761,14 +623,9 @@
|
||||
|
||||
if (BlockRail.isRailBlock(var10))
|
||||
{
|
||||
|
@ -443,7 +469,7 @@
|
|||
if (var11 >= 2 && var11 <= 5)
|
||||
{
|
||||
par3 = (double)(var8 + 1);
|
||||
@@ -833,13 +708,14 @@
|
||||
@@ -833,13 +690,14 @@
|
||||
{
|
||||
par1NBTTagCompound.setInteger("Type", this.minecartType);
|
||||
|
||||
|
@ -461,7 +487,7 @@
|
|||
{
|
||||
NBTTagList var2 = new NBTTagList();
|
||||
|
||||
@@ -865,13 +741,14 @@
|
||||
@@ -865,13 +723,14 @@
|
||||
{
|
||||
this.minecartType = par1NBTTagCompound.getInteger("Type");
|
||||
|
||||
|
@ -479,7 +505,7 @@
|
|||
{
|
||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||
this.cargoItems = new ItemStack[this.getSizeInventory()];
|
||||
@@ -899,11 +776,19 @@
|
||||
@@ -899,11 +758,19 @@
|
||||
*/
|
||||
public void applyEntityCollision(Entity par1Entity)
|
||||
{
|
||||
|
@ -500,7 +526,7 @@
|
|||
{
|
||||
par1Entity.mountEntity(this);
|
||||
}
|
||||
@@ -949,7 +834,7 @@
|
||||
@@ -949,7 +816,7 @@
|
||||
double var18 = par1Entity.motionX + this.motionX;
|
||||
double var20 = par1Entity.motionZ + this.motionZ;
|
||||
|
||||
|
@ -509,7 +535,7 @@
|
|||
{
|
||||
this.motionX *= 0.20000000298023224D;
|
||||
this.motionZ *= 0.20000000298023224D;
|
||||
@@ -957,7 +842,7 @@
|
||||
@@ -957,7 +824,7 @@
|
||||
par1Entity.motionX *= 0.949999988079071D;
|
||||
par1Entity.motionZ *= 0.949999988079071D;
|
||||
}
|
||||
|
@ -518,7 +544,7 @@
|
|||
{
|
||||
par1Entity.motionX *= 0.20000000298023224D;
|
||||
par1Entity.motionZ *= 0.20000000298023224D;
|
||||
@@ -992,7 +877,7 @@
|
||||
@@ -992,7 +859,7 @@
|
||||
*/
|
||||
public int getSizeInventory()
|
||||
{
|
||||
|
@ -527,7 +553,7 @@
|
|||
}
|
||||
|
||||
/**
|
||||
@@ -1095,7 +980,12 @@
|
||||
@@ -1095,7 +962,12 @@
|
||||
*/
|
||||
public boolean interact(EntityPlayer par1EntityPlayer)
|
||||
{
|
||||
|
@ -541,7 +567,7 @@
|
|||
{
|
||||
if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != par1EntityPlayer)
|
||||
{
|
||||
@@ -1107,14 +997,14 @@
|
||||
@@ -1107,14 +979,14 @@
|
||||
par1EntityPlayer.mountEntity(this);
|
||||
}
|
||||
}
|
||||
|
@ -558,7 +584,7 @@
|
|||
{
|
||||
ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem();
|
||||
|
||||
@@ -1173,7 +1063,7 @@
|
||||
@@ -1173,7 +1045,7 @@
|
||||
/**
|
||||
* Is this minecart powered (Fuel > 0)
|
||||
*/
|
||||
|
@ -567,7 +593,7 @@
|
|||
{
|
||||
return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0;
|
||||
}
|
||||
@@ -1226,4 +1116,348 @@
|
||||
@@ -1226,4 +1098,373 @@
|
||||
{
|
||||
return this.dataWatcher.getWatchableObjectInt(18);
|
||||
}
|
||||
|
@ -855,6 +881,31 @@
|
|||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides, This code handle slopes affecting velocity.
|
||||
+ * @param metadata The blocks position metadata
|
||||
+ */
|
||||
+ protected void adjustSlopeVelocities(int metadata)
|
||||
+ {
|
||||
+ double acceleration = 0.0078125D;
|
||||
+ if (metadata == 2)
|
||||
+ {
|
||||
+ motionX -= acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 3)
|
||||
+ {
|
||||
+ motionX += acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 4)
|
||||
+ {
|
||||
+ motionZ += acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 5)
|
||||
+ {
|
||||
+ motionZ -= acceleration;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Getters/setters for physics variables
|
||||
+ */
|
||||
+
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
{
|
||||
this.worldObj.spawnParticle("largesmoke", this.posX, this.posY + 0.8D, this.posZ, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
@@ -296,25 +300,20 @@
|
||||
@@ -296,49 +300,26 @@
|
||||
double var6 = 0.0078125D;
|
||||
int var8 = this.worldObj.getBlockId(var1, var2, var3);
|
||||
|
||||
|
@ -201,7 +201,32 @@
|
|||
if (var10 >= 2 && var10 <= 5)
|
||||
{
|
||||
this.posY = (double)(var2 + 1);
|
||||
@@ -357,7 +356,7 @@
|
||||
}
|
||||
|
||||
- if (var10 == 2)
|
||||
- {
|
||||
- this.motionX -= var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 3)
|
||||
- {
|
||||
- this.motionX += var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 4)
|
||||
- {
|
||||
- this.motionZ += var6;
|
||||
- }
|
||||
-
|
||||
- if (var10 == 5)
|
||||
- {
|
||||
- this.motionZ -= var6;
|
||||
- }
|
||||
+ adjustSlopeVelocities(var10);
|
||||
|
||||
int[][] var13 = field_468_ak[var10];
|
||||
double var14 = (double)(var13[1][0] - var13[0][0]);
|
||||
@@ -357,7 +338,7 @@
|
||||
this.motionZ = var22 * var16 / var18;
|
||||
double var24;
|
||||
|
||||
|
@ -210,7 +235,7 @@
|
|||
{
|
||||
var24 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
|
||||
@@ -407,36 +406,8 @@
|
||||
@@ -407,36 +388,8 @@
|
||||
this.posX = var26 + var14 * var24;
|
||||
this.posZ = var28 + var16 * var24;
|
||||
this.setPosition(this.posX, this.posY + (double)this.yOffset, this.posZ);
|
||||
|
@ -249,7 +274,7 @@
|
|||
|
||||
if (var13[0][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var13[0][0] && MathHelper.floor_double(this.posZ) - var3 == var13[0][2])
|
||||
{
|
||||
@@ -447,41 +418,7 @@
|
||||
@@ -447,41 +400,7 @@
|
||||
this.setPosition(this.posX, this.posY + (double)var13[1][1], this.posZ);
|
||||
}
|
||||
|
||||
|
@ -292,7 +317,7 @@
|
|||
|
||||
Vec3D var52 = this.func_182_g(this.posX, this.posY, this.posZ);
|
||||
|
||||
@@ -510,30 +447,15 @@
|
||||
@@ -510,30 +429,15 @@
|
||||
}
|
||||
|
||||
double var41;
|
||||
|
@ -329,7 +354,7 @@
|
|||
{
|
||||
var41 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
|
||||
@@ -569,41 +491,7 @@
|
||||
@@ -569,41 +473,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -372,7 +397,7 @@
|
|||
}
|
||||
|
||||
this.rotationPitch = 0.0F;
|
||||
@@ -639,7 +527,18 @@
|
||||
@@ -639,7 +509,18 @@
|
||||
}
|
||||
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
|
@ -392,7 +417,7 @@
|
|||
|
||||
if (var15 != null && var15.size() > 0)
|
||||
{
|
||||
@@ -664,17 +563,8 @@
|
||||
@@ -664,17 +545,8 @@
|
||||
this.riddenByEntity = null;
|
||||
}
|
||||
|
||||
|
@ -412,7 +437,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -693,14 +583,9 @@
|
||||
@@ -693,14 +565,9 @@
|
||||
|
||||
if (BlockRail.isRailBlock(var10))
|
||||
{
|
||||
|
@ -428,7 +453,7 @@
|
|||
if (var11 >= 2 && var11 <= 5)
|
||||
{
|
||||
par3 = (double)(var8 + 1);
|
||||
@@ -765,13 +650,13 @@
|
||||
@@ -765,13 +632,13 @@
|
||||
{
|
||||
par1NBTTagCompound.setInteger("Type", this.minecartType);
|
||||
|
||||
|
@ -445,7 +470,7 @@
|
|||
{
|
||||
NBTTagList var2 = new NBTTagList();
|
||||
|
||||
@@ -797,13 +682,13 @@
|
||||
@@ -797,13 +664,13 @@
|
||||
{
|
||||
this.minecartType = par1NBTTagCompound.getInteger("Type");
|
||||
|
||||
|
@ -462,7 +487,7 @@
|
|||
{
|
||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||
this.cargoItems = new ItemStack[this.getSizeInventory()];
|
||||
@@ -826,11 +711,18 @@
|
||||
@@ -826,11 +693,18 @@
|
||||
*/
|
||||
public void applyEntityCollision(Entity par1Entity)
|
||||
{
|
||||
|
@ -482,7 +507,7 @@
|
|||
{
|
||||
par1Entity.mountEntity(this);
|
||||
}
|
||||
@@ -876,7 +768,7 @@
|
||||
@@ -876,7 +750,7 @@
|
||||
double var18 = par1Entity.motionX + this.motionX;
|
||||
double var20 = par1Entity.motionZ + this.motionZ;
|
||||
|
||||
|
@ -491,7 +516,7 @@
|
|||
{
|
||||
this.motionX *= 0.20000000298023224D;
|
||||
this.motionZ *= 0.20000000298023224D;
|
||||
@@ -884,7 +776,7 @@
|
||||
@@ -884,7 +758,7 @@
|
||||
par1Entity.motionX *= 0.949999988079071D;
|
||||
par1Entity.motionZ *= 0.949999988079071D;
|
||||
}
|
||||
|
@ -500,7 +525,7 @@
|
|||
{
|
||||
par1Entity.motionX *= 0.20000000298023224D;
|
||||
par1Entity.motionZ *= 0.20000000298023224D;
|
||||
@@ -919,7 +811,7 @@
|
||||
@@ -919,7 +793,7 @@
|
||||
*/
|
||||
public int getSizeInventory()
|
||||
{
|
||||
|
@ -509,7 +534,7 @@
|
|||
}
|
||||
|
||||
/**
|
||||
@@ -1022,7 +914,12 @@
|
||||
@@ -1022,7 +896,12 @@
|
||||
*/
|
||||
public boolean interact(EntityPlayer par1EntityPlayer)
|
||||
{
|
||||
|
@ -523,7 +548,7 @@
|
|||
{
|
||||
if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != par1EntityPlayer)
|
||||
{
|
||||
@@ -1034,14 +931,14 @@
|
||||
@@ -1034,14 +913,14 @@
|
||||
par1EntityPlayer.mountEntity(this);
|
||||
}
|
||||
}
|
||||
|
@ -540,7 +565,7 @@
|
|||
{
|
||||
ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem();
|
||||
|
||||
@@ -1073,7 +970,7 @@
|
||||
@@ -1073,7 +952,7 @@
|
||||
/**
|
||||
* Is this minecart powered (Fuel > 0)
|
||||
*/
|
||||
|
@ -549,7 +574,7 @@
|
|||
{
|
||||
return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0;
|
||||
}
|
||||
@@ -1126,4 +1023,348 @@
|
||||
@@ -1126,4 +1005,373 @@
|
||||
{
|
||||
return this.dataWatcher.getWatchableObjectInt(18);
|
||||
}
|
||||
|
@ -837,6 +862,31 @@
|
|||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides, This code handle slopes affecting velocity.
|
||||
+ * @param metadata The blocks position metadata
|
||||
+ */
|
||||
+ protected void adjustSlopeVelocities(int metadata)
|
||||
+ {
|
||||
+ double acceleration = 0.0078125D;
|
||||
+ if (metadata == 2)
|
||||
+ {
|
||||
+ motionX -= acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 3)
|
||||
+ {
|
||||
+ motionX += acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 4)
|
||||
+ {
|
||||
+ motionZ += acceleration;
|
||||
+ }
|
||||
+ else if (metadata == 5)
|
||||
+ {
|
||||
+ motionZ -= acceleration;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Getters/setters for physics variables
|
||||
+ */
|
||||
+
|
||||
|
|
Loading…
Reference in a new issue