Update to 1.14pre5

This commit is contained in:
Brokkonaut
2019-04-24 17:45:34 +02:00
parent d4b127244e
commit 254c856b2f
17 changed files with 175 additions and 120 deletions

View File

@@ -4,7 +4,7 @@
<groupId>de.diddiz</groupId> <groupId>de.diddiz</groupId>
<artifactId>logblock</artifactId> <artifactId>logblock</artifactId>
<version>1.13.2-SNAPSHOT</version> <version>1.14-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>LogBlock</name> <name>LogBlock</name>
@@ -42,7 +42,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.13.2-R0.1-SNAPSHOT</version> <version>1.14-pre5-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@@ -15,7 +15,9 @@ import org.bukkit.block.data.type.Comparator;
import org.bukkit.block.data.type.DaylightDetector; import org.bukkit.block.data.type.DaylightDetector;
import org.bukkit.block.data.type.NoteBlock; import org.bukkit.block.data.type.NoteBlock;
import org.bukkit.block.data.type.Repeater; 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.Switch;
import org.bukkit.block.data.type.WallSign;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.sql.ResultSet; import java.sql.ResultSet;
@@ -140,7 +142,7 @@ public class BlockChange implements LookupCacheElement {
msg.append("stepped on ").append(type.getMaterial().name()); msg.append("stepped on ").append(type.getMaterial().name());
} else if (type.getMaterial() == Material.TRIPWIRE) { } else if (type.getMaterial() == Material.TRIPWIRE) {
msg.append("ran into ").append(type.getMaterial().name()); 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); msg.append("edited a ").append(type.getMaterial().name()).append(" to ").append(typeDetails);
} else { } else {
msg.append("replaced ").append(replaced.getMaterial().name()).append(replacedDetails).append(" with ").append(type.getMaterial().name()).append(typeDetails); msg.append("replaced ").append(replaced.getMaterial().name()).append(replacedDetails).append(" with ").append(type.getMaterial().name()).append(typeDetails);

View File

@@ -34,8 +34,9 @@ import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.block.data.BlockData; 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.configuration.file.YamlConfiguration;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; 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()))); 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 * Logs an actor placing a sign along with its contents
* *
@@ -365,25 +338,13 @@ public class Consumer extends Thread {
* @param lines * @param lines
* The four lines on the sign. * The four lines on the sign.
*/ */
public void queueSignPlace(Actor actor, Location loc, BlockData type, String[] lines) { public void queueSignChange(Actor actor, Location loc, BlockData type, String[] lines) {
if ((type.getMaterial() != Material.SIGN && type.getMaterial() != Material.WALL_SIGN) || lines == null || lines.length != 4) { if ((!(type instanceof Sign) && !(type instanceof WallSign)) || lines == null || lines.length != 4) {
return; return;
} }
queueBlock(actor, loc, type, type, null, BlockStateCodecSign.serialize(lines), null); 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) { public void queueChat(Actor player, String message) {
if (!Config.ignoredChat.isEmpty()) { if (!Config.ignoredChat.isEmpty()) {
String lowerCaseMessage = message.toLowerCase(); String lowerCaseMessage = message.toLowerCase();

View File

@@ -88,6 +88,7 @@ public class LogBlock extends JavaPlugin {
conn.close(); conn.close();
Updater updater = new Updater(this); Updater updater = new Updater(this);
updater.checkTables(); updater.checkTables();
updater.updateMaterialsPost1_13();
MaterialConverter.initializeMaterials(getConnection()); MaterialConverter.initializeMaterials(getConnection());
MaterialConverter.getOrAddMaterialId(Material.AIR.getKey()); // AIR must be the first entry MaterialConverter.getOrAddMaterialId(Material.AIR.getKey()); // AIR must be the first entry
EntityTypeConverter.initializeEntityTypes(getConnection()); EntityTypeConverter.initializeEntityTypes(getConnection());

View File

@@ -1,7 +1,7 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
public enum Logging { 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, GHASTFIREBALLEXPLOSION(true), ENDERDRAGON(true), MISCEXPLOSION(true), FIRE(true), LEAVESDECAY,
LAVAFLOW, WATERFLOW, CHESTACCESS, KILL, CHAT, SNOWFORM, SNOWFADE, DOORINTERACT, LAVAFLOW, WATERFLOW, CHESTACCESS, KILL, CHAT, SNOWFORM, SNOWFADE, DOORINTERACT,
SWITCHINTERACT, CAKEEAT, ENDERMEN, NOTEBLOCKINTERACT, DIODEINTERACT, COMPARATORINTERACT, SWITCHINTERACT, CAKEEAT, ENDERMEN, NOTEBLOCKINTERACT, DIODEINTERACT, COMPARATORINTERACT,

View File

@@ -5,6 +5,7 @@ import org.bukkit.Location;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Objects;
import static de.diddiz.util.Utils.spaces; import static de.diddiz.util.Utils.spaces;
@@ -30,6 +31,6 @@ public class SummedBlockChanges implements LookupCacheElement {
@Override @Override
public String getMessage() { 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)));
} }
} }

View File

@@ -27,7 +27,6 @@ import static de.diddiz.LogBlock.config.Config.getLoggedWorlds;
import static de.diddiz.LogBlock.config.Config.isLogging; import static de.diddiz.LogBlock.config.Config.isLogging;
import static de.diddiz.util.BukkitUtils.friendlyWorldname; import static de.diddiz.util.BukkitUtils.friendlyWorldname;
import de.diddiz.util.ComparableVersion; import de.diddiz.util.ComparableVersion;
import java.util.regex.Pattern;
class Updater { class Updater {
private final LogBlock logblock; private final LogBlock logblock;
@@ -42,11 +41,6 @@ class Updater {
boolean update() { boolean update() {
final ConfigurationSection config = logblock.getConfig(); final ConfigurationSection config = logblock.getConfig();
String versionString = config.getString("version"); 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); ComparableVersion configVersion = new ComparableVersion(versionString);
// if (configVersion.compareTo(new ComparableVersion(logblock.getDescription().getVersion().replace(" (manually compiled)", ""))) >= 0) { // if (configVersion.compareTo(new ComparableVersion(logblock.getDescription().getVersion().replace(" (manually compiled)", ""))) >= 0) {
// return false; // return false;
@@ -686,8 +680,8 @@ class Updater {
Material replacedMaterial = MaterialConverter.getBlockData(replaced, -1).getMaterial(); Material replacedMaterial = MaterialConverter.getBlockData(replaced, -1).getMaterial();
Material typeMaterial = MaterialConverter.getBlockData(type, -1).getMaterial(); Material typeMaterial = MaterialConverter.getBlockData(type, -1).getMaterial();
boolean wasSign = replacedMaterial == Material.SIGN || replacedMaterial == Material.WALL_SIGN; boolean wasSign = replacedMaterial == Material.OAK_SIGN || replacedMaterial == Material.OAK_WALL_SIGN;
boolean isSign = typeMaterial == Material.SIGN || typeMaterial == Material.WALL_SIGN; boolean isSign = typeMaterial == Material.OAK_SIGN || typeMaterial == Material.OAK_WALL_SIGN;
insertSignState.setInt(1, id); insertSignState.setInt(1, id);
insertSignState.setBytes(2, wasSign ? bytes : null); insertSignState.setBytes(2, wasSign ? bytes : null);
@@ -739,6 +733,10 @@ class Updater {
config.set("version", "1.13.2"); 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 // this can always be checked
try { try {
final Connection conn = logblock.getConnection(); 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 { public static class PlayerCountChecker implements Runnable {
private LogBlock logblock; private LogBlock logblock;

View File

@@ -12,7 +12,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
public class BlockStateCodecSign implements BlockStateCodec { public class BlockStateCodecSign implements BlockStateCodec {
@Override @Override
public Material[] getApplicableMaterials() { 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 @Override

View File

@@ -10,7 +10,6 @@ import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.Waterlogged;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -40,9 +39,7 @@ public class BlockBreakLogging extends LoggingListener {
final Block origin = event.getBlock(); final Block origin = event.getBlock();
final Material type = origin.getType(); final Material type = origin.getType();
if (wcfg.isLogging(Logging.SIGNTEXT) && (type == Material.SIGN || type == Material.WALL_SIGN)) { if (wcfg.isLogging(Logging.CHESTACCESS) && BukkitUtils.getContainerBlocks().contains(type)) {
consumer.queueSignBreak(actor, (Sign) origin.getState());
} else if (wcfg.isLogging(Logging.CHESTACCESS) && BukkitUtils.getContainerBlocks().contains(type)) {
consumer.queueContainerBreak(actor, origin.getState()); consumer.queueContainerBreak(actor, origin.getState());
} else if (type == Material.ICE) { } else if (type == Material.ICE) {
// When in creative mode ice doesn't form water // When in creative mode ice doesn't form water

View File

@@ -11,7 +11,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.entity.minecart.ExplosiveMinecart; import org.bukkit.entity.minecart.ExplosiveMinecart;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -114,9 +113,7 @@ public class ExplosionLogging extends LoggingListener {
} }
for (final Block block : event.blockList()) { for (final Block block : event.blockList()) {
final Material type = block.getType(); final Material type = block.getType();
if (wcfg.isLogging(Logging.SIGNTEXT) & (type == Material.SIGN || type == Material.WALL_SIGN)) { if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
consumer.queueSignBreak(actor, (Sign) block.getState());
} else if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
consumer.queueContainerBreak(actor, block.getState()); consumer.queueContainerBreak(actor, block.getState());
} else { } else {
consumer.queueBlockBreak(actor, block.getState()); consumer.queueBlockBreak(actor, block.getState());
@@ -171,9 +168,7 @@ public class ExplosionLogging extends LoggingListener {
} }
final Material type = block.getType(); final Material type = block.getType();
if (wcfg.isLogging(Logging.SIGNTEXT) & (type == Material.SIGN || type == Material.WALL_SIGN)) { if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
consumer.queueSignBreak(actor, (Sign) block.getState());
} else if (wcfg.isLogging(Logging.CHESTACCESS) && (getContainerBlocks().contains(type))) {
consumer.queueContainerBreak(actor, block.getState()); consumer.queueContainerBreak(actor, block.getState());
} else { } else {
consumer.queueBlockBreak(actor, block.getState()); consumer.queueBlockBreak(actor, block.getState());

View File

@@ -17,7 +17,7 @@ public class SignChangeLogging extends LoggingListener {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onSignChange(SignChangeEvent event) { public void onSignChange(SignChangeEvent event) {
if (isLogging(event.getBlock().getWorld(), Logging.SIGNTEXT)) { 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());
} }
} }
} }

View File

@@ -164,7 +164,12 @@ public class BukkitUtils {
// Blocks that break when they are attached to a block // Blocks that break when they are attached to a block
relativeBreakable = EnumSet.noneOf(Material.class); 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.add(Material.LADDER);
relativeBreakable.addAll(buttons); relativeBreakable.addAll(buttons);
relativeBreakable.add(Material.REDSTONE_WALL_TORCH); relativeBreakable.add(Material.REDSTONE_WALL_TORCH);
@@ -189,7 +194,12 @@ public class BukkitUtils {
relativeTopBreakable.add(Material.ACTIVATOR_RAIL); relativeTopBreakable.add(Material.ACTIVATOR_RAIL);
relativeTopBreakable.add(Material.RAIL); relativeTopBreakable.add(Material.RAIL);
relativeTopBreakable.add(Material.REDSTONE_WIRE); 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.addAll(pressurePlates);
relativeTopBreakable.add(Material.SNOW); relativeTopBreakable.add(Material.SNOW);
relativeTopBreakable.add(Material.REPEATER); relativeTopBreakable.add(Material.REPEATER);
@@ -205,8 +215,18 @@ public class BukkitUtils {
// Blocks that break falling entities // Blocks that break falling entities
fallingEntityKillers = EnumSet.noneOf(Material.class); fallingEntityKillers = EnumSet.noneOf(Material.class);
fallingEntityKillers.add(Material.SIGN); fallingEntityKillers.add(Material.ACACIA_SIGN);
fallingEntityKillers.add(Material.WALL_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(pressurePlates);
fallingEntityKillers.addAll(saplings); fallingEntityKillers.addAll(saplings);
fallingEntityKillers.add(Material.DANDELION); fallingEntityKillers.add(Material.DANDELION);

View File

@@ -455,11 +455,21 @@ public class ComparableVersion
return items.compareTo( o.items ); return items.compareTo( o.items );
} }
public int compareTo( String version )
{
return compareTo(new ComparableVersion(version));
}
public String toString() public String toString()
{ {
return value; return value;
} }
public String toCanonicalString()
{
return canonical;
}
public boolean equals( Object o ) public boolean equals( Object o )
{ {
return ( o instanceof ComparableVersion ) && canonical.equals( ( (ComparableVersion) o ).canonical ); return ( o instanceof ComparableVersion ) && canonical.equals( ( (ComparableVersion) o ).canonical );

View File

@@ -2,14 +2,12 @@ package de.diddiz.util;
import de.diddiz.LogBlock.Actor; import de.diddiz.LogBlock.Actor;
import de.diddiz.LogBlock.Consumer; import de.diddiz.LogBlock.Consumer;
import de.diddiz.LogBlock.Logging;
import de.diddiz.LogBlock.config.WorldConfig; import de.diddiz.LogBlock.config.WorldConfig;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
@@ -113,9 +111,7 @@ public class LoggingUtil {
Block checkBlock = origin.getRelative(BlockFace.UP); Block checkBlock = origin.getRelative(BlockFace.UP);
if (BukkitUtils.getRelativeTopBreakabls().contains(checkBlock.getType())) { if (BukkitUtils.getRelativeTopBreakabls().contains(checkBlock.getType())) {
if (wcfg.isLogging(Logging.SIGNTEXT) && checkBlock.getType() == Material.SIGN) { if (checkBlock.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(checkBlock.getType())) {
consumer.queueSignBreak(actor, (Sign) checkBlock.getState());
} else if (checkBlock.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(checkBlock.getType())) {
Block doorBlock = checkBlock; Block doorBlock = checkBlock;
// If the doorBlock is the top half a door the player simply punched a door // If the doorBlock is the top half a door the player simply punched a door
// this will be handled later. // this will be handled later.
@@ -151,11 +147,7 @@ public class LoggingUtil {
BlockData blockData = block.getBlockData(); BlockData blockData = block.getBlockData();
if (blockData instanceof Directional) { if (blockData instanceof Directional) {
if (block.getRelative(((Directional) blockData).getFacing().getOppositeFace()).equals(origin)) { if (block.getRelative(((Directional) blockData).getFacing().getOppositeFace()).equals(origin)) {
if (wcfg.isLogging(Logging.SIGNTEXT) && block.getType() == Material.WALL_SIGN) { consumer.queueBlockBreak(actor, block.getState());
consumer.queueSignBreak(actor, (Sign) block.getState());
} else {
consumer.queueBlockBreak(actor, block.getState());
}
} }
} }
} }

View File

@@ -309,7 +309,7 @@
43:13,minecraft:stone_brick_slab[type=double,waterlogged=false] 43:13,minecraft:stone_brick_slab[type=double,waterlogged=false]
43:14,minecraft:nether_brick_slab[type=double,waterlogged=false] 43:14,minecraft:nether_brick_slab[type=double,waterlogged=false]
43:15,minecraft:smooth_quartz 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:1,minecraft:sandstone_slab[type=bottom,waterlogged=false]
44:2,minecraft:petrified_oak_slab[type=bottom,waterlogged=false] 44:2,minecraft:petrified_oak_slab[type=bottom,waterlogged=false]
44:3,minecraft:cobblestone_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:5,minecraft:stone_brick_slab[type=bottom,waterlogged=false]
44:6,minecraft:nether_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: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:9,minecraft:sandstone_slab[type=top,waterlogged=false]
44:10,minecraft:petrified_oak_slab[type=top,waterlogged=false] 44:10,minecraft:petrified_oak_slab[type=top,waterlogged=false]
44:11,minecraft:cobblestone_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:10,minecraft:furnace[facing=west,lit=false]
62:11,minecraft:furnace[facing=east,lit=false] 62:11,minecraft:furnace[facing=east,lit=false]
62:15,minecraft:furnace[facing=south,lit=false] 62:15,minecraft:furnace[facing=south,lit=false]
63:0,minecraft:sign[rotation=0,waterlogged=false] 63:0,minecraft:oak_sign[rotation=0,waterlogged=false]
63:1,minecraft:sign[rotation=1,waterlogged=false] 63:1,minecraft:oak_sign[rotation=1,waterlogged=false]
63:2,minecraft:sign[rotation=2,waterlogged=false] 63:2,minecraft:oak_sign[rotation=2,waterlogged=false]
63:3,minecraft:sign[rotation=3,waterlogged=false] 63:3,minecraft:oak_sign[rotation=3,waterlogged=false]
63:4,minecraft:sign[rotation=4,waterlogged=false] 63:4,minecraft:oak_sign[rotation=4,waterlogged=false]
63:5,minecraft:sign[rotation=5,waterlogged=false] 63:5,minecraft:oak_sign[rotation=5,waterlogged=false]
63:6,minecraft:sign[rotation=6,waterlogged=false] 63:6,minecraft:oak_sign[rotation=6,waterlogged=false]
63:7,minecraft:sign[rotation=7,waterlogged=false] 63:7,minecraft:oak_sign[rotation=7,waterlogged=false]
63:8,minecraft:sign[rotation=8,waterlogged=false] 63:8,minecraft:oak_sign[rotation=8,waterlogged=false]
63:9,minecraft:sign[rotation=9,waterlogged=false] 63:9,minecraft:oak_sign[rotation=9,waterlogged=false]
63:10,minecraft:sign[rotation=10,waterlogged=false] 63:10,minecraft:oak_sign[rotation=10,waterlogged=false]
63:11,minecraft:sign[rotation=11,waterlogged=false] 63:11,minecraft:oak_sign[rotation=11,waterlogged=false]
63:12,minecraft:sign[rotation=12,waterlogged=false] 63:12,minecraft:oak_sign[rotation=12,waterlogged=false]
63:13,minecraft:sign[rotation=13,waterlogged=false] 63:13,minecraft:oak_sign[rotation=13,waterlogged=false]
63:14,minecraft:sign[rotation=14,waterlogged=false] 63:14,minecraft:oak_sign[rotation=14,waterlogged=false]
63:15,minecraft:sign[rotation=15,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: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: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] 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: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: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] 67:15,minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]
68:0,minecraft:wall_sign[facing=north,waterlogged=false] 68:0,minecraft:oak_wall_sign[facing=north,waterlogged=false]
68:3,minecraft:wall_sign[facing=south,waterlogged=false] 68:3,minecraft:oak_wall_sign[facing=south,waterlogged=false]
68:4,minecraft:wall_sign[facing=west,waterlogged=false] 68:4,minecraft:oak_wall_sign[facing=west,waterlogged=false]
68:5,minecraft:wall_sign[facing=east,waterlogged=false] 68:5,minecraft:oak_wall_sign[facing=east,waterlogged=false]
68:9,minecraft:wall_sign[facing=south,waterlogged=false] 68:9,minecraft:oak_wall_sign[facing=south,waterlogged=false]
68:10,minecraft:wall_sign[facing=west,waterlogged=false] 68:10,minecraft:oak_wall_sign[facing=west,waterlogged=false]
68:11,minecraft:wall_sign[facing=east,waterlogged=false] 68:11,minecraft:oak_wall_sign[facing=east,waterlogged=false]
68:15,minecraft:wall_sign[facing=south,waterlogged=false] 68:15,minecraft:oak_wall_sign[facing=south,waterlogged=false]
69:0,minecraft:lever[face=ceiling,facing=west,powered=false] 69:0,minecraft:lever[face=ceiling,facing=west,powered=false]
69:1,minecraft:lever[face=wall,facing=east,powered=false] 69:1,minecraft:lever[face=wall,facing=east,powered=false]
69:2,minecraft:lever[face=wall,facing=west,powered=false] 69:2,minecraft:lever[face=wall,facing=west,powered=false]

View File

@@ -114,7 +114,7 @@
40:0,minecraft:red_mushroom 40:0,minecraft:red_mushroom
41:0,minecraft:gold_block 41:0,minecraft:gold_block
42:0,minecraft:iron_block 42:0,minecraft:iron_block
43:0,minecraft:stone_slab 43:0,minecraft:smooth_stone_slab
43:1,minecraft:sandstone_slab 43:1,minecraft:sandstone_slab
43:2,minecraft:petrified_oak_slab 43:2,minecraft:petrified_oak_slab
43:3,minecraft:cobblestone_slab 43:3,minecraft:cobblestone_slab
@@ -171,16 +171,16 @@
62:3,minecraft:furnace 62:3,minecraft:furnace
62:4,minecraft:furnace 62:4,minecraft:furnace
62:5,minecraft:furnace 62:5,minecraft:furnace
63:0,minecraft:sign 63:0,minecraft:oak_sign
64:0,minecraft:oak_door 64:0,minecraft:oak_door
65:0,minecraft:ladder 65:0,minecraft:ladder
66:0,minecraft:rail 66:0,minecraft:rail
67:0,minecraft:cobblestone_stairs 67:0,minecraft:cobblestone_stairs
68:0,minecraft:air 68:0,minecraft:air
68:2,minecraft:wall_sign 68:2,minecraft:oak_wall_sign
68:3,minecraft:wall_sign 68:3,minecraft:oak_wall_sign
68:4,minecraft:wall_sign 68:4,minecraft:oak_wall_sign
68:5,minecraft:wall_sign 68:5,minecraft:oak_wall_sign
69:0,minecraft:lever 69:0,minecraft:lever
70:0,minecraft:stone_pressure_plate 70:0,minecraft:stone_pressure_plate
71:0,minecraft:iron_door 71:0,minecraft:iron_door
@@ -599,7 +599,7 @@
321:0,minecraft:painting 321:0,minecraft:painting
322:0,minecraft:golden_apple 322:0,minecraft:golden_apple
322:1,minecraft:enchanted_golden_apple 322:1,minecraft:enchanted_golden_apple
323:0,minecraft:sign 323:0,minecraft:oak_sign
324:0,minecraft:oak_door 324:0,minecraft:oak_door
325:0,minecraft:bucket 325:0,minecraft:bucket
326:0,minecraft:water_bucket 326:0,minecraft:water_bucket
@@ -632,8 +632,8 @@
350:0,minecraft:cooked_cod 350:0,minecraft:cooked_cod
350:1,minecraft:cooked_salmon 350:1,minecraft:cooked_salmon
351:0,minecraft:ink_sac 351:0,minecraft:ink_sac
351:1,minecraft:rose_red 351:1,minecraft:red_dye
351:2,minecraft:cactus_green 351:2,minecraft:green_dye
351:3,minecraft:cocoa_beans 351:3,minecraft:cocoa_beans
351:4,minecraft:lapis_lazuli 351:4,minecraft:lapis_lazuli
351:5,minecraft:purple_dye 351:5,minecraft:purple_dye
@@ -642,7 +642,7 @@
351:8,minecraft:gray_dye 351:8,minecraft:gray_dye
351:9,minecraft:pink_dye 351:9,minecraft:pink_dye
351:10,minecraft:lime_dye 351:10,minecraft:lime_dye
351:11,minecraft:dandelion_yellow 351:11,minecraft:yellow_dye
351:12,minecraft:light_blue_dye 351:12,minecraft:light_blue_dye
351:13,minecraft:magenta_dye 351:13,minecraft:magenta_dye
351:14,minecraft:orange_dye 351:14,minecraft:orange_dye

View File

@@ -6,7 +6,7 @@ website: http://dev.bukkit.org/server-mods/logblock/
main: de.diddiz.LogBlock.LogBlock main: de.diddiz.LogBlock.LogBlock
description: ${project.description} description: ${project.description}
softdepend: [WorldEdit] softdepend: [WorldEdit]
api-version: 1.13 api-version: 1.14
commands: commands:
lb: lb:
description: 'LogBlock plugin commands' description: 'LogBlock plugin commands'