Skip to content

Instantly share code, notes, and snippets.

@Joedobo27
Created April 28, 2017 23:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Joedobo27/cec5d76bcf5c1f1568efecdb04f86688 to your computer and use it in GitHub Desktop.
Save Joedobo27/cec5d76bcf5c1f1568efecdb04f86688 to your computer and use it in GitHub Desktop.
// **************
// 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