Enum replacer (#617)

* Constants

* Update Enchanting.java

* Update Beverages.java

* Create ConstantReplacer.java
This commit is contained in:
MatthewBishop
2023-02-09 14:48:17 -05:00
committed by GitHub
parent 55ca851d07
commit 58796561a3
3 changed files with 134 additions and 45 deletions
@@ -5,6 +5,7 @@ import java.util.Map;
import com.rs2.Constants;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticItemList.*;
public class Enchanting {
@@ -16,28 +17,26 @@ public class Enchanting {
public enum Enchant {
SAPPHIRERING(1637, 2550, 1),
SAPPHIREAMULET(1694, 1727, 1),
SAPPHIRENECKLACE(1656, 3853, 1),
EMERALDRING(1639, 2552, 2),
EMERALDAMULET(1696, 1729, 2),
EMERALDNECKLACE(1658, 5521, 2),
RUBYRING(1641, 2568, 3),
RUBYAMULET(1698, 1725, 3),
SAPPHIRERING(SAPPHIRE_RING, RING_OF_RECOIL, 1),
SAPPHIREAMULET(SAPPHIRE_AMULET_1694, AMULET_OF_MAGIC, 1),
SAPPHIRENECKLACE(SAPPHIRE_NECKLACE, GAMES_NECKLACE8, 1),
EMERALDRING(EMERALD_RING, RING_OF_DUELING8, 2),
EMERALDAMULET(EMERALD_AMULET_1696, AMULET_OF_DEFENCE, 2),
EMERALDNECKLACE(EMERALD_NECKLACE, BINDING_NECKLACE, 2),
RUBYRING(RUBY_RING, RING_OF_FORGING, 3),
RUBYAMULET(RUBY_AMULET_1698, AMULET_OF_STRENGTH, 3),
// RUBYNECKLACE(1660, 11194, 47, 59, 720, 115, 3),
DIAMONDRING(1643, 2570, 4),
DIAMONDAMULET(1700, 1731, 4),
DIAMONDRING(DIAMOND_RING, RING_OF_LIFE, 4),
DIAMONDAMULET(DIAMOND_AMULET_1700, AMULET_OF_POWER, 4),
// DIAMONDNECKLACE(1662, 11090, 57, 67, 720, 115, 4),
DRAGONSTONERING(1645, 2572, 5),
DRAGONSTONEAMULET(1702, 1704, 5),
DRAGONSTONERING(DRAGONSTONE_RING, RING_OF_WEALTH, 5),
DRAGONSTONEAMULET(DRAGONSTONE_AMMY_1702, AMULET_OF_GLORY, 5),
// DRAGONSTONENECKLACE(1664, 11105, 68, 78, 721, 116, 5),
ONYXRING(6575, 6583, 6),
ONYXAMULET(6581, 6585, 6);
ONYXRING(ONYX_RING_6575, RING_OF_STONE, 6),
ONYXAMULET(ONYX_AMULET_6581, AMULET_OF_FURY, 6);
// ONYXNECKLACE(6577, 11128, 87, 97, 721, 452, 6)
int unenchanted, enchanted, reqEnchantmentLevel;
@@ -74,18 +73,12 @@ public class Enchanting {
}
public static enum EnchantSpell {
SAPPHIRE(1155, 7, 18, 719, 114, 1,
555, 1, 564, 1, -1, 0),
EMERALD(1165, 27, 37, 719, 114, 2,
556, 3, 564, 1, -1, 0),
RUBY(1176, 47, 59, 720, 115, 3,
554, 5, 564, 1, -1, 0),
DIAMOND(1180, 57, 67, 720, 115, 4,
557, 10, 564, 1, -1, 0),
DRAGONSTONE(1187, 68, 78, 721, 116, 5,
555, 15, 557, 15, 564, 1),
ONYX(6003, 87, 97, 721, 452, 6,
557, 20, 554, 20, 564, 1);
SAPPHIRE(1155, 7, 18, 719, 114, 1, WATER_RUNE, 1, COSMIC_RUNE, 1, -1, 0),
EMERALD(1165, 27, 37, 719, 114, 2, AIR_RUNE, 3, COSMIC_RUNE, 1, -1, 0),
RUBY(1176, 47, 59, 720, 115, 3, FIRE_RUNE, 5, COSMIC_RUNE, 1, -1, 0),
DIAMOND(1180, 57, 67, 720, 115, 4, EARTH_RUNE, 10, COSMIC_RUNE, 1, -1, 0),
DRAGONSTONE(1187, 68, 78, 721, 116, 5, WATER_RUNE, 15, EARTH_RUNE, 15, COSMIC_RUNE, 1),
ONYX(6003, 87, 97, 721, 452, 6, EARTH_RUNE, 20, FIRE_RUNE, 20, COSMIC_RUNE, 1);
int spell, levelReq, xp, anim, gfx, enchantmentLevel;
int reqRune1, reqAmtRune1, reqRune2, reqAmtRune2, reqRune3, reqAmtRune3;
@@ -4,25 +4,23 @@ import com.rs2.Constants;
import com.rs2.event.*;
import com.rs2.game.players.Player;
import com.rs2.util.Misc;
import static com.rs2.game.content.StaticItemList.*;
public class Beverages {
private static final int BEER_GLASS = 1919;
public static enum beverageData {
BEER(1917, BEER_GLASS, 829, true, false, false, false),
BEER1(7740, BEER_GLASS, 829, true, false, false, false),
GROG(1915, BEER_GLASS, 829, true, false, false, false),
BANDITS_BREW(4627, BEER_GLASS, 829, true, false, false, false),
DRAGON_BITTER(1911, BEER_GLASS, 829, true, false, false, false),
CIDER(7752,BEER_GLASS, 829, true, false, false, false),
MATURE_CIDER(5765, BEER_GLASS, 829, true, false, false, false),
MOONLIGHT_MEAD(7750, BEER_GLASS, 829, true, false, false, false),
DWARVEN_STOUT(1913, BEER_GLASS, 829, true, false, false, false),
GREENMANS_ALE(1909, BEER_GLASS, 829, true, false, false, false),
CHEFS_DELIGHT(7754, BEER_GLASS, 829, true, false, false, false),
ASGARNIAN_ALE(1905, BEER_GLASS, 829, true, false, false, false),
WIZARDS_MIND_BOMB(1907, BEER_GLASS, 829, true, false, false, false);
BEER_(BEER, BEER_GLASS, 829, true, false, false, false),
BEER1_(BEER_7740, BEER_GLASS, 829, true, false, false, false),
GROG_(GROG, BEER_GLASS, 829, true, false, false, false),
BANDITS_BREW_(BANDITS_BREW, BEER_GLASS, 829, true, false, false, false),
DRAGON_BITTER_(DRAGON_BITTER, BEER_GLASS, 829, true, false, false, false),
CIDER_(CIDER_7752, BEER_GLASS, 829, true, false, false, false),
MATURE_CIDER_(MATURE_CIDER, BEER_GLASS, 829, true, false, false, false),
MOONLIGHT_MEAD_(MOONLIGHT_MEAD_7750, BEER_GLASS, 829, true, false, false, false),
DWARVEN_STOUT_(DWARVEN_STOUT, BEER_GLASS, 829, true, false, false, false),
GREENMANS_ALE_(GREENMANS_ALE, BEER_GLASS, 829, true, false, false, false),
CHEFS_DELIGHT_(CHEFS_DELIGHT_7754, BEER_GLASS, 829, true, false, false, false),
ASGARNIAN_ALE_(ASGARNIAN_ALE, BEER_GLASS, 829, true, false, false, false),
WIZARDS_MIND_BOMB_(WIZARDS_MIND_BOMB, BEER_GLASS, 829, true, false, false, false);
private int bevId, replacement, bevAnim;
private boolean effect1, effect2, effect3, effect4;
@@ -0,0 +1,98 @@
package com.rs2.util;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import com.rs2.game.content.StaticItemList;
import com.rs2.game.content.StaticNpcList;
import com.rs2.game.content.StaticObjectList;
/**
* Introduces constants into an enum.
*
* @author Advocatus
*
*/
public class ConstantReplacer {
private static String [] skipped = { "bevAnim", "effect1", "effect2", "effect3", "effect4" };
private static String enum_clazz = "com.rs2.game.content.consumables.Beverages$beverageData";
public static void main(String[] args) throws Exception {
Map<Integer, String> items = buildNameMap(StaticItemList.class);
Map<Integer, String> npcs = buildNameMap(StaticNpcList.class);
Map<Integer, String> objects = buildNameMap(StaticObjectList.class);
Class<?> c = Class.forName(enum_clazz);
if (!c.isEnum()) {
System.err.println(enum_clazz + " is not an an enum.");
return;
}
if(skipped == null)
buildSkipped(c);
Field enumfield = c.getDeclaredField("ENUM$VALUES");
enumfield.setAccessible(true);
Enum[] values = (Enum[]) enumfield.get(null);
Field[] flds = c.getDeclaredFields();
List<Field> vars = new LinkedList<>();
for (Field f : flds) {
if (!f.isEnumConstant() && !Modifier.isStatic(f.getModifiers())) {
vars.add(f);
}
}
for (Enum m : values) {
String out = m.name() + "(";
for (Field f : vars) {
f.setAccessible(true);
if(f.getGenericType().getTypeName() == "int")
out += ((!skip(f.getName()) ? items.get(f.getInt(m)) : f.getInt(m)) + ", ");
else
out += f.get(m) + ", ";
}
out = out.substring(0, out.length() - 2);
out += "),";
System.out.println(out);
}
}
private static void buildSkipped(Class<?> c) throws Exception {
Field[] flds = c.getDeclaredFields();
String out = ("private static String [] skipped = { ");
for (Field f : flds) {
if (!f.isEnumConstant() && !Modifier.isStatic(f.getModifiers())) {
out += ("\"" + f.getName() + "\", ");
}
}
out = out.substring(0, out.length() - 3);
out += ("\" };");
System.out.println(out);
}
private static Map<Integer, String> buildNameMap(Class clazz)
throws IllegalArgumentException, IllegalAccessException {
Field[] declaredFields = clazz.getDeclaredFields();
Map<Integer, String> names = new HashMap<>();
for (Field field : declaredFields) {
if (Modifier.isStatic(field.getModifiers())) {
names.put(field.getInt(null), field.getName());
}
}
return names;
}
private static boolean skip(String string) {
for (String s : skipped) {
if (string.equalsIgnoreCase(s)) {
return true;
}
}
return false;
}
}