/*******************************************************************************************************************
* Authors: SanAndreasP
* Copyright: SanAndreasP
* License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
* http://creativecommons.org/licenses/by-nc-sa/4.0/
*******************************************************************************************************************/
package de.sanandrew.core.manpack.transformer;
import de.sanandrew.core.manpack.init.ManPackLoadingPlugin;
import de.sanandrew.core.manpack.util.javatuples.Triplet;
import org.apache.logging.log4j.Level;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class ASMNames
{
private static final Map<String, String> MAPPINGS = new HashMap<>();
static final Pattern OWNERNAME = Pattern.compile("(\\S*)/(.*)");
public static final String MD_AABB_EXPAND = "net/minecraft/util/AxisAlignedBB/expand (DDD)Lnet/minecraft/util/AxisAlignedBB;";
public static final String MD_ANIMALCHEST_GET_STACK_IN_SLOT = "net/minecraft/inventory/AnimalChest/getStackInSlot (I)Lnet/minecraft/item/ItemStack;";
public static final String MD_DATAWATCHER_ADD_OBJECT = "net/minecraft/entity/DataWatcher/addObject (ILjava/lang/Object;)V";
public static final String MD_DATAWATCHER_GET_OBJ_STACK = "net/minecraft/entity/DataWatcher/getWatchableObjectItemStack (I)Lnet/minecraft/item/ItemStack;";
public static final String MD_DATAWATCHER_UPDATE_OBJ = "net/minecraft/entity/DataWatcher/updateObject (ILjava/lang/Object;)V";
public static final String MD_ENDERFACINGEVENT_INIT = "de/sanandrew/core/manpack/util/event/entity/EnderFacingEvent/<init> (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/monster/EntityEnderman;)V";
public static final String MD_ENDERMAN_SHOULD_ATTACK_PLAYER = "net/minecraft/entity/monster/EntityEnderman/shouldAttackPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z";
public static final String MD_ENTITY_GET_BOUNDING_BOX = "net/minecraft/entity/Entity/getBoundingBox ()Lnet/minecraft/util/AxisAlignedBB;";
public static final String MD_EVENT_BUS_POST = "cpw/mods/fml/common/eventhandler/EventBus/post (Lcpw/mods/fml/common/eventhandler/Event;)Z";
public static final String MD_HORSE_ENTITY_INIT = "net/minecraft/entity/passive/EntityHorse/entityInit ()V";
public static final String MD_HORSE_FUNC110232CE = "net/minecraft/entity/passive/EntityHorse/func_110232_cE ()V";
public static final String MD_HORSE_FUNC110241CB = "net/minecraft/entity/passive/EntityHorse/func_110241_cb ()I";
public static final String MD_HORSE_FUNC146085A = "net/minecraft/entity/passive/EntityHorse/func_146085_a (Lnet/minecraft/item/Item;)Z";
public static final String MD_HORSE_GET_TOTAL_ARMOR_VAL = "net/minecraft/entity/passive/EntityHorse/getTotalArmorValue ()I";
public static final String MD_HORSE_INTERACT = "net/minecraft/entity/passive/EntityHorse/interact (Lnet/minecraft/entity/player/EntityPlayer;)Z";
public static final String MD_HORSE_IS_SADDLED = "net/minecraft/entity/passive/EntityHorse/isHorseSaddled ()Z";
public static final String MD_HORSE_ON_INV_CHANGED = "net/minecraft/entity/passive/EntityHorse/onInventoryChanged (Lnet/minecraft/inventory/InventoryBasic;)V";
public static final String MD_HORSE_PLAY_SOUND = "net/minecraft/entity/passive/EntityHorse/playSound (Ljava/lang/String;FF)V";
public static final String MD_HORSE_SET_TEXTURE_PATH = "net/minecraft/entity/passive/EntityHorse/setHorseTexturePaths ()V";
public static final String MD_INTEGER_VALUE_OF = "java/lang/Integer/valueOf (I)Ljava/lang/Integer;";
public static final String MD_ITEMSTACK_GET_ITEM = "net/minecraft/item/ItemStack/getItem ()Lnet/minecraft/item/Item;";
public static final String MD_ITEMSTACK_GET_UNLOC_NAME = "net/minecraft/item/ItemStack/getUnlocalizedName ()Ljava/lang/String;";
public static final String MD_ITEMSTACK_INIT = "net/minecraft/item/ItemStack/<init> (Lnet/minecraft/item/Item;I)V";
public static final String MD_ITEMSTACK_IS_ITEM_EQUAL = "net/minecraft/item/ItemStack/isItemEqual (Lnet/minecraft/item/ItemStack;)Z";
public static final String MD_LIST_GET = "java/util/List/get (I)Ljava/lang/Object;";
public static final String MD_PLAYER_IS_SNEAKING = "net/minecraft/entity/player/EntityPlayer/isSneaking ()Z";
public static final String MD_PLAYER_UPDATE_RIDDEN = "net/minecraft/entity/player/EntityPlayer/updateRidden ()V";
public static final String MD_SAP_CAN_DISMOUNT_ON_INPUT = "net/minecraft/entity/Entity/_SAP_canDismountOnInput (Lnet/minecraft/entity/player/EntityPlayer;)Z";
public static final String MD_SAP_CAN_IMPACT_ON_LIQUID = "net/minecraft/entity/projectile/EntityThrowable/_SAP_canImpactOnLiquid ()Z";
public static final String MD_SAP_COLLENTITYCHKEVT_INIT = "de/sanandrew/core/manpack/util/event/entity/CollidingEntityCheckEvent/<init> (Lnet/minecraft/world/World;Ljava/util/List;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)V";
public static final String MD_SAP_ENTITY_GET_BOUNDING_BOX = "net/minecraft/entity/Entity/_SAP_getBoundingBox (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Lnet/minecraft/util/AxisAlignedBB;";
public static final String MD_SAP_GET_ARMOR_TEXTURE = "de/sanandrew/core/manpack/item/AItemHorseArmor/getArmorTexture (Lnet/minecraft/entity/passive/EntityHorse;Lnet/minecraft/item/ItemStack;)Ljava/lang/String;";
public static final String MD_SAP_GET_ARMOR_VALUE = "de/sanandrew/core/manpack/item/AItemHorseArmor/getArmorValue (Lnet/minecraft/entity/passive/EntityHorse;Lnet/minecraft/item/ItemStack;)I";
public static final String MD_SAP_GET_CUSTOM_ARMOR_ITEM = "net/minecraft/entity/passive/EntityHorse/_SAP_getCustomArmorItem ()Lnet/minecraft/item/ItemStack;";
public static final String MD_SAP_SET_CUSTOM_ARMOR_ITEM = "net/minecraft/entity/passive/EntityHorse/_SAP_setCustomArmorItem (Lnet/minecraft/item/ItemStack;)V";
public static final String MD_STRING_VALUE_OF = "java/lang/String/valueOf (Ljava/lang/Object;)Ljava/lang/String;";
public static final String MD_STRINGBUILDER_APPEND = "java/lang/StringBuilder/append (Ljava/lang/String;)Ljava/lang/StringBuilder;";
public static final String MD_STRINGBUILDER_INIT = "java/lang/StringBuilder/<init> (Ljava/lang/String;)V";
public static final String MD_STRINGBUILDER_TO_STRING = "java/lang/StringBuilder/toString ()Ljava/lang/String;";
public static final String MD_THROWABLE_ON_UPDATE = "net/minecraft/entity/projectile/EntityThrowable/onUpdate ()V";
public static final String MD_VEC3_CREATE_VECTOR_HELPER = "net/minecraft/util/Vec3/createVectorHelper (DDD)Lnet/minecraft/util/Vec3;";
public static final String MD_WORLD_GET_COLLIDING_BB = "net/minecraft/world/World/getCollidingBoundingBoxes (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List;";
public static final String MD_WORLD_GET_ENTITIES_EXCLUDE = "net/minecraft/world/World/getEntitiesWithinAABBExcludingEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List;";
public static final String MD_WORLD_RAY_TRACE_BLOCKS = "net/minecraft/world/World/rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition;";
public static final String MD_WORLD_RAY_TRACE_BLOCKS_Z = "net/minecraft/world/World/rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;Z)Lnet/minecraft/util/MovingObjectPosition;";
public static final String FD_HORSE_ARMOR_VALUES = "net/minecraft/entity/passive/EntityHorse/armorValues [I";
public static final String FD_HORSE_CHEST = "net/minecraft/entity/passive/EntityHorse/horseChest Lnet/minecraft/inventory/AnimalChest;";
public static final String FD_HORSE_DATAWATCHER = "net/minecraft/entity/passive/EntityHorse/dataWatcher Lnet/minecraft/entity/DataWatcher;";
public static final String FD_HORSE_FIELD110280BR = "net/minecraft/entity/passive/EntityHorse/field_110280_bR [Ljava/lang/String;";
public static final String FD_HORSE_FIELD110286BQ = "net/minecraft/entity/passive/EntityHorse/field_110286_bQ Ljava/lang/String;";
public static final String FD_INVPLAYER_ARMOR_INVENTORY = "net/minecraft/entity/player/InventoryPlayer/armorInventory [Lnet/minecraft/item/ItemStack;";
public static final String FD_ITEMS_DIAMOND_HORSE_ARMOR = "net/minecraft/init/Items/diamond_horse_armor Lnet/minecraft/item/Item;";
public static final String FD_ITEMS_IRON_HORSE_ARMOR = "net/minecraft/init/Items/iron_horse_armor Lnet/minecraft/item/Item;";
public static final String FD_ITEMS_IRON_SHOVEL = "net/minecraft/init/Items/iron_shovel Lnet/minecraft/item/Item;";
public static final String FD_PLAYER_INVENTORY = "net/minecraft/entity/player/EntityPlayer/inventory Lnet/minecraft/entity/player/InventoryPlayer;";
public static final String FD_PLAYER_RIDING_ENTITY = "net/minecraft/entity/player/EntityPlayer/ridingEntity Lnet/minecraft/entity/Entity;";
public static final String FD_PLAYER_WORLD_OBJ = "net/minecraft/entity/player/EntityPlayer/worldObj Lnet/minecraft/world/World;";
public static final String FD_SAPUTILS_EVENT_BUS = "de/sanandrew/core/manpack/util/helpers/SAPUtils/EVENT_BUS Lcpw/mods/fml/common/eventhandler/EventBus;";
public static final String FD_THROWABLE_MOTION_Z = "net/minecraft/entity/projectile/EntityThrowable/motionZ D";
public static final String FD_THROWABLE_WORLD_OBJ = "net/minecraft/entity/projectile/EntityThrowable/worldObj Lnet/minecraft/world/World;";
public static final String FD_WORLD_IS_REMOTE = "net/minecraft/world/World/isRemote Z";
public static final String CL_COLLIDING_ENTITY_CHECK_EVENT = "de/sanandrew/core/manpack/util/event/entity/CollidingEntityCheckEvent";
public static final String CL_ENDER_FACING_EVENT = "de/sanandrew/core/manpack/util/event/entity/EnderFacingEvent";
public static final String CL_ENTITY = "net/minecraft/entity/Entity";
public static final String CL_ITEM_HORSE_ARMOR = "de/sanandrew/core/manpack/item/AItemHorseArmor";
public static final String CL_ITEM_STACK = "net/minecraft/item/ItemStack";
public static final String CL_STRING_BUILDER = "java/lang/StringBuilder";
public static final String CL_T_AXIS_ALIGNED_BB = "Lnet/minecraft/util/AxisAlignedBB;";
public static final String CL_T_ENTITY = "Lnet/minecraft/entity/Entity;";
public static final String CL_T_ENTITY_HORSE = "Lnet/minecraft/entity/passive/EntityHorse;";
public static final String CL_T_ENTITY_PLAYER = "Lnet/minecraft/entity/player/EntityPlayer;";
public static final String CL_T_ENTITY_THROWABLE = "Lnet/minecraft/entity/projectile/EntityThrowable;";
public static final String CL_T_ITEM_STACK = "Lnet/minecraft/item/ItemStack;";
public static final String OR_SAP_ENTITY_GET_BOUNDING_BOX = "public " + MD_SAP_ENTITY_GET_BOUNDING_BOX;
public static final String OR_SAP_CAN_DISMOUNT_ON_INPUT = "public " + MD_SAP_CAN_DISMOUNT_ON_INPUT;
public static final String OR_SAP_CAN_IMPACT_ON_LIQUID = "public " + MD_SAP_CAN_IMPACT_ON_LIQUID;
static {
MAPPINGS.put(MD_ENDERMAN_SHOULD_ATTACK_PLAYER, "func_70821_d");
MAPPINGS.put(MD_WORLD_GET_COLLIDING_BB, "func_72945_a");
MAPPINGS.put(MD_AABB_EXPAND, "func_72314_b");
MAPPINGS.put(MD_WORLD_GET_ENTITIES_EXCLUDE, "func_72839_b");
MAPPINGS.put(MD_ENTITY_GET_BOUNDING_BOX, "func_70046_E");
MAPPINGS.put(MD_THROWABLE_ON_UPDATE, "func_70071_h_");
MAPPINGS.put(MD_VEC3_CREATE_VECTOR_HELPER, "func_72443_a");
MAPPINGS.put(MD_WORLD_RAY_TRACE_BLOCKS, "func_72933_a");
MAPPINGS.put(MD_WORLD_RAY_TRACE_BLOCKS_Z, "func_72901_a");
MAPPINGS.put(MD_PLAYER_IS_SNEAKING, "func_70093_af");
MAPPINGS.put(MD_PLAYER_UPDATE_RIDDEN, "func_70098_U");
MAPPINGS.put(MD_HORSE_INTERACT, "func_70085_c");
MAPPINGS.put(MD_HORSE_FUNC146085A, "func_146085_a");
MAPPINGS.put(MD_HORSE_ENTITY_INIT, "func_70088_a");
MAPPINGS.put(MD_HORSE_FUNC110232CE, "func_110232_cE");
MAPPINGS.put(MD_HORSE_ON_INV_CHANGED, "func_76316_a");
MAPPINGS.put(MD_HORSE_GET_TOTAL_ARMOR_VAL, "func_70658_aO");
MAPPINGS.put(MD_HORSE_SET_TEXTURE_PATH, "func_110247_cG");
MAPPINGS.put(MD_DATAWATCHER_GET_OBJ_STACK, "func_82710_f");
MAPPINGS.put(MD_DATAWATCHER_UPDATE_OBJ, "func_75692_b");
MAPPINGS.put(MD_HORSE_FUNC110241CB, "func_110241_cb");
MAPPINGS.put(MD_ITEMSTACK_GET_ITEM, "func_77973_b");
MAPPINGS.put(MD_HORSE_IS_SADDLED, "func_110257_ck");
MAPPINGS.put(MD_HORSE_PLAY_SOUND, "func_85030_a");
MAPPINGS.put(MD_ITEMSTACK_IS_ITEM_EQUAL, "func_77969_a");
MAPPINGS.put(MD_ITEMSTACK_GET_UNLOC_NAME, "func_77977_a");
MAPPINGS.put(MD_ANIMALCHEST_GET_STACK_IN_SLOT, "func_70301_a");
MAPPINGS.put(MD_DATAWATCHER_ADD_OBJECT, "func_75682_a");
MAPPINGS.put(FD_PLAYER_INVENTORY, "field_71071_by");
MAPPINGS.put(FD_INVPLAYER_ARMOR_INVENTORY, "field_70460_b");
MAPPINGS.put(FD_THROWABLE_MOTION_Z, "field_70179_y");
MAPPINGS.put(FD_THROWABLE_WORLD_OBJ, "field_70170_p");
MAPPINGS.put(FD_PLAYER_WORLD_OBJ, "field_70170_p");
MAPPINGS.put(FD_WORLD_IS_REMOTE, "field_72995_K");
MAPPINGS.put(FD_PLAYER_RIDING_ENTITY, "field_70154_o");
MAPPINGS.put(FD_HORSE_DATAWATCHER, "field_70180_af");
MAPPINGS.put(FD_ITEMS_IRON_SHOVEL, "field_151037_a");
MAPPINGS.put(FD_HORSE_ARMOR_VALUES, "field_110272_by");
MAPPINGS.put(FD_HORSE_FIELD110280BR, "field_110280_bR");
MAPPINGS.put(FD_HORSE_FIELD110286BQ, "field_110286_bQ");
MAPPINGS.put(FD_HORSE_CHEST, "field_110296_bG");
MAPPINGS.put(FD_ITEMS_IRON_HORSE_ARMOR, "field_151138_bX");
MAPPINGS.put(FD_ITEMS_DIAMOND_HORSE_ARMOR, "field_151125_bZ");
}
public static Triplet<String, String, String[]> getSrgNameMd(String method) {
Matcher mtch = OWNERNAME.matcher(method);
if( !mtch.find() ) {
ManPackLoadingPlugin.MOD_LOG.log(Level.FATAL, "Method string does not match pattern!");
throw new RuntimeException("SRG-Name not found!");
}
String srgName = ASMHelper.isMCP ? null : MAPPINGS.get(method);
String owner = mtch.group(1);
String[] splitMd = mtch.group(2).split(" ");
String name = srgName == null ? splitMd[0] : srgName;
String[] additData = Arrays.copyOfRange(splitMd, 1, splitMd.length);
return Triplet.with(owner, name, additData);
}
public static Triplet<String, String, String> getSrgNameFd(String field) {
Matcher mtch = OWNERNAME.matcher(field);
if( !mtch.find() ) {
ManPackLoadingPlugin.MOD_LOG.log(Level.FATAL, "Field string does not match pattern!");
throw new RuntimeException("SRG-Name not found!");
}
String srgName = ASMHelper.isMCP ? null : MAPPINGS.get(field);
String owner = mtch.group(1);
String[] splitFd = mtch.group(2).split(" ");
String name = srgName == null ? splitFd[0] : srgName;
String desc = splitFd[1];
return Triplet.with(owner, name, desc);
}
}