From 307b2cbb4a08daad591b661c44b80b48c22b5af4 Mon Sep 17 00:00:00 2001 From: Clisprail Date: Sat, 12 Apr 2014 00:48:37 +0200 Subject: [PATCH] Multiplier helper class --- .../environment/api/utils/Multipliers.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 parabotv2/src/org/parabot/environment/api/utils/Multipliers.java diff --git a/parabotv2/src/org/parabot/environment/api/utils/Multipliers.java b/parabotv2/src/org/parabot/environment/api/utils/Multipliers.java new file mode 100644 index 0000000..2a22968 --- /dev/null +++ b/parabotv2/src/org/parabot/environment/api/utils/Multipliers.java @@ -0,0 +1,46 @@ +package org.parabot.environment.api.utils; + +import java.math.BigInteger; + +/** + * + * Helper class for calculating setters for clients that uses multipliers + * + * @author Everel + * + */ +public class Multipliers { + + /** + * + * @param multiplier + * the multiplier + * @param set + * the value you want to set + * @return the correct setter value + */ + public static int getIntSetter(int multiplier, int set) { + int bits = 32; + BigInteger quotient = new BigInteger(Integer.toString(multiplier)); + BigInteger shift = BigInteger.ONE.shiftLeft(bits); + int value = quotient.modInverse(shift).intValue(); + return value * set; + } + + /** + * + * @param multiplier + * the multiplier + * @param set + * the value you want to set + * @return the correct setter value + */ + public static long getLongSetter(long multiplier, long set) { + int bits = 64; + BigInteger quotient = new BigInteger(Long.toString(multiplier)); + BigInteger shift = BigInteger.ONE.shiftLeft(bits); + long value = quotient.modInverse(shift).longValue(); + return value * set; + } + +}