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>
|
<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>
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
|
@@ -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());
|
||||||
|
@@ -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,
|
||||||
|
@@ -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)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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());
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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 );
|
||||||
|
@@ -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,15 +147,11 @@ 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.queueSignBreak(actor, (Sign) block.getState());
|
|
||||||
} else {
|
|
||||||
consumer.queueBlockBreak(actor, block.getState());
|
consumer.queueBlockBreak(actor, block.getState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Special door check
|
// Special door check
|
||||||
if (origin.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(origin.getType())) {
|
if (origin.getType() == Material.IRON_DOOR || BukkitUtils.isWoodenDoor(origin.getType())) {
|
||||||
|
@@ -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]
|
||||||
|
@@ -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
|
||||||
|
@@ -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'
|
||||||
|
Reference in New Issue
Block a user