Fixed item frame transactions not logging BlockFace data
This commit is contained in:
parent
c652ce852f
commit
527be90249
10 changed files with 72 additions and 30 deletions
|
|
@ -1220,9 +1220,9 @@ public class Util extends Queue {
|
|||
return newVersion(convertArray(oldVersionSplit), convertArray(currentVersionSplit));
|
||||
}
|
||||
|
||||
public static Map<Integer, Object> serializeItemStackLegacy(ItemStack itemStack, int slot) {
|
||||
public static Map<Integer, Object> serializeItemStackLegacy(ItemStack itemStack, String faceData, int slot) {
|
||||
Map<Integer, Object> result = new HashMap<>();
|
||||
Map<String, Object> itemMap = serializeItemStack(itemStack, slot);
|
||||
Map<String, Object> itemMap = serializeItemStack(itemStack, faceData, slot);
|
||||
if (itemMap.size() > 1) {
|
||||
result.put(0, itemMap.get("0"));
|
||||
result.put(1, itemMap.get("1"));
|
||||
|
|
@ -1245,11 +1245,11 @@ public class Util extends Queue {
|
|||
return result;
|
||||
}
|
||||
|
||||
public static Map<String, Object> serializeItemStack(ItemStack itemStack, int slot) {
|
||||
public static Map<String, Object> serializeItemStack(ItemStack itemStack, String faceData, int slot) {
|
||||
Map<String, Object> itemMap = new HashMap<>();
|
||||
if (itemStack != null && !itemStack.getType().equals(Material.AIR)) {
|
||||
ItemStack item = itemStack.clone();
|
||||
List<List<Map<String, Object>>> metadata = ItemMetaHandler.seralize(item, null, slot);
|
||||
List<List<Map<String, Object>>> metadata = ItemMetaHandler.seralize(item, null, faceData, slot);
|
||||
item.setItemMeta(null);
|
||||
itemMap.put("0", item.serialize());
|
||||
itemMap.put("1", metadata);
|
||||
|
|
@ -1269,7 +1269,7 @@ public class Util extends Queue {
|
|||
List<List<Map<String, Object>>> metadata = (List<List<Map<String, Object>>>) itemMap.get("1");
|
||||
|
||||
Object[] populatedStack = Rollback.populateItemStack(item, metadata);
|
||||
result = (ItemStack) populatedStack[1];
|
||||
result = (ItemStack) populatedStack[2];
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
@ -1298,7 +1298,7 @@ public class Util extends Queue {
|
|||
ItemStack[] inventory = shulkerBox.getSnapshotInventory().getStorageContents();
|
||||
int slot = 0;
|
||||
for (ItemStack itemStack : inventory) {
|
||||
Map<Integer, Object> itemMap = serializeItemStackLegacy(itemStack, slot);
|
||||
Map<Integer, Object> itemMap = serializeItemStackLegacy(itemStack, null, slot);
|
||||
if (itemMap.size() > 0) {
|
||||
meta.add(itemMap);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@ public class EntityUtil {
|
|||
@SuppressWarnings("unchecked")
|
||||
List<List<Map<String, Object>>> metadata = (List<List<Map<String, Object>>>) itemMap.get(1);
|
||||
Object[] populatedStack = Rollback.populateItemStack(result, metadata);
|
||||
result = (ItemStack) populatedStack[1];
|
||||
result = (ItemStack) populatedStack[2];
|
||||
int uses = (int) recipe.get(1);
|
||||
int maxUses = (int) recipe.get(2);
|
||||
boolean experienceReward = (boolean) recipe.get(3);
|
||||
|
|
@ -365,7 +365,7 @@ public class EntityUtil {
|
|||
@SuppressWarnings("unchecked")
|
||||
List<List<Map<String, Object>>> itemMetaData = (List<List<Map<String, Object>>>) ingredientMap.get(1);
|
||||
populatedStack = Rollback.populateItemStack(item, itemMetaData);
|
||||
item = (ItemStack) populatedStack[1];
|
||||
item = (ItemStack) populatedStack[2];
|
||||
merchantIngredients.add(item);
|
||||
}
|
||||
MerchantRecipe merchantRecipe = new MerchantRecipe(result, uses, maxUses, experienceReward);
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public class ItemMetaHandler {
|
|||
return result.toString();
|
||||
}
|
||||
|
||||
public static List<List<Map<String, Object>>> seralize(ItemStack item, Material type, int slot) {
|
||||
public static List<List<Map<String, Object>>> seralize(ItemStack item, Material type, String faceData, int slot) {
|
||||
List<List<Map<String, Object>>> metadata = new ArrayList<>();
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
List<Object> modifiers = new ArrayList<>();
|
||||
|
|
@ -210,7 +210,7 @@ public class ItemMetaHandler {
|
|||
list = new ArrayList<>();
|
||||
|
||||
for (ItemStack chargedProjectile : subMeta.getChargedProjectiles()) {
|
||||
Map<String, Object> itemMap = Util.serializeItemStack(chargedProjectile, slot);
|
||||
Map<String, Object> itemMap = Util.serializeItemStack(chargedProjectile, null, slot);
|
||||
if (itemMap.size() > 0) {
|
||||
list.add(itemMap);
|
||||
}
|
||||
|
|
@ -246,6 +246,14 @@ public class ItemMetaHandler {
|
|||
metadata.add(list);
|
||||
}
|
||||
|
||||
if (faceData != null && faceData.length() > 0) {
|
||||
Map<String, Object> meta = new HashMap<>();
|
||||
meta.put("facing", faceData);
|
||||
list = new ArrayList<>();
|
||||
list.add(meta);
|
||||
metadata.add(list);
|
||||
}
|
||||
|
||||
if (modifiers.size() > 0) {
|
||||
Map<String, Object> meta = new HashMap<>();
|
||||
meta.put("modifiers", modifiers);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue