From 82a73ba0cdc830cade703a69b59be7c2e54b8aad Mon Sep 17 00:00:00 2001 From: WayofTime Date: Mon, 26 Sep 2016 06:49:44 -0400 Subject: [PATCH] Experimented with loosening traction with an Armour Upgrade (Forward works, strafing fails) --- .../api/livingArmour/LivingArmourUpgrade.java | 5 ++ .../item/armour/ItemLivingArmour.java | 8 ++-- .../bloodmagic/livingArmour/LivingArmour.java | 10 +++- .../LivingArmourUpgradeSlippery.java | 46 ++++++++++++++----- 4 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java b/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java index 34522759..0d093b89 100644 --- a/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java +++ b/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java @@ -86,4 +86,9 @@ public abstract class LivingArmourUpgrade { return 0; } + + public boolean runOnClient() + { + return false; + } } diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index 4fa2fc3e..ea205d04 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -8,7 +8,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.UUID; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -29,9 +28,13 @@ import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.fml.relauncher.ReflectionHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; + +import org.lwjgl.input.Keyboard; + import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.api.saving.SoulNetwork; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; @@ -47,7 +50,6 @@ import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import org.lwjgl.input.Keyboard; public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshProvider { @@ -361,8 +363,6 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP } } } - - return; } if (this == ModItems.LIVING_ARMOUR_CHEST) diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java index 06a01052..5ab46c7c 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java @@ -156,7 +156,15 @@ public class LivingArmour implements ILivingArmour continue; } - upgrade.onTick(world, player, this); + if (world.isRemote && upgrade.runOnClient()) + { + upgrade.onTick(world, player, this); + } + } + + if (world.isRemote) + { + return; } List allowedUpgradesList = new ArrayList(); diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java index 4c35b082..8e83ce13 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java @@ -1,8 +1,8 @@ package WayofTime.bloodmagic.livingArmour.downgrade; -import net.minecraft.block.BlockIce; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.ILivingArmour; @@ -13,9 +13,6 @@ public class LivingArmourUpgradeSlippery extends LivingArmourUpgrade public static final int[] costs = new int[] { -50 }; public static final int[] slipperyDuration = new int[] { 30 * 20 }; - public double prevMotionX = 0; - public double prevMotionZ = 0; - public LivingArmourUpgradeSlippery(int level) { super(level); @@ -24,20 +21,47 @@ public class LivingArmourUpgradeSlippery extends LivingArmourUpgrade @Override public void onTick(World world, EntityPlayer player, ILivingArmour livingArmour) { - double weight = 0.05; if (world.isRemote && player.onGround) { - if (player.moveForward == 0) +// if (player.moveForward == 0) { - player.motionX = (player.motionX - this.prevMotionX) * weight + this.prevMotionX; - player.motionZ = (player.motionZ - this.prevMotionZ) * weight + this.prevMotionZ; - player.velocityChanged = true; + float f6 = 0.91F; + BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain(player.posX, player.getEntityBoundingBox().minY - 1.0D, player.posZ); + + if (player.onGround) + { + f6 = world.getBlockState(blockpos$pooledmutableblockpos).getBlock().slipperiness * 0.91F; + } + + player.motionX /= (double) (f6 / 0.91); + player.motionZ /= (double) (f6 / 0.91); + + float f7 = 0.16277136F / (f6 * f6 * f6); + float f8; + + if (player.onGround) + { + f8 = player.getAIMoveSpeed() * f7; + } else + { + f8 = player.jumpMovementFactor; + } + + player.moveRelative(-player.moveStrafing, -player.moveForward, f8); + + player.moveRelative(player.moveStrafing, player.moveForward, f8 / 10); + + player.motionX *= 0.90; + player.motionY *= 0.90; } } + } - this.prevMotionX = player.motionX; - this.prevMotionZ = player.motionZ; + @Override + public boolean runOnClient() + { + return true; } @Override