Port to 1.12

This commit is contained in:
Ryan Liptak 2017-07-14 20:24:38 -07:00
parent ca8c1b1079
commit 90693c06b8
4 changed files with 26 additions and 24 deletions

View File

@ -7,15 +7,15 @@ buildscript {
} }
} }
dependencies { dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
} }
} }
apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'net.minecraftforge.gradle.forge'
minecraft { minecraft {
version = "1.11.2-13.20.0.2201" version = "14.21.0.2363"
mappings = "snapshot_20161220" mappings = "snapshot_20170625"
runDir = "run" runDir = "run"
coreMod = "squeek.quakemovement.ASMPlugin" coreMod = "squeek.quakemovement.ASMPlugin"

View File

@ -10,7 +10,7 @@ import org.objectweb.asm.tree.*;
import java.util.Map; import java.util.Map;
@IFMLLoadingPlugin.MCVersion("1.11.2") @IFMLLoadingPlugin.MCVersion("1.12")
public class ASMPlugin implements IFMLLoadingPlugin, IClassTransformer public class ASMPlugin implements IFMLLoadingPlugin, IClassTransformer
{ {
public static boolean isObfuscated = false; public static boolean isObfuscated = false;
@ -27,15 +27,16 @@ public class ASMPlugin implements IFMLLoadingPlugin, IClassTransformer
ClassNode classNode = readClassFromBytes(bytes); ClassNode classNode = readClassFromBytes(bytes);
MethodNode method; MethodNode method;
method = findMethodNodeOfClass(classNode, isObfuscated ? "g" : "moveEntityWithHeading", "(FF)V"); method = findMethodNodeOfClass(classNode, isObfuscated ? "a" : "travel", "(FFF)V");
if (method == null) if (method == null)
throw new RuntimeException("could not find EntityPlayer.moveEntityWithHeading"); throw new RuntimeException("could not find EntityPlayer.travel");
InsnList loadParameters = new InsnList(); InsnList loadParameters = new InsnList();
loadParameters.add(new VarInsnNode(Opcodes.ALOAD, 0)); loadParameters.add(new VarInsnNode(Opcodes.ALOAD, 0));
loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 1)); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 1));
loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 2)); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 2));
injectStandardHook(method, findFirstInstruction(method), CLASS_QUAKE_CLIENT_PLAYER, "moveEntityWithHeading", toMethodDescriptor("Z", CLASS_ENTITY_PLAYER, "F", "F"), loadParameters); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 3));
injectStandardHook(method, findFirstInstruction(method), CLASS_QUAKE_CLIENT_PLAYER, "moveEntityWithHeading", toMethodDescriptor("Z", CLASS_ENTITY_PLAYER, "F", "F", "F"), loadParameters);
method = findMethodNodeOfClass(classNode, isObfuscated ? "n" : "onLivingUpdate", "()V"); method = findMethodNodeOfClass(classNode, isObfuscated ? "n" : "onLivingUpdate", "()V");
if (method == null) if (method == null)
@ -76,7 +77,7 @@ public class ASMPlugin implements IFMLLoadingPlugin, IClassTransformer
ClassNode classNode = readClassFromBytes(bytes); ClassNode classNode = readClassFromBytes(bytes);
MethodNode method; MethodNode method;
method = findMethodNodeOfClass(classNode, isObfuscated ? "a" : "moveRelative", "(FFF)V"); method = findMethodNodeOfClass(classNode, isObfuscated ? "b" : "moveRelative", "(FFFF)V");
if (method == null) if (method == null)
throw new RuntimeException("could not find Entity.moveRelative"); throw new RuntimeException("could not find Entity.moveRelative");
@ -85,7 +86,8 @@ public class ASMPlugin implements IFMLLoadingPlugin, IClassTransformer
loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 1)); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 1));
loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 2)); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 2));
loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 3)); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 3));
injectStandardHook(method, findFirstInstruction(method), CLASS_QUAKE_CLIENT_PLAYER, "moveRelativeBase", toMethodDescriptor("Z", CLASS_ENTITY, "F", "F", "F"), loadParameters); loadParameters.add(new VarInsnNode(Opcodes.FLOAD, 4));
injectStandardHook(method, findFirstInstruction(method), CLASS_QUAKE_CLIENT_PLAYER, "moveRelativeBase", toMethodDescriptor("Z", CLASS_ENTITY, "F", "F", "F", "F"), loadParameters);
return writeClassToBytes(classNode); return writeClassToBytes(classNode);
} }

View File

@ -10,7 +10,7 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@Mod(modid = ModInfo.MODID, version = ModInfo.VERSION, name="Squake", acceptedMinecraftVersions="[1.11,1.12)", dependencies = "after:squeedometer") @Mod(modid = ModInfo.MODID, version = ModInfo.VERSION, name="Squake", acceptedMinecraftVersions="[1.12,1.13)", dependencies = "after:squeedometer")
public class ModQuakeMovement public class ModQuakeMovement
{ {
// The instance of your mod that Forge uses. // The instance of your mod that Forge uses.

View File

@ -45,7 +45,7 @@ public class QuakeClientPlayer
} }
} }
public static boolean moveEntityWithHeading(EntityPlayer player, float sidemove, float forwardmove) public static boolean moveEntityWithHeading(EntityPlayer player, float sidemove, float upmove, float forwardmove)
{ {
if (!player.world.isRemote) if (!player.world.isRemote)
return false; return false;
@ -58,7 +58,7 @@ public class QuakeClientPlayer
if ((player.capabilities.isFlying || player.isElytraFlying()) && player.getRidingEntity() == null) if ((player.capabilities.isFlying || player.isElytraFlying()) && player.getRidingEntity() == null)
return false; return false;
else else
didQuakeMovement = quake_moveEntityWithHeading(player, sidemove, forwardmove); didQuakeMovement = quake_moveEntityWithHeading(player, sidemove, upmove, forwardmove);
if (didQuakeMovement) if (didQuakeMovement)
player.addMovementStat(player.posX - d0, player.posY - d1, player.posZ - d2); player.addMovementStat(player.posX - d0, player.posY - d1, player.posZ - d2);
@ -100,15 +100,15 @@ public class QuakeClientPlayer
} }
} }
public static boolean moveRelativeBase(Entity entity, float sidemove, float forwardmove, float friction) public static boolean moveRelativeBase(Entity entity, float sidemove, float upmove, float forwardmove, float friction)
{ {
if (!(entity instanceof EntityPlayer)) if (!(entity instanceof EntityPlayer))
return false; return false;
return moveRelative((EntityPlayer)entity, sidemove, forwardmove, friction); return moveRelative((EntityPlayer)entity, sidemove, forwardmove, upmove, friction);
} }
public static boolean moveRelative(EntityPlayer player, float sidemove, float forwardmove, float friction) public static boolean moveRelative(EntityPlayer player, float sidemove, float upmove, float forwardmove, float friction)
{ {
if (!player.world.isRemote) if (!player.world.isRemote)
return false; return false;
@ -377,10 +377,10 @@ public class QuakeClientPlayer
player.limbSwing += player.limbSwingAmount; player.limbSwing += player.limbSwingAmount;
} }
private static void minecraft_WaterMove(EntityPlayer player, float sidemove, float forwardmove) private static void minecraft_WaterMove(EntityPlayer player, float sidemove, float upmove, float forwardmove)
{ {
double d0 = player.posY; double d0 = player.posY;
player.moveRelative(sidemove, forwardmove, 0.04F); player.moveRelative(sidemove, upmove, forwardmove, 0.04F);
player.move(MoverType.SELF, player.motionX, player.motionY, player.motionZ); player.move(MoverType.SELF, player.motionX, player.motionY, player.motionZ);
player.motionX *= 0.800000011920929D; player.motionX *= 0.800000011920929D;
player.motionY *= 0.800000011920929D; player.motionY *= 0.800000011920929D;
@ -393,13 +393,13 @@ public class QuakeClientPlayer
} }
} }
public static void minecraft_moveEntityWithHeading(EntityPlayer player, float sidemove, float forwardmove) public static void minecraft_moveEntityWithHeading(EntityPlayer player, float sidemove, float upmove, float forwardmove)
{ {
// take care of water and lava movement using default code // take care of water and lava movement using default code
if ((player.isInWater() && !player.capabilities.isFlying) if ((player.isInWater() && !player.capabilities.isFlying)
|| (player.isInLava() && !player.capabilities.isFlying)) || (player.isInLava() && !player.capabilities.isFlying))
{ {
player.moveEntityWithHeading(sidemove, forwardmove); player.travel(sidemove, upmove, forwardmove);
} }
else else
{ {
@ -407,7 +407,7 @@ public class QuakeClientPlayer
float momentumRetention = getSlipperiness(player); float momentumRetention = getSlipperiness(player);
// alter motionX/motionZ based on desired movement // alter motionX/motionZ based on desired movement
player.moveRelative(sidemove, forwardmove, minecraft_getMoveSpeed(player)); player.moveRelative(sidemove, upmove, forwardmove, minecraft_getMoveSpeed(player));
// make adjustments for ladder interaction // make adjustments for ladder interaction
minecraft_ApplyLadderPhysics(player); minecraft_ApplyLadderPhysics(player);
@ -440,7 +440,7 @@ public class QuakeClientPlayer
/** /**
* Moves the entity based on the specified heading. Args: strafe, forward * Moves the entity based on the specified heading. Args: strafe, forward
*/ */
public static boolean quake_moveEntityWithHeading(EntityPlayer player, float sidemove, float forwardmove) public static boolean quake_moveEntityWithHeading(EntityPlayer player, float sidemove, float upmove, float forwardmove)
{ {
// take care of lava movement using default code // take care of lava movement using default code
if ((player.isInLava() && !player.capabilities.isFlying)) if ((player.isInLava() && !player.capabilities.isFlying))
@ -450,7 +450,7 @@ public class QuakeClientPlayer
else if (player.isInWater() && !player.capabilities.isFlying) else if (player.isInWater() && !player.capabilities.isFlying)
{ {
if (ModConfig.SHARKING_ENABLED) if (ModConfig.SHARKING_ENABLED)
quake_WaterMove(player, sidemove, forwardmove); quake_WaterMove(player, sidemove, upmove, forwardmove);
else else
{ {
return false; return false;
@ -616,7 +616,7 @@ public class QuakeClientPlayer
} }
} }
private static void quake_WaterMove(EntityPlayer player, float sidemove, float forwardmove) private static void quake_WaterMove(EntityPlayer player, float sidemove, float upmove, float forwardmove)
{ {
double lastPosY = player.posY; double lastPosY = player.posY;
@ -628,7 +628,7 @@ public class QuakeClientPlayer
if (!isSharking || curspeed < 0.078F) if (!isSharking || curspeed < 0.078F)
{ {
minecraft_WaterMove(player, sidemove, forwardmove); minecraft_WaterMove(player, sidemove, upmove, forwardmove);
} }
else else
{ {