forked from LogBlock/LogBlock
Improve rollback ability by accepting similar blocks to the expected one
For example grass_block instead of dirt
This commit is contained in:
@ -380,7 +380,7 @@ public class WorldEditor implements Runnable {
|
||||
return PerformResult.NO_ACTION;
|
||||
}
|
||||
}
|
||||
if (!forceReplace && block.getType() != setBlock.getMaterial() && !block.isEmpty() && !replaceAnyway.contains(block.getType())) {
|
||||
if (!forceReplace && !BukkitUtils.isSimilarForRollback(setBlock.getMaterial(), block.getType()) && !block.isEmpty() && !replaceAnyway.contains(block.getType())) {
|
||||
return PerformResult.NO_ACTION;
|
||||
}
|
||||
if (state instanceof Container && replacedBlock.getMaterial() != block.getType()) {
|
||||
|
@ -964,4 +964,32 @@ public class BukkitUtils {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isSimilarForRollback(Material expected, Material found) {
|
||||
if (expected == found) {
|
||||
return true;
|
||||
}
|
||||
switch (expected) {
|
||||
case DIRT:
|
||||
case MYCELIUM:
|
||||
case FARMLAND:
|
||||
case GRASS_BLOCK:
|
||||
case PODZOL:
|
||||
case GRASS_PATH:
|
||||
return found == Material.DIRT || found == Material.MYCELIUM || found == Material.FARMLAND || found == Material.GRASS_BLOCK || found == Material.PODZOL || found == Material.GRASS_PATH;
|
||||
case BAMBOO:
|
||||
case BAMBOO_SAPLING:
|
||||
return found == Material.BAMBOO || found == Material.BAMBOO_SAPLING;
|
||||
case SPONGE:
|
||||
case WET_SPONGE:
|
||||
return found == Material.SPONGE || found == Material.WET_SPONGE;
|
||||
case MELON_STEM:
|
||||
case ATTACHED_MELON_STEM:
|
||||
return found == Material.MELON_STEM || found == Material.ATTACHED_MELON_STEM;
|
||||
case PUMPKIN_STEM:
|
||||
case ATTACHED_PUMPKIN_STEM:
|
||||
return found == Material.PUMPKIN_STEM || found == Material.ATTACHED_PUMPKIN_STEM;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user