Created
April 28, 2017 23:18
-
-
Save Joedobo27/cec5d76bcf5c1f1568efecdb04f86688 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ************** | |
// Set size in the from: x, y, z. ALWAYS! sort them in ascending order regardless. | |
var toSetX = 10; | |
var toSetY = 10; | |
var toSetZ = 10; | |
// ************** | |
var ItemTemplateFactory = Packages.com.wurmonline.server.items.ItemTemplateFactory; | |
var ReflectionUtil = Packages.org.gotti.wurmunlimited.modloader.ReflectionUtil; | |
var Class = Packages.java.lang.Class; | |
var Integer = Packages.java.lang.Integer; | |
var ItemList = Packages.com.wurmonline.server.items.ItemList | |
var Logger = Packages.java.util.logging.Logger; | |
var logger = Logger.getLogger("com.joedobo27.scriptRunnerMods.resize-pelt"); | |
// The weird string converting methods are because JavaScript converts results to double when multiplying. | |
// Even trying to do JavaScript's Math.round/floor methods don't make the double into an equivalent Java "int". | |
// Further, I wasn't able to do a Java casting from this script runner tool. | |
var Double = Packages.java.lang.Double; | |
var toSetVolume = Math.floor(toSetX * toSetY * toSetZ); | |
var toSetVolume = Double.toString(toSetVolume); | |
var toSetVolume = toSetVolume.replace(".0", ""); | |
var toSetVolume = Integer.parseInt(toSetVolume, 10); | |
function onItemTemplatesCreated() { | |
var itemTemplates = ItemTemplateFactory.getInstance().getTemplates(); | |
var fieldCentimetersX = ReflectionUtil.getField(Class.forName("com.wurmonline.server.items.ItemTemplate"), "centimetersX"); | |
var fieldCentimetersY = ReflectionUtil.getField(Class.forName("com.wurmonline.server.items.ItemTemplate"), "centimetersY"); | |
var fieldCentimetersZ = ReflectionUtil.getField(Class.forName("com.wurmonline.server.items.ItemTemplate"), "centimetersZ"); | |
var fieldVolume = ReflectionUtil.getField(Class.forName("com.wurmonline.server.items.ItemTemplate"), "volume"); | |
var peltId = ItemList.pelt; | |
for (i = 0; i < itemTemplates.length; i++) { | |
if (itemTemplates[i].getTemplateId() == peltId ) { | |
ReflectionUtil.setPrivateField(itemTemplates[i], fieldCentimetersX, toSetX); | |
ReflectionUtil.setPrivateField(itemTemplates[i], fieldCentimetersY, toSetY); | |
ReflectionUtil.setPrivateField(itemTemplates[i], fieldCentimetersZ, toSetZ); | |
ReflectionUtil.setPrivateField(itemTemplates[i], fieldVolume, toSetVolume); | |
var centimetersX = ReflectionUtil.getPrivateField(itemTemplates[i], fieldCentimetersX); | |
var centimetersY = ReflectionUtil.getPrivateField(itemTemplates[i], fieldCentimetersY); | |
var centimetersZ = ReflectionUtil.getPrivateField(itemTemplates[i], fieldCentimetersZ); | |
var volume = ReflectionUtil.getPrivateField(itemTemplates[i], fieldVolume); | |
logger.info("The " + itemTemplates[i].getName() + " is now x, y, z, volume: " + Integer.toString(centimetersX) + ", " + Integer.toString(centimetersY) + ", " + Integer.toString(centimetersZ) + ", " + Integer.toString(volume) + "."); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment