forked from LogBlock/LogBlock
Update to 1.14pre5
This commit is contained in:
4
pom.xml
4
pom.xml
@@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>de.diddiz</groupId>
|
||||
<artifactId>logblock</artifactId>
|
||||
<version>1.13.2-SNAPSHOT</version>
|
||||
<version>1.14-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>LogBlock</name>
|
||||
@@ -42,7 +42,7 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.13.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.14-pre5-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@@ -15,7 +15,9 @@ import org.bukkit.block.data.type.Comparator;
|
||||
import org.bukkit.block.data.type.DaylightDetector;
|
||||
import org.bukkit.block.data.type.NoteBlock;
|
||||
import org.bukkit.block.data.type.Repeater;
|
||||
import org.bukkit.block.data.type.Sign;
|
||||
import org.bukkit.block.data.type.Switch;
|
||||
import org.bukkit.block.data.type.WallSign;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
@@ -140,7 +142,7 @@ public class BlockChange implements LookupCacheElement {
|
||||
msg.append("stepped on ").append(type.getMaterial().name());
|
||||
} else if (type.getMaterial() == Material.TRIPWIRE) {
|
||||
msg.append("ran into ").append(type.getMaterial().name());
|
||||
} else if (type.getMaterial() == Material.SIGN || type.getMaterial() == Material.WALL_SIGN) {
|
||||
} else if (type instanceof Sign || type instanceof WallSign) {
|
||||
msg.append("edited a ").append(type.getMaterial().name()).append(" to ").append(typeDetails);
|
||||
} else {
|
||||
msg.append("replaced ").append(replaced.getMaterial().name()).append(replacedDetails).append(" with ").append(type.getMaterial().name()).append(typeDetails);
|
||||
|
@@ -34,8 +34,9 @@ import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.type.Sign;
|
||||
import org.bukkit.block.data.type.WallSign;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@@ -325,34 +326,6 @@ public class Consumer extends Thread {
|
||||
addQueueLast(new KillRow(location, killer == null ? null : killer, victim, weapon == null ? 0 : MaterialConverter.getOrAddMaterialId(weapon.getType().getKey().toString())));
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an actor breaking a sign along with its contents
|
||||
*
|
||||
* @param actor
|
||||
* Actor responsible for breaking the sign
|
||||
* @param loc
|
||||
* Location of the broken sign
|
||||
* @param type
|
||||
* BlockData of the sign.
|
||||
* @param typeState
|
||||
* Serialized text data of the sign
|
||||
*/
|
||||
public void queueSignBreak(Actor actor, Location loc, BlockData type, YamlConfiguration typeState) {
|
||||
queueBlock(actor, loc, type, null, typeState, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an actor breaking a sign along with its contents
|
||||
*
|
||||
* @param actor
|
||||
* Actor responsible for breaking the sign
|
||||
* @param sign
|
||||
* The sign being broken
|
||||
*/
|
||||
public void queueSignBreak(Actor actor, Sign sign) {
|
||||
queueSignBreak(actor, new Location(sign.getWorld(), sign.getX(), sign.getY(), sign.getZ()), sign.getBlockData(), BlockStateCodecs.serialize(sign));
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an actor placing a sign along with its contents
|
||||
*
|
||||
@@ -365,25 +338,13 @@ public class Consumer extends Thread {
|
||||
* @param lines
|
||||
* The four lines on the sign.
|
||||
*/
|
||||
public void queueSignPlace(Actor actor, Location loc, BlockData type, String[] lines) {
|
||||
if ((type.getMaterial() != Material.SIGN && type.getMaterial() != Material.WALL_SIGN) || lines == null || lines.length != 4) {
|
||||
public void queueSignChange(Actor actor, Location loc, BlockData type, String[] lines) {
|
||||
if ((!(type instanceof Sign) && !(type instanceof WallSign)) || lines == null || lines.length != 4) {
|
||||
return;
|
||||
}
|
||||
queueBlock(actor, loc, type, type, null, BlockStateCodecSign.serialize(lines), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs an actor placing a sign along with its contents
|
||||
*
|
||||
* @param actor
|
||||
* Actor placing the sign
|
||||
* @param sign
|
||||
* The palced sign object
|
||||
*/
|
||||
public void queueSignPlace(Actor actor, Sign sign) {
|
||||
queueSignPlace(actor, new Location(sign.getWorld(), sign.getX(), sign.getY(), sign.getZ()), sign.getBlockData(), sign.getLines());
|
||||
}
|
||||
|
||||
public void queueChat(Actor player, String message) {
|
||||
if (!Config.ignoredChat.isEmpty()) {
|
||||
String lowerCaseMessage = message.toLowerCase();
|
||||
|
@@ -88,6 +88,7 @@ public class LogBlock extends JavaPlugin {
|
||||
conn.close();
|
||||
Updater updater = new Updater(this);
|
||||
updater.checkTables();
|
||||
updater.updateMaterialsPost1_13();
|
||||
MaterialConverter.initializeMaterials(getConnection());
|
||||
MaterialConverter.getOrAddMaterialId(Material.AIR.getKey()); // AIR must be the first entry
|
||||
EntityTypeConverter.initializeEntityTypes(getConnection());
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package de.diddiz.LogBlock;
|
||||
|
||||
public enum Logging {
|
||||
BLOCKPLACE(true), BLOCKBREAK(true), SIGNTEXT, TNTEXPLOSION(true), CREEPEREXPLOSION(true),
|
||||
BLOCKPLACE(true), BLOCKBREAK(true), SIGNTEXT(true), TNTEXPLOSION(true), CREEPEREXPLOSION(true),
|
||||
GHASTFIREBALLEXPLOSION(true), ENDERDRAGON(true), MISCEXPLOSION(true), FIRE(true), LEAVESDECAY,
|
||||
LAVAFLOW, WATERFLOW, CHESTACCESS, KILL, CHAT, SNOWFORM, SNOWFADE, DOORINTERACT,
|
||||
SWITCHINTERACT, CAKEEAT, ENDERMEN, NOTEBLOCKINTERACT, DIODEINTERACT, COMPARATORINTERACT,
|
||||
|
@@ -5,6 +5,7 @@ import org.bukkit.Location;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Objects;
|
||||
|
||||
import static de.diddiz.util.Utils.spaces;
|
||||
|
||||
@@ -30,6 +31,6 @@ public class SummedBlockChanges implements LookupCacheElement {
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return created + spaces((int) ((10 - String.valueOf(created).length()) / spaceFactor)) + destroyed + spaces((int) ((10 - String.valueOf(destroyed).length()) / spaceFactor)) + (actor != null ? actor.getName() : MaterialConverter.getMaterial(type).toString());
|
||||
return created + spaces((int) ((10 - String.valueOf(created).length()) / spaceFactor)) + destroyed + spaces((int) ((10 - String.valueOf(destroyed).length()) / spaceFactor)) + (actor != null ? actor.getName() : Objects.toString(MaterialConverter.getMaterial(type)));
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,6 @@ import static de.diddiz.LogBlock.config.Config.getLoggedWorlds;
|
||||
import static de.diddiz.LogBlock.config.Config.isLogging;
|
||||
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
|
||||
import de.diddiz.util.ComparableVersion;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class Updater {
|
||||
private final LogBlock logblock;
|
||||
@@ -42,11 +41,6 @@ class Updater {
|
||||
boolean update() {
|
||||
final ConfigurationSection config = logblock.getConfig();
|
||||
String versionString = config.getString("version");
|
||||
if (Pattern.matches("1\\.\\d{2}",versionString)) {
|
||||
versionString = "1." + versionString.charAt(2) + "." + versionString.charAt(3);
|
||||
config.set("version",versionString);
|
||||
logblock.saveConfig();
|
||||
}
|
||||
ComparableVersion configVersion = new ComparableVersion(versionString);
|
||||
// if (configVersion.compareTo(new ComparableVersion(logblock.getDescription().getVersion().replace(" (manually compiled)", ""))) >= 0) {
|
||||
// return false;
|
||||
@@ -686,8 +680,8 @@ class Updater {
|
||||
|
||||
Material replacedMaterial = MaterialConverter.getBlockData(replaced, -1).getMaterial();
|
||||
Material typeMaterial = MaterialConverter.getBlockData(type, -1).getMaterial();
|
||||
boolean wasSign = replacedMaterial == Material.SIGN || replacedMaterial == Material.WALL_SIGN;
|
||||
boolean isSign = typeMaterial == Material.SIGN || typeMaterial == Material.WALL_SIGN;
|
||||
boolean wasSign = replacedMaterial == Material.OAK_SIGN || replacedMaterial == Material.OAK_WALL_SIGN;
|
||||
boolean isSign = typeMaterial == Material.OAK_SIGN || typeMaterial == Material.OAK_WALL_SIGN;
|
||||
|
||||
insertSignState.setInt(1, id);
|
||||
insertSignState.setBytes(2, wasSign ? bytes : null);
|
||||
@@ -739,6 +733,10 @@ class Updater {
|
||||
config.set("version", "1.13.2");
|
||||
}
|
||||
|
||||
if (configVersion.compareTo(new ComparableVersion("1.14.0")) < 0) {
|
||||
config.set("version", "1.14.0");
|
||||
}
|
||||
|
||||
// this can always be checked
|
||||
try {
|
||||
final Connection conn = logblock.getConnection();
|
||||
@@ -837,6 +835,84 @@ class Updater {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update materials that were renamed
|
||||
*/
|
||||
public void updateMaterialsPost1_13() {
|
||||
final ConfigurationSection config = logblock.getConfig();
|
||||
String previousMinecraftVersion = config.getString("previousMinecraftVersion");
|
||||
if (previousMinecraftVersion == null) {
|
||||
previousMinecraftVersion = "1.13";
|
||||
}
|
||||
ComparableVersion comparablePreviousMinecraftVersion = new ComparableVersion(previousMinecraftVersion);
|
||||
String currentMinecraftVersion = logblock.getServer().getVersion();
|
||||
currentMinecraftVersion = currentMinecraftVersion.substring(currentMinecraftVersion.indexOf("(MC: ") + 5);
|
||||
currentMinecraftVersion = currentMinecraftVersion.substring(0, currentMinecraftVersion.indexOf(" "));
|
||||
logblock.getLogger().info("[Updater] Current Minecraft Version: '" + currentMinecraftVersion + "'");
|
||||
ComparableVersion comparableCurrentMinecraftVersion = new ComparableVersion(currentMinecraftVersion);
|
||||
|
||||
if (comparablePreviousMinecraftVersion.compareTo("1.14") < 0 && comparableCurrentMinecraftVersion.compareTo("1.14") >= 0) {
|
||||
logblock.getLogger().info("[Updater] Upgrading Materials to 1.14");
|
||||
renameMaterial("minecraft:sign", "minecraft:oak_sign", true);
|
||||
renameMaterial("minecraft:wall_sign", "minecraft:oak_wall_sign", true);
|
||||
renameMaterial("minecraft:stone_slab", "minecraft:smooth_stone_slab", false);
|
||||
renameMaterial("minecraft:rose_red", "minecraft:red_dye", true);
|
||||
renameMaterial("minecraft:dandelion_yellow", "minecraft:yellow_dye", true);
|
||||
renameMaterial("minecraft:cactus_green", "minecraft:green_dye", true);
|
||||
}
|
||||
|
||||
config.set("previousMinecraftVersion", currentMinecraftVersion);
|
||||
logblock.saveConfig();
|
||||
}
|
||||
|
||||
private void renameMaterial(String oldName, String newName, boolean mergeOnCollision) {
|
||||
logblock.getLogger().info("[Updater] Renaming " + oldName + " to " + newName);
|
||||
final Connection conn = logblock.getConnection();
|
||||
try {
|
||||
conn.setAutoCommit(false);
|
||||
PreparedStatement stSelectMaterial = conn.prepareStatement("SELECT id FROM `lb-materials` WHERE name = ?");
|
||||
stSelectMaterial.setString(1, oldName);
|
||||
ResultSet rs = stSelectMaterial.executeQuery();
|
||||
if (!rs.next()) {
|
||||
logblock.getLogger().info("[Updater] Skipped because " + oldName + " does not exist..");
|
||||
} else {
|
||||
int oldId = rs.getInt(1);
|
||||
stSelectMaterial.setString(1, newName);
|
||||
rs = stSelectMaterial.executeQuery();
|
||||
if (rs.next()) {
|
||||
int newId = rs.getInt(1);
|
||||
if (!mergeOnCollision) {
|
||||
logblock.getLogger().info("[Updater] Skipped because " + newName + " already exists..");
|
||||
} else {
|
||||
Statement st = conn.createStatement();
|
||||
int rows = 0;
|
||||
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
||||
rows += st.executeUpdate("UPDATE `" + wcfg.table + "-blocks` SET replaced = " + newId + " WHERE replaced = " + oldId);
|
||||
rows += st.executeUpdate("UPDATE `" + wcfg.table + "-blocks` SET type = " + newId + " WHERE type = " + oldId);
|
||||
rows += st.executeUpdate("UPDATE `" + wcfg.table + "-chestdata` SET itemtype = " + newId + " WHERE itemtype = " + oldId);
|
||||
}
|
||||
st.execute("DELETE FROM `lb-materials` WHERE id = " + oldId);
|
||||
st.close();
|
||||
logblock.getLogger().info("[Updater] Successfully merged " + rows + " entries..");
|
||||
}
|
||||
} else {
|
||||
PreparedStatement stRenameMaterial = conn.prepareStatement("UPDATE `lb-materials` SET name = ? WHERE id = ?");
|
||||
stRenameMaterial.setString(1, newName);
|
||||
stRenameMaterial.setInt(2, oldId);
|
||||
if (stRenameMaterial.executeUpdate() > 0) {
|
||||
logblock.getLogger().info("[Updater] Successfully renamed..");
|
||||
}
|
||||
stRenameMaterial.close();
|
||||
}
|
||||
}
|
||||
stSelectMaterial.close();
|
||||
conn.commit();
|
||||
conn.close();
|
||||
} catch (final SQLException ex) {
|
||||
logblock.getLogger().log(Level.SEVERE, "[Updater] Error: " + ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
public static class PlayerCountChecker implements Runnable {
|
||||
|
||||
private LogBlock logblock;
|
||||
|
@@ -12,7 +12,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
public class BlockStateCodecSign implements BlockStateCodec {
|
||||
@Override
|
||||
public Material[] getApplicableMaterials() {
|
||||
return new Material[] { Material.WALL_SIGN, Material.SIGN };
|
||||
return new Material[] { Material.ACACIA_SIGN, Material.ACACIA_WALL_SIGN, Material.BIRCH_SIGN, Material.BIRCH_WALL_SIGN, Material.DARK_OAK_SIGN, Material.DARK_OAK_WALL_SIGN, Material.JUNGLE_SIGN, Material.JUNGLE_WALL_SIGN, Material.OAK_SIGN, Material.OAK_WALL_SIGN, Material.SPRUCE_SIGN, Material.SPRUCE_WALL_SIGN };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -10,7 +10,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.Waterlogged;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -40,9 +39,7 @@ public class BlockBreakLogging extends LoggingListener {
|
||||
final Block origin = event.getBlock();
|
||||
final Material type = origin.getType();
|
||||
|
||||
if (wcfg.isLogging(Logging.SIGNTEXT) && (type == Material.SIGN || type == Material.WALL_SIGN)) {
|
||||
consumer.queueSignBreak(actor, (Sign) origin.getState());
|
||||
} else if (wcfg.isLogging(Logging.CHESTACCESS) && BukkitUtils.getContainerBlocks().contains(type)) {
|
||||
if (wcfg.isLogging(Logging.CHESTACCESS) && BukkitUtils.getContainerBlocks().contains(type)) {
|
||||
consumer.queueContainerBreak(actor, origin.getState());
|
||||
} else if (type == Material.ICE) {
|
||||
// When in creative mode ice doesn't form water
|
||||
|
@@ -11,7 +11,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -114,9 +113,7 @@ public class ExplosionLogging extends LoggingListener {
|
||||
}
|
||||
for (final Block block : event.blockList()) {
|
||||
final Material type = block.getType();
|
||||
if (wcfg.isLogging(Logging.SIGNTEXT) & (type == Material.SIGN || type == Material.WALL_SIGN)) {
|
||||
consumer.queueSignBreak(actor, (Sign) block.getState());
|
||||
} else if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
|
||||
if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
|
||||
consumer.queueContainerBreak(actor, block.getState());
|
||||
} else {
|
||||
consumer.queueBlockBreak(actor, block.getState());
|
||||
@@ -171,9 +168,7 @@ public class ExplosionLogging extends LoggingListener {
|
||||
}
|
||||
|
||||
final Material type = block.getType();
|
||||
if (wcfg.isLogging(Logging.SIGNTEXT) & (type == Material.SIGN || type == Material.WALL_SIGN)) {
|
||||
consumer.queueSignBreak(actor, (Sign) block.getState());
|
||||
} else if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
|
||||
if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
|
||||
consumer.queueContainerBreak(actor, block.getState());
|
||||
} else {
|
||||
consumer.queueBlockBreak(actor, block.getState());
|
||||
|
@@ -17,7 +17,7 @@ public class SignChangeLogging extends LoggingListener {
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onSignChange(SignChangeEvent event) {
|
||||
if (isLogging(event.getBlock().getWorld(), Logging.SIGNTEXT)) {
|
||||
consumer.queueSignPlace(Actor.actorFromEntity(event.getPlayer()), event.getBlock().getLocation(), event.getBlock().getBlockData(), event.getLines());
|
||||
consumer.queueSignChange(Actor.actorFromEntity(event.getPlayer()), event.getBlock().getLocation(), event.getBlock().getBlockData(), event.getLines());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -164,7 +164,12 @@ public class BukkitUtils {
|
||||
|
||||
// Blocks that break when they are attached to a block
|
||||
relativeBreakable = EnumSet.noneOf(Material.class);
|
||||
relativeBreakable.add(Material.WALL_SIGN);
|
||||
relativeBreakable.add(Material.ACACIA_WALL_SIGN);
|
||||
relativeBreakable.add(Material.BIRCH_WALL_SIGN);
|
||||
relativeBreakable.add(Material.DARK_OAK_WALL_SIGN);
|
||||
relativeBreakable.add(Material.JUNGLE_WALL_SIGN);
|
||||
relativeBreakable.add(Material.OAK_WALL_SIGN);
|
||||
relativeBreakable.add(Material.SPRUCE_WALL_SIGN);
|
||||
relativeBreakable.add(Material.LADDER);
|
||||
relativeBreakable.addAll(buttons);
|
||||
relativeBreakable.add(Material.REDSTONE_WALL_TORCH);
|
||||
@@ -189,7 +194,12 @@ public class BukkitUtils {
|
||||
relativeTopBreakable.add(Material.ACTIVATOR_RAIL);
|
||||
relativeTopBreakable.add(Material.RAIL);
|
||||
relativeTopBreakable.add(Material.REDSTONE_WIRE);
|
||||
relativeTopBreakable.add(Material.SIGN);
|
||||
relativeTopBreakable.add(Material.ACACIA_SIGN);
|
||||
relativeTopBreakable.add(Material.BIRCH_SIGN);
|
||||
relativeTopBreakable.add(Material.DARK_OAK_SIGN);
|
||||
relativeTopBreakable.add(Material.JUNGLE_SIGN);
|
||||
relativeTopBreakable.add(Material.OAK_SIGN);
|
||||
relativeTopBreakable.add(Material.SPRUCE_SIGN);
|
||||
relativeTopBreakable.addAll(pressurePlates);
|
||||
relativeTopBreakable.add(Material.SNOW);
|
||||
relativeTopBreakable.add(Material.REPEATER);
|
||||
@@ -205,8 +215,18 @@ public class BukkitUtils {
|
||||
|
||||
// Blocks that break falling entities
|
||||
fallingEntityKillers = EnumSet.noneOf(Material.class);
|
||||
fallingEntityKillers.add(Material.SIGN);
|
||||
fallingEntityKillers.add(Material.WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.ACACIA_SIGN);
|
||||
fallingEntityKillers.add(Material.ACACIA_WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.BIRCH_SIGN);
|
||||
fallingEntityKillers.add(Material.BIRCH_WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.DARK_OAK_SIGN);
|
||||
fallingEntityKillers.add(Material.DARK_OAK_WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.JUNGLE_SIGN);
|
||||
fallingEntityKillers.add(Material.JUNGLE_WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.OAK_SIGN);
|
||||
fallingEntityKillers.add(Material.OAK_WALL_SIGN);
|
||||
fallingEntityKillers.add(Material.SPRUCE_SIGN);
|
||||
fallingEntityKillers.add(Material.SPRUCE_WALL_SIGN);
|
||||
fallingEntityKillers.addAll(pressurePlates);
|
||||
fallingEntityKillers.addAll(saplings);
|
||||
fallingEntityKillers.add(Material.DANDELION);
|
||||
|
@@ -455,11 +455,21 @@ public class ComparableVersion
|
||||
return items.compareTo( o.items );
|
||||
}
|
||||
|
||||
public int compareTo( String version )
|
||||
{
|
||||
return compareTo(new ComparableVersion(version));
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public String toCanonicalString()
|
||||
{
|
||||
return canonical;
|
||||
}
|
||||
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
return ( o instanceof ComparableVersion ) && canonical.equals( ( (ComparableVersion) o ).canonical );
|
||||
|
@@ -2,14 +2,12 @@ package de.diddiz.util;
|
||||
|
||||
import de.diddiz.LogBlock.Actor;
|
||||
import de.diddiz.LogBlock.Consumer;
|
||||
import de.diddiz.LogBlock.Logging;
|
||||
import de.diddiz.LogBlock.config.WorldConfig;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.Directional;
|
||||
|
||||
@@ -113,9 +111,7 @@ public class LoggingUtil {
|
||||
|
||||
Block checkBlock = origin.getRelative(BlockFace.UP);
|
||||
if (BukkitUtils.getRelativeTopBreakabls().contains(checkBlock.getType())) {
|
||||
if (wcfg.isLogging(Logging.SIGNTEXT) && checkBlock.getType() == Material.SIGN) {
|
||||
consumer.queueSignBreak(actor, (Sign) checkBlock.getState());
|
||||
} else if (checkBlock.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(checkBlock.getType())) {
|
||||
if (checkBlock.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(checkBlock.getType())) {
|
||||
Block doorBlock = checkBlock;
|
||||
// If the doorBlock is the top half a door the player simply punched a door
|
||||
// this will be handled later.
|
||||
@@ -151,11 +147,7 @@ public class LoggingUtil {
|
||||
BlockData blockData = block.getBlockData();
|
||||
if (blockData instanceof Directional) {
|
||||
if (block.getRelative(((Directional) blockData).getFacing().getOppositeFace()).equals(origin)) {
|
||||
if (wcfg.isLogging(Logging.SIGNTEXT) && block.getType() == Material.WALL_SIGN) {
|
||||
consumer.queueSignBreak(actor, (Sign) block.getState());
|
||||
} else {
|
||||
consumer.queueBlockBreak(actor, block.getState());
|
||||
}
|
||||
consumer.queueBlockBreak(actor, block.getState());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -309,7 +309,7 @@
|
||||
43:13,minecraft:stone_brick_slab[type=double,waterlogged=false]
|
||||
43:14,minecraft:nether_brick_slab[type=double,waterlogged=false]
|
||||
43:15,minecraft:smooth_quartz
|
||||
44:0,minecraft:stone_slab[type=bottom,waterlogged=false]
|
||||
44:0,minecraft:smooth_stone_slab[type=bottom,waterlogged=false]
|
||||
44:1,minecraft:sandstone_slab[type=bottom,waterlogged=false]
|
||||
44:2,minecraft:petrified_oak_slab[type=bottom,waterlogged=false]
|
||||
44:3,minecraft:cobblestone_slab[type=bottom,waterlogged=false]
|
||||
@@ -317,7 +317,7 @@
|
||||
44:5,minecraft:stone_brick_slab[type=bottom,waterlogged=false]
|
||||
44:6,minecraft:nether_brick_slab[type=bottom,waterlogged=false]
|
||||
44:7,minecraft:quartz_slab[type=bottom,waterlogged=false]
|
||||
44:8,minecraft:stone_slab[type=top,waterlogged=false]
|
||||
44:8,minecraft:smooth_stone_slab[type=top,waterlogged=false]
|
||||
44:9,minecraft:sandstone_slab[type=top,waterlogged=false]
|
||||
44:10,minecraft:petrified_oak_slab[type=top,waterlogged=false]
|
||||
44:11,minecraft:cobblestone_slab[type=top,waterlogged=false]
|
||||
@@ -440,22 +440,22 @@
|
||||
62:10,minecraft:furnace[facing=west,lit=false]
|
||||
62:11,minecraft:furnace[facing=east,lit=false]
|
||||
62:15,minecraft:furnace[facing=south,lit=false]
|
||||
63:0,minecraft:sign[rotation=0,waterlogged=false]
|
||||
63:1,minecraft:sign[rotation=1,waterlogged=false]
|
||||
63:2,minecraft:sign[rotation=2,waterlogged=false]
|
||||
63:3,minecraft:sign[rotation=3,waterlogged=false]
|
||||
63:4,minecraft:sign[rotation=4,waterlogged=false]
|
||||
63:5,minecraft:sign[rotation=5,waterlogged=false]
|
||||
63:6,minecraft:sign[rotation=6,waterlogged=false]
|
||||
63:7,minecraft:sign[rotation=7,waterlogged=false]
|
||||
63:8,minecraft:sign[rotation=8,waterlogged=false]
|
||||
63:9,minecraft:sign[rotation=9,waterlogged=false]
|
||||
63:10,minecraft:sign[rotation=10,waterlogged=false]
|
||||
63:11,minecraft:sign[rotation=11,waterlogged=false]
|
||||
63:12,minecraft:sign[rotation=12,waterlogged=false]
|
||||
63:13,minecraft:sign[rotation=13,waterlogged=false]
|
||||
63:14,minecraft:sign[rotation=14,waterlogged=false]
|
||||
63:15,minecraft:sign[rotation=15,waterlogged=false]
|
||||
63:0,minecraft:oak_sign[rotation=0,waterlogged=false]
|
||||
63:1,minecraft:oak_sign[rotation=1,waterlogged=false]
|
||||
63:2,minecraft:oak_sign[rotation=2,waterlogged=false]
|
||||
63:3,minecraft:oak_sign[rotation=3,waterlogged=false]
|
||||
63:4,minecraft:oak_sign[rotation=4,waterlogged=false]
|
||||
63:5,minecraft:oak_sign[rotation=5,waterlogged=false]
|
||||
63:6,minecraft:oak_sign[rotation=6,waterlogged=false]
|
||||
63:7,minecraft:oak_sign[rotation=7,waterlogged=false]
|
||||
63:8,minecraft:oak_sign[rotation=8,waterlogged=false]
|
||||
63:9,minecraft:oak_sign[rotation=9,waterlogged=false]
|
||||
63:10,minecraft:oak_sign[rotation=10,waterlogged=false]
|
||||
63:11,minecraft:oak_sign[rotation=11,waterlogged=false]
|
||||
63:12,minecraft:oak_sign[rotation=12,waterlogged=false]
|
||||
63:13,minecraft:oak_sign[rotation=13,waterlogged=false]
|
||||
63:14,minecraft:oak_sign[rotation=14,waterlogged=false]
|
||||
63:15,minecraft:oak_sign[rotation=15,waterlogged=false]
|
||||
64:0,minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]
|
||||
64:1,minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]
|
||||
64:2,minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]
|
||||
@@ -496,14 +496,14 @@
|
||||
67:13,minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]
|
||||
67:14,minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]
|
||||
67:15,minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]
|
||||
68:0,minecraft:wall_sign[facing=north,waterlogged=false]
|
||||
68:3,minecraft:wall_sign[facing=south,waterlogged=false]
|
||||
68:4,minecraft:wall_sign[facing=west,waterlogged=false]
|
||||
68:5,minecraft:wall_sign[facing=east,waterlogged=false]
|
||||
68:9,minecraft:wall_sign[facing=south,waterlogged=false]
|
||||
68:10,minecraft:wall_sign[facing=west,waterlogged=false]
|
||||
68:11,minecraft:wall_sign[facing=east,waterlogged=false]
|
||||
68:15,minecraft:wall_sign[facing=south,waterlogged=false]
|
||||
68:0,minecraft:oak_wall_sign[facing=north,waterlogged=false]
|
||||
68:3,minecraft:oak_wall_sign[facing=south,waterlogged=false]
|
||||
68:4,minecraft:oak_wall_sign[facing=west,waterlogged=false]
|
||||
68:5,minecraft:oak_wall_sign[facing=east,waterlogged=false]
|
||||
68:9,minecraft:oak_wall_sign[facing=south,waterlogged=false]
|
||||
68:10,minecraft:oak_wall_sign[facing=west,waterlogged=false]
|
||||
68:11,minecraft:oak_wall_sign[facing=east,waterlogged=false]
|
||||
68:15,minecraft:oak_wall_sign[facing=south,waterlogged=false]
|
||||
69:0,minecraft:lever[face=ceiling,facing=west,powered=false]
|
||||
69:1,minecraft:lever[face=wall,facing=east,powered=false]
|
||||
69:2,minecraft:lever[face=wall,facing=west,powered=false]
|
||||
|
@@ -114,7 +114,7 @@
|
||||
40:0,minecraft:red_mushroom
|
||||
41:0,minecraft:gold_block
|
||||
42:0,minecraft:iron_block
|
||||
43:0,minecraft:stone_slab
|
||||
43:0,minecraft:smooth_stone_slab
|
||||
43:1,minecraft:sandstone_slab
|
||||
43:2,minecraft:petrified_oak_slab
|
||||
43:3,minecraft:cobblestone_slab
|
||||
@@ -171,16 +171,16 @@
|
||||
62:3,minecraft:furnace
|
||||
62:4,minecraft:furnace
|
||||
62:5,minecraft:furnace
|
||||
63:0,minecraft:sign
|
||||
63:0,minecraft:oak_sign
|
||||
64:0,minecraft:oak_door
|
||||
65:0,minecraft:ladder
|
||||
66:0,minecraft:rail
|
||||
67:0,minecraft:cobblestone_stairs
|
||||
68:0,minecraft:air
|
||||
68:2,minecraft:wall_sign
|
||||
68:3,minecraft:wall_sign
|
||||
68:4,minecraft:wall_sign
|
||||
68:5,minecraft:wall_sign
|
||||
68:2,minecraft:oak_wall_sign
|
||||
68:3,minecraft:oak_wall_sign
|
||||
68:4,minecraft:oak_wall_sign
|
||||
68:5,minecraft:oak_wall_sign
|
||||
69:0,minecraft:lever
|
||||
70:0,minecraft:stone_pressure_plate
|
||||
71:0,minecraft:iron_door
|
||||
@@ -599,7 +599,7 @@
|
||||
321:0,minecraft:painting
|
||||
322:0,minecraft:golden_apple
|
||||
322:1,minecraft:enchanted_golden_apple
|
||||
323:0,minecraft:sign
|
||||
323:0,minecraft:oak_sign
|
||||
324:0,minecraft:oak_door
|
||||
325:0,minecraft:bucket
|
||||
326:0,minecraft:water_bucket
|
||||
@@ -632,8 +632,8 @@
|
||||
350:0,minecraft:cooked_cod
|
||||
350:1,minecraft:cooked_salmon
|
||||
351:0,minecraft:ink_sac
|
||||
351:1,minecraft:rose_red
|
||||
351:2,minecraft:cactus_green
|
||||
351:1,minecraft:red_dye
|
||||
351:2,minecraft:green_dye
|
||||
351:3,minecraft:cocoa_beans
|
||||
351:4,minecraft:lapis_lazuli
|
||||
351:5,minecraft:purple_dye
|
||||
@@ -642,7 +642,7 @@
|
||||
351:8,minecraft:gray_dye
|
||||
351:9,minecraft:pink_dye
|
||||
351:10,minecraft:lime_dye
|
||||
351:11,minecraft:dandelion_yellow
|
||||
351:11,minecraft:yellow_dye
|
||||
351:12,minecraft:light_blue_dye
|
||||
351:13,minecraft:magenta_dye
|
||||
351:14,minecraft:orange_dye
|
||||
|
@@ -6,7 +6,7 @@ website: http://dev.bukkit.org/server-mods/logblock/
|
||||
main: de.diddiz.LogBlock.LogBlock
|
||||
description: ${project.description}
|
||||
softdepend: [WorldEdit]
|
||||
api-version: 1.13
|
||||
api-version: 1.14
|
||||
commands:
|
||||
lb:
|
||||
description: 'LogBlock plugin commands'
|
||||
|
Reference in New Issue
Block a user