Fixed inventory rollbacks not always returning correct item for placed blocks

This commit is contained in:
Intelli 2022-02-22 21:15:45 -07:00
parent c95bf3cc30
commit 4445c3c4a7
3 changed files with 16 additions and 2 deletions

View File

@ -873,7 +873,8 @@ public class LookupCommand {
int amount = Integer.parseInt(data[10]);
String rbd = ((Integer.parseInt(data[8]) == 2 || Integer.parseInt(data[8]) == 3) ? Color.STRIKETHROUGH : "");
String timeago = Util.getTimeSince(Integer.parseInt(time), unixtimestamp, true);
String dname = Util.nameFilter(Util.getType(Integer.parseInt(dtype)).name().toLowerCase(Locale.ROOT), ddata);
Material blockType = Util.itemFilter(Util.getType(Integer.parseInt(dtype)));
String dname = Util.nameFilter(blockType.name().toLowerCase(Locale.ROOT), ddata);
String selector = Selector.FIRST;
String tag = Color.WHITE + "-";

View File

@ -1037,6 +1037,7 @@ public class Rollback extends Queue {
int rolledBackInventory = Util.rolledBack((Integer) row[9], true);
if (rowType != null) {
if (inventoryRollback && ((rollbackType == 0 && rolledBackInventory == 0) || (rollbackType == 1 && rolledBackInventory == 1))) {
Material inventoryItem = Util.itemFilter(rowType);
int rowUserId = (Integer) row[2];
String rowUser = ConfigHandler.playerIdCacheReversed.get(rowUserId);
if (rowUser == null) {
@ -1065,7 +1066,7 @@ public class Rollback extends Queue {
}
int action = rollbackType == 0 ? (inventoryAction ^ 1) : inventoryAction;
ItemStack itemstack = new ItemStack(rowType, rowAmount, (short) rowData);
ItemStack itemstack = new ItemStack(inventoryItem, rowAmount, (short) rowData);
Object[] populatedStack = populateItemStack(itemstack, rowMetadata);
if (rowAction == ItemLogger.ITEM_REMOVE_ENDER || rowAction == ItemLogger.ITEM_ADD_ENDER) {
modifyContainerItems(containerType, player.getEnderChest(), (Integer) populatedStack[0], ((ItemStack) populatedStack[2]).clone(), action ^ 1);

View File

@ -1105,6 +1105,18 @@ public class Util extends Queue {
Chat.sendComponent(consoleSender, Color.RESET + "[CoreProtect] " + string + Chat.COMPONENT_TAG_OPEN + Chat.COMPONENT_POPUP + "| | " + Chat.COMPONENT_TAG_CLOSE);
}
public static Material itemFilter(Material material) {
if (material == null) {
return material;
}
if (!material.isItem() && material.name().contains("WALL_")) {
material = Material.valueOf(material.name().replace("WALL_", ""));
}
return material;
}
public static String nameFilter(String name, int data) {
if (name.equals("stone")) {
switch (data) {