More merge fixes

and use "Levelled" for Cauldrons in 1.13
This commit is contained in:
Sn0wStorm
2018-10-27 12:09:53 +02:00
parent dd495d5204
commit 54a05b83fe
7 changed files with 242 additions and 218 deletions
+1
View File
@@ -12,6 +12,7 @@
# IntelliJ # IntelliJ
/.idea /.idea
/*.iml
# various other potential build files # various other potential build files
/build /build
+2 -2
View File
@@ -35,8 +35,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version> <version>3.7.0</version>
<configuration> <configuration>
<source>1.7</source> <source>1.8</source>
<target>1.7</target> <target>1.8</target>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
</configuration> </configuration>
</plugin> </plugin>
+2 -2
View File
@@ -1,5 +1,5 @@
name: ${project.name} name: Brewery
version: ${project.version} version: 1.7
main: com.dre.brewery.P main: com.dre.brewery.P
softdepend: [LWC, LogBlock, WorldGuard, GriefPrevention, Vault, Citadel] softdepend: [LWC, LogBlock, WorldGuard, GriefPrevention, Vault, Citadel]
authors: [Milan Albrecht, Frank Baumann, ProgrammerDan, Daniel Saukel] authors: [Milan Albrecht, Frank Baumann, ProgrammerDan, Daniel Saukel]
+31 -13
View File
@@ -2,6 +2,7 @@ package com.dre.brewery;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.block.data.Levelled;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@@ -9,6 +10,7 @@ import org.bukkit.block.BlockFace;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.material.Cauldron;
public class BCauldron { public class BCauldron {
public static CopyOnWriteArrayList<BCauldron> bcauldrons = new CopyOnWriteArrayList<>(); public static CopyOnWriteArrayList<BCauldron> bcauldrons = new CopyOnWriteArrayList<>();
@@ -94,21 +96,37 @@ public class BCauldron {
} }
ItemStack potion = bcauldron.ingredients.cook(bcauldron.state); ItemStack potion = bcauldron.ingredients.cook(bcauldron.state);
if (potion != null) { if (potion != null) {
byte data = block.getData();
if (data > 3) {
data = 3;
LegacyUtil.setData(block, data);
} else if (data <= 0) {
bcauldrons.remove(bcauldron);
return false;
}
data -= 1;
LegacyUtil.setData(block, data);
if (data == 0) { if (P.use1_13) {
bcauldrons.remove(bcauldron); Levelled cauldron = ((Levelled) block.getBlockData());
if (cauldron.getLevel() <= 0) {
bcauldrons.remove(bcauldron);
return false;
}
cauldron.setLevel(cauldron.getLevel() - 1);
if (cauldron.getLevel() <= 0) {
bcauldrons.remove(bcauldron);
} else {
bcauldron.someRemoved = true;
}
} else { } else {
bcauldron.someRemoved = true; byte data = block.getData();
if (data > 3) {
data = 3;
} else if (data <= 0) {
bcauldrons.remove(bcauldron);
return false;
}
data -= 1;
LegacyUtil.setData(block, data);
if (data == 0) {
bcauldrons.remove(bcauldron);
} else {
bcauldron.someRemoved = true;
}
} }
// Bukkit Bug, inventory not updating while in event so this // Bukkit Bug, inventory not updating while in event so this
// will delay the give // will delay the give
+156 -155
View File
@@ -12,185 +12,186 @@ import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Levelled; import org.bukkit.block.data.Levelled;
import org.bukkit.material.Cauldron; import org.bukkit.material.Cauldron;
import org.bukkit.material.MaterialData; import org.bukkit.material.MaterialData;
import org.bukkit.material.Stairs;
import org.bukkit.material.Tree; import org.bukkit.material.Tree;
import org.bukkit.material.Wood; import org.bukkit.material.Wood;
public class LegacyUtil { public class LegacyUtil {
private static Method GET_MATERIAL; private static Method GET_MATERIAL;
private static Method GET_BLOCK_TYPE_ID_AT; private static Method GET_BLOCK_TYPE_ID_AT;
private static Method SET_DATA; private static Method SET_DATA;
static { static {
// -1.12.2 methods // <= 1.12.2 methods
try { try {
GET_MATERIAL = Material.class.getDeclaredMethod("getMaterial", int.class); GET_MATERIAL = Material.class.getDeclaredMethod("getMaterial", int.class);
GET_BLOCK_TYPE_ID_AT = World.class.getDeclaredMethod("getBlockTypeIdAt", Location.class); GET_BLOCK_TYPE_ID_AT = World.class.getDeclaredMethod("getBlockTypeIdAt", Location.class);
} catch (NoSuchMethodException | SecurityException e) { } catch (NoSuchMethodException | SecurityException e) {
} }
// 1.13+ methods try {
try { SET_DATA = Class.forName(Bukkit.getServer().getClass().getPackage().getName() + ".block.CraftBlock").getDeclaredMethod("setData", byte.class);
SET_DATA = Class.forName(Bukkit.getServer().getClass().getPackage().getName() + ".block.CraftBlock").getDeclaredMethod("setData", byte.class); } catch (ClassNotFoundException | NoSuchMethodException | SecurityException e) {
} catch (ClassNotFoundException | NoSuchMethodException | SecurityException e) { }
} }
}
public static final Material CLOCK = get("CLOCK", "WATCH"); public static final Material CLOCK = get("CLOCK", "WATCH");
public static final Material OAK_STAIRS = get("OAK_STAIRS", "WOOD_STAIRS"); public static final Material OAK_STAIRS = get("OAK_STAIRS", "WOOD_STAIRS");
public static final Material SPRUCE_STAIRS = get("SPRUCE_STAIRS", "SPRUCE_WOOD_STAIRS"); public static final Material SPRUCE_STAIRS = get("SPRUCE_STAIRS", "SPRUCE_WOOD_STAIRS");
public static final Material BIRCH_STAIRS = get("BIRCH_STAIRS", "BIRCH_WOOD_STAIRS"); public static final Material BIRCH_STAIRS = get("BIRCH_STAIRS", "BIRCH_WOOD_STAIRS");
public static final Material JUNGLE_STAIRS = get("JUNGLE_STAIRS", "JUNGLE_WOOD_STAIRS"); public static final Material JUNGLE_STAIRS = get("JUNGLE_STAIRS", "JUNGLE_WOOD_STAIRS");
public static final Material ACACIA_STAIRS = get("ACACIA_STAIRS"); public static final Material ACACIA_STAIRS = get("ACACIA_STAIRS");
public static final Material DARK_OAK_STAIRS = get("DARK_OAK_STAIRS"); public static final Material DARK_OAK_STAIRS = get("DARK_OAK_STAIRS");
private static Material get(String name) { private static Material get(String name) {
try { try {
return Material.valueOf(name); return Material.valueOf(name);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return null; return null;
} }
} }
private static Material get(String newName, String oldName) { private static Material get(String newName, String oldName) {
try { try {
return Material.valueOf(P.use1_13 ? newName : oldName); return Material.valueOf(P.use1_13 ? newName : oldName);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return null; return null;
} }
} }
public static boolean isWoodPlanks(Material type) { public static boolean isWoodPlanks(Material type) {
return type.name().contains("PLANKS") || type.name().equals("WOOD"); return type.name().endsWith("PLANKS") || type.name().equals("WOOD");
} }
public static boolean isWoodStairs(Material type) { public static boolean isWoodStairs(Material type) {
return type == OAK_STAIRS || type == SPRUCE_STAIRS || type == BIRCH_STAIRS || type == JUNGLE_STAIRS return type == OAK_STAIRS || type == SPRUCE_STAIRS || type == BIRCH_STAIRS || type == JUNGLE_STAIRS
|| (type == ACACIA_STAIRS && ACACIA_STAIRS != null) || (type == DARK_OAK_STAIRS && DARK_OAK_STAIRS != null); || (type == ACACIA_STAIRS && ACACIA_STAIRS != null) || (type == DARK_OAK_STAIRS && DARK_OAK_STAIRS != null);
} }
public static boolean isFence(Material type) { public static boolean isFence(Material type) {
return type.name().endsWith("FENCE"); return type.name().endsWith("FENCE");
} }
public static boolean isSign(Material type) { public static boolean isSign(Material type) {
return type.name().equals("SIGN_POST") || type == Material.SIGN || type == Material.WALL_SIGN; return type == Material.SIGN || type == Material.WALL_SIGN || (!P.use1_13 && type.name().equals("SIGN_POST"));
} }
// LAVA and STATIONARY_LAVA are merged as of 1.13 // LAVA and STATIONARY_LAVA are merged as of 1.13
public static boolean isLava(Material type) { public static boolean isLava(Material type) {
return type.name().equals("STATIONARY_LAVA") || type == Material.LAVA; return type == Material.LAVA || (!P.use1_13 && type.name().equals("STATIONARY_LAVA"));
} }
public static boolean areStairsInverted(Block block) { public static boolean areStairsInverted(Block block) {
if (!P.use1_13) { if (!P.use1_13) {
MaterialData data = block.getState().getData(); MaterialData data = block.getState().getData();
return data instanceof org.bukkit.material.Stairs && (((org.bukkit.material.Stairs) data).isInverted()); return data instanceof org.bukkit.material.Stairs && (((org.bukkit.material.Stairs) data).isInverted());
} else { } else {
BlockData data = block.getBlockData(); BlockData data = block.getBlockData();
return data instanceof org.bukkit.block.data.type.Stairs && ((org.bukkit.block.data.type.Stairs) data).getHalf() == org.bukkit.block.data.type.Stairs.Half.TOP; return data instanceof org.bukkit.block.data.type.Stairs && ((org.bukkit.block.data.type.Stairs) data).getHalf() == org.bukkit.block.data.type.Stairs.Half.TOP;
} }
} }
public static byte getWoodType(Block wood) { public static byte getWoodType(Block wood) {
TreeSpecies woodType = null; TreeSpecies woodType = null;
if (P.use1_13 || isWoodStairs(wood.getType())) { if (P.use1_13 || isWoodStairs(wood.getType())) {
String material = wood.getType().name(); String material = wood.getType().name();
if (material.startsWith("OAK")) { if (material.startsWith("OAK")) {
woodType = TreeSpecies.GENERIC; woodType = TreeSpecies.GENERIC;
} else if (material.startsWith("SPRUCE")) { } else if (material.startsWith("SPRUCE")) {
woodType = TreeSpecies.REDWOOD; woodType = TreeSpecies.REDWOOD;
} else if (material.startsWith("BIRCH")) { } else if (material.startsWith("BIRCH")) {
woodType = TreeSpecies.BIRCH; woodType = TreeSpecies.BIRCH;
} else if (material.startsWith("JUNGLE")) { } else if (material.startsWith("JUNGLE")) {
woodType = TreeSpecies.JUNGLE; woodType = TreeSpecies.JUNGLE;
} else if (material.startsWith("ACACIA")) { } else if (material.startsWith("ACACIA")) {
woodType = TreeSpecies.ACACIA; woodType = TreeSpecies.ACACIA;
} else if (material.startsWith("DARK_OAK")) { } else if (material.startsWith("DARK_OAK")) {
woodType = TreeSpecies.DARK_OAK; woodType = TreeSpecies.DARK_OAK;
} else { } else {
return 0; return 0;
} }
} else { } else {
MaterialData data = wood.getState().getData(); MaterialData data = wood.getState().getData();
if (data instanceof Tree) { if (data instanceof Tree) {
woodType = ((Tree) data).getSpecies(); woodType = ((Tree) data).getSpecies();
} else if (data instanceof Wood) { } else if (data instanceof Wood) {
woodType = ((Wood) data).getSpecies(); woodType = ((Wood) data).getSpecies();
} else { } else {
return 0; return 0;
} }
} }
switch (woodType) { switch (woodType) {
case GENERIC: case GENERIC:
return 2; return 2;
case REDWOOD: case REDWOOD:
return 4; return 4;
case BIRCH: case BIRCH:
return 1; return 1;
case JUNGLE: case JUNGLE:
return 3; return 3;
case ACACIA: case ACACIA:
return 5; return 5;
case DARK_OAK: case DARK_OAK:
return 6; return 6;
default: default:
return 0; return 0;
} }
} }
// 0 = empty, 1 = something in, 2 = full // 0 = empty, 1 = something in, 2 = full
public static byte getFillLevel(Block block) { public static byte getFillLevel(Block block) {
if (block.getType() != Material.CAULDRON) { if (block.getType() != Material.CAULDRON) {
return 0; return 0;
} }
if (P.use1_13) { if (P.use1_13) {
Levelled cauldron = ((Levelled) block.getBlockData()); Levelled cauldron = ((Levelled) block.getBlockData());
if (cauldron.getLevel() == 0) { if (cauldron.getLevel() == 0) {
return 0; return 0;
} else if (cauldron.getLevel() == cauldron.getMaximumLevel()) { } else if (cauldron.getLevel() == cauldron.getMaximumLevel()) {
return 2; return 2;
} else { } else {
return 1; return 1;
} }
} else { } else {
Cauldron cauldron = (Cauldron) block.getState().getData(); Cauldron cauldron = (Cauldron) block.getState().getData();
if (cauldron.isEmpty()) { if (cauldron.isEmpty()) {
return 0; return 0;
} else if (cauldron.isFull()) { } else if (cauldron.isFull()) {
return 2; return 2;
} else { } else {
return 1; return 1;
} }
} }
} }
public static Material getMaterial(int id) { public static Material getMaterial(int id) {
try { try {
return GET_MATERIAL != null ? (Material) GET_MATERIAL.invoke(null, id) : null; return GET_MATERIAL != null ? (Material) GET_MATERIAL.invoke(null, id) : null;
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
return null; return null;
} }
} }
public static int getBlockTypeIdAt(Location location) { // Only used for very old versions of LogBlock
try { public static int getBlockTypeIdAt(Location location) {
return GET_BLOCK_TYPE_ID_AT != null ? (int) GET_BLOCK_TYPE_ID_AT.invoke(location.getWorld(), location) : 0; try {
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { return GET_BLOCK_TYPE_ID_AT != null ? (int) GET_BLOCK_TYPE_ID_AT.invoke(location.getWorld(), location) : 0;
return 0; } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
} return 0;
} }
}
// Setting byte data to blocks works in 1.13, but isn't part of the API anymore // Setting byte data to blocks for older versions
public static void setData(Block block, byte data) { public static void setData(Block block, byte data) {
try { try {
SET_DATA.invoke(block, data); SET_DATA.invoke(block, data);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
} }
} }
} }
+6 -2
View File
@@ -76,7 +76,7 @@ public class P extends JavaPlugin {
String v = Bukkit.getBukkitVersion(); String v = Bukkit.getBukkitVersion();
useUUID = !v.matches("(^|.*[^\\.\\d])1\\.[0-6]([^\\d].*|$)") && !v.matches("(^|.*[^\\.\\d])1\\.7\\.[0-5]([^\\d].*|$)"); useUUID = !v.matches("(^|.*[^\\.\\d])1\\.[0-6]([^\\d].*|$)") && !v.matches("(^|.*[^\\.\\d])1\\.7\\.[0-5]([^\\d].*|$)");
use1_9 = !v.matches("(^|.*[^\\.\\d])1\\.[0-8]([^\\d].*|$)"); use1_9 = !v.matches("(^|.*[^\\.\\d])1\\.[0-8]([^\\d].*|$)");
use1_12 = !v.matches("(^|.*[^\\.\\d])1\\.[0-11]([^\\d].*|$)"); use1_12 = !v.matches("(^|.*[^\\.\\d])1\\.1[0-1]([^\\d].*|$)") && !v.matches("(^|.*[^\\.\\d])1\\.[0-9]([^\\d].*|$)");
use1_13 = !v.matches("(^|.*[^\\.\\d])1\\.1[0-2]([^\\d].*|$)") && !v.matches("(^|.*[^\\.\\d])1\\.[0-9]([^\\d].*|$)"); use1_13 = !v.matches("(^|.*[^\\.\\d])1\\.1[0-2]([^\\d].*|$)") && !v.matches("(^|.*[^\\.\\d])1\\.[0-9]([^\\d].*|$)");
// load the Config // load the Config
@@ -95,7 +95,11 @@ public class P extends JavaPlugin {
readData(); readData();
// Setup Metrics // Setup Metrics
new Metrics(this); try {
new Metrics(this);
} catch (Exception e) {
e.printStackTrace();
}
// Listeners // Listeners
blockListener = new BlockListener(); blockListener = new BlockListener();
@@ -24,7 +24,7 @@ public class WGBarrel7 implements WGBarrel {
WorldGuardPlugin wg = (WorldGuardPlugin) plugin; WorldGuardPlugin wg = (WorldGuardPlugin) plugin;
WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform(); WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform();
World world = platform.getWorldByName(spigot.getWorld().getName()); World world = platform.getWorldByName(spigot.getWorld().getName());
if (!platform.getGlobalStateManager().get(world).useRegions) return true; // Region support disabled if (!platform.getGlobalStateManager().get(world).useRegions) return true; // Region support disabled
WorldEditPlugin we = JavaPlugin.getPlugin(WorldEditPlugin.class); WorldEditPlugin we = JavaPlugin.getPlugin(WorldEditPlugin.class);
if (new RegionPermissionModel((Actor) we.wrapPlayer(player)).mayIgnoreRegionProtection(world)) return true; // Whitelisted cause if (new RegionPermissionModel((Actor) we.wrapPlayer(player)).mayIgnoreRegionProtection(world)) return true; // Whitelisted cause