21 Posts
Posts
0
Warning level
1
Likes
0
Dislikes
Joined: 2022-04-24
Quote from GFX Tom on April 24, 2022, 1:32 pmI've always liked being able to reference an item in code via static ints.
I have a file named Items.java, and I simply reference Items.RUNE_ARROW for example.
Well if you want this too, I made this to generate them.
Spoiler for View Code:Code:public static void main(String[] args) { try { File dumpedDefs = new File("./DumpedDefs.txt"); FileWriter fw = new FileWriter(dumpedDefs, false); //Loading ints into definitions[] init(); HashMap<String, ItemDefinition> map = new HashMap<>(); // Adding definitions into a hashmap in reverse // This replaces items that have duplicate names such as tinderbox // With the version which has the lowest ID // The key for the map is the name of the item for (int i = definitions.length - 1; i > 0; i--) { ItemDefinition itemDef = forId(i); if (!itemDef.description.contains("null")) { String stack = itemDef.isStackable() ? "_STACK" : ""; String noted = itemDef.isNoted() ? "_NOTED" : ""; String name = itemDef.name.replaceAll(" ", "_") .replaceAll("'", "") .replaceAll("!", "") .replaceAll("%", "") .replaceAll("-", "_") .replace("+", "PLUS") .replace("(", "") .replace(")", "") .replace(".", "_") .replace("&", "_") .replace("/", "_OF_") .replace(",", "_") .replace("?", "") .replaceAll("\"", "") + (itemDef.isNoted() ? noted : stack); if (Character.isDigit(name.charAt(0))) { name = "_" + name; } map.put(name, itemDef); } } ArrayList<Integer> itemArray = new ArrayList<>(); // Adding all of the items from the hashmap into an array that we can sort for (String key : map.keySet()) { ItemDefinition itemDef = map.get(key); itemArray.add(itemDef.id); } // printing the unsorted ArrayList System.out.println("Before Sorting: " + itemArray); // Sorting ArrayList in ascending Order Collections.sort(itemArray); // printing the sorted ArrayList System.out.println("After Sorting: " + itemArray); // Writing the file and removing junk from the name for (Integer integer : itemArray) { ItemDefinition itemDef = forId(integer); String stack = itemDef.isStackable() ? "_STACK" : ""; String noted = itemDef.isNoted() ? "_NOTED" : ""; String name = itemDef.name.replaceAll(" ", "_") .replaceAll("'", "") .replaceAll("!", "") .replaceAll("%", "") .replaceAll("-", "_") .replace("+", "PLUS") .replace("(", "") .replace(")", "") .replace(".", "_") .replace("&", "_") .replace("/", "_OF_") .replace(",", "_") .replace("?", "") .replaceAll("\"", "") + (itemDef.isNoted() ? noted : stack); if (Character.isDigit(name.charAt(0))) { name = "_" + name; } fw.write("public static int " + name.toUpperCase() + " = " + itemDef.id + "; \n"); } fw.close(); } catch (Exception e) { e.printStackTrace(); } }
Spoiler for Example of generated ints:Code:public static int TOOLKIT = 1; public static int CANNONBALL_STACK = 2; public static int NULODIONS_NOTES = 3; public static int AMMO_MOULD = 4; public static int INSTRUCTION_MANUAL = 5; public static int CANNON_BASE = 6; public static int CANNON_BASE_NOTED = 7; public static int CANNON_STAND = 8; public static int CANNON_STAND_NOTED = 9; public static int CANNON_BARRELS = 10; public static int CANNON_BARRELS_NOTED = 11; public static int CANNON_FURNACE = 12; public static int CANNON_FURNACE_NOTED = 13; public static int RAILING_STACK = 14; public static int HOLY_TABLE_NAPKIN = 15; public static int MAGIC_WHISTLE = 16; public static int GRAIL_BELL = 17; public static int MAGIC_GOLD_FEATHER = 18; public static int HOLY_LONGBOW = 20; public static int COPSE_LONGBOW = 21; public static int ELEGANT_LONGBOW = 22; public static int MALEVOLENT_LONGBOW = 23; public static int RAT_POISON = 24; public static int RED_VINE_WORM_STACK = 25; public static int FISHING_TROPHY = 26; public static int FISHING_PASS = 27; public static int INSECT_REPELLENT = 28; public static int TINDERBOX = 29; public static int BUCKET_OF_WAX = 30; public static int LIT_BLACK_CANDLE = 32; public static int LIT_CANDLE = 33; public static int LIT_CANDLE_STACK = 34; public static int EXCALIBUR = 35; public static int CANDLE = 36; public static int CANDLE_NOTED = 37;
Thanks boiz
I've always liked being able to reference an item in code via static ints.
I have a file named Items.java, and I simply reference Items.RUNE_ARROW for example.
Well if you want this too, I made this to generate them.
Spoiler for View Code:
Code:
public static void main(String[] args) {
try {
File dumpedDefs = new File("./DumpedDefs.txt");
FileWriter fw = new FileWriter(dumpedDefs, false);
//Loading ints into definitions[]
init();
HashMap<String, ItemDefinition> map = new HashMap<>();
// Adding definitions into a hashmap in reverse
// This replaces items that have duplicate names such as tinderbox
// With the version which has the lowest ID
// The key for the map is the name of the item
for (int i = definitions.length - 1; i > 0; i--) {
ItemDefinition itemDef = forId(i);
if (!itemDef.description.contains("null")) {
String stack = itemDef.isStackable() ? "_STACK" : "";
String noted = itemDef.isNoted() ? "_NOTED" : "";
String name = itemDef.name.replaceAll(" ", "_")
.replaceAll("'", "")
.replaceAll("!", "")
.replaceAll("%", "")
.replaceAll("-", "_")
.replace("+", "PLUS")
.replace("(", "")
.replace(")", "")
.replace(".", "_")
.replace("&", "_")
.replace("/", "_OF_")
.replace(",", "_")
.replace("?", "")
.replaceAll("\"", "")
+ (itemDef.isNoted() ? noted : stack);
if (Character.isDigit(name.charAt(0))) {
name = "_" + name;
}
map.put(name, itemDef);
}
}
ArrayList<Integer> itemArray = new ArrayList<>();
// Adding all of the items from the hashmap into an array that we can sort
for (String key : map.keySet()) {
ItemDefinition itemDef = map.get(key);
itemArray.add(itemDef.id);
}
// printing the unsorted ArrayList
System.out.println("Before Sorting: " + itemArray);
// Sorting ArrayList in ascending Order
Collections.sort(itemArray);
// printing the sorted ArrayList
System.out.println("After Sorting: " + itemArray);
// Writing the file and removing junk from the name
for (Integer integer : itemArray) {
ItemDefinition itemDef = forId(integer);
String stack = itemDef.isStackable() ? "_STACK" : "";
String noted = itemDef.isNoted() ? "_NOTED" : "";
String name = itemDef.name.replaceAll(" ", "_")
.replaceAll("'", "")
.replaceAll("!", "")
.replaceAll("%", "")
.replaceAll("-", "_")
.replace("+", "PLUS")
.replace("(", "")
.replace(")", "")
.replace(".", "_")
.replace("&", "_")
.replace("/", "_OF_")
.replace(",", "_")
.replace("?", "")
.replaceAll("\"", "")
+ (itemDef.isNoted() ? noted : stack);
if (Character.isDigit(name.charAt(0))) {
name = "_" + name;
}
fw.write("public static int " + name.toUpperCase() + " = " + itemDef.id + "; \n");
}
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Spoiler for Example of generated ints:
Code:
public static int TOOLKIT = 1;
public static int CANNONBALL_STACK = 2;
public static int NULODIONS_NOTES = 3;
public static int AMMO_MOULD = 4;
public static int INSTRUCTION_MANUAL = 5;
public static int CANNON_BASE = 6;
public static int CANNON_BASE_NOTED = 7;
public static int CANNON_STAND = 8;
public static int CANNON_STAND_NOTED = 9;
public static int CANNON_BARRELS = 10;
public static int CANNON_BARRELS_NOTED = 11;
public static int CANNON_FURNACE = 12;
public static int CANNON_FURNACE_NOTED = 13;
public static int RAILING_STACK = 14;
public static int HOLY_TABLE_NAPKIN = 15;
public static int MAGIC_WHISTLE = 16;
public static int GRAIL_BELL = 17;
public static int MAGIC_GOLD_FEATHER = 18;
public static int HOLY_LONGBOW = 20;
public static int COPSE_LONGBOW = 21;
public static int ELEGANT_LONGBOW = 22;
public static int MALEVOLENT_LONGBOW = 23;
public static int RAT_POISON = 24;
public static int RED_VINE_WORM_STACK = 25;
public static int FISHING_TROPHY = 26;
public static int FISHING_PASS = 27;
public static int INSECT_REPELLENT = 28;
public static int TINDERBOX = 29;
public static int BUCKET_OF_WAX = 30;
public static int LIT_BLACK_CANDLE = 32;
public static int LIT_CANDLE = 33;
public static int LIT_CANDLE_STACK = 34;
public static int EXCALIBUR = 35;
public static int CANDLE = 36;
public static int CANDLE_NOTED = 37;
Thanks boiz