mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-28 13:36:33 +01:00
Fix join sign placing in 1.13+; resolves #501
This commit is contained in:
parent
2828f27502
commit
bc459caac1
15
pom.xml
15
pom.xml
@ -2,13 +2,16 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.erethon</groupId>
|
||||
<artifactId>dungeonsxl</artifactId>
|
||||
<version>0.17.4</version>
|
||||
<version>0.17.5-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>DungeonsXL</name>
|
||||
<url>https://dre2n.github.io</url>
|
||||
<description>Create custom dungeons and adventure maps with ease!</description>
|
||||
<properties>
|
||||
<buildNo></buildNo>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
<build>
|
||||
<finalName>${project.artifactId}-${project.version}${buildNo}</finalName>
|
||||
@ -24,18 +27,10 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<version>3.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
|
@ -216,27 +216,10 @@ public class GameSign extends JoinSign {
|
||||
return tryToCreate(plugin, event.getBlock(), identifier, maxGroupsPerGame, startIfElementsAtLeast);
|
||||
}
|
||||
|
||||
public static GameSign tryToCreate(DungeonsXL plugin, Block startSign, String identifier, int maxGroupsPerGame, int startIfElementsAtLeast) {
|
||||
World world = startSign.getWorld();
|
||||
BlockFace facing = ((Attachable) startSign.getState().getData()).getAttachedFace().getOppositeFace();
|
||||
int x = startSign.getX(), y = startSign.getY(), z = startSign.getZ();
|
||||
|
||||
int verticalSigns = (int) Math.ceil((float) (1 + maxGroupsPerGame) / 4);
|
||||
while (verticalSigns > 1) {
|
||||
Block block = world.getBlockAt(x, y - verticalSigns + 1, z);
|
||||
block.setType(VanillaItem.WALL_SIGN.getMaterial(), false);
|
||||
org.bukkit.material.Sign signData = new org.bukkit.material.Sign(VanillaItem.WALL_SIGN.getMaterial());
|
||||
signData.setFacingDirection(facing);
|
||||
org.bukkit.block.Sign sign = (org.bukkit.block.Sign) block.getState();
|
||||
sign.setData(signData);
|
||||
sign.update(true, false);
|
||||
|
||||
verticalSigns--;
|
||||
}
|
||||
GameSign sign = new GameSign(plugin, plugin.getGlobalProtectionCache().generateId(GameSign.class, world), startSign, identifier, maxGroupsPerGame, startIfElementsAtLeast);
|
||||
|
||||
LWCUtil.removeProtection(startSign);
|
||||
|
||||
public static GameSign tryToCreate(DungeonsXL plugin, Block startSign, String identifier, int maxElements, int startIfElementsAtLeast) {
|
||||
onCreation(plugin, startSign, identifier, maxElements, startIfElementsAtLeast);
|
||||
GameSign sign = new GameSign(plugin, plugin.getGlobalProtectionCache().generateId(GameSign.class, startSign.getWorld()), startSign, identifier,
|
||||
maxElements, startIfElementsAtLeast);
|
||||
return sign;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ package de.erethon.dungeonsxl.global;
|
||||
import de.erethon.caliburn.category.Category;
|
||||
import de.erethon.caliburn.item.VanillaItem;
|
||||
import de.erethon.commons.chat.MessageUtil;
|
||||
import de.erethon.commons.compatibility.Version;
|
||||
import de.erethon.commons.misc.NumberUtil;
|
||||
import de.erethon.dungeonsxl.DungeonsXL;
|
||||
import de.erethon.dungeonsxl.config.DMessage;
|
||||
@ -27,7 +28,9 @@ import de.erethon.dungeonsxl.util.LWCUtil;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.block.data.Directional;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -212,28 +215,10 @@ public class GroupSign extends JoinSign {
|
||||
return tryToCreate(plugin, event.getBlock(), identifier, maxPlayersPerGroup, startIfElementsAtLeast, groupName);
|
||||
}
|
||||
|
||||
public static GroupSign tryToCreate(DungeonsXL plugin, Block startSign, String identifier, int maxPlayersPerGroup, int startIfElementsAtLeast, String groupName) {
|
||||
World world = startSign.getWorld();
|
||||
BlockFace facing = ((Attachable) startSign.getState().getData()).getAttachedFace().getOppositeFace();
|
||||
int x = startSign.getX(), y = startSign.getY(), z = startSign.getZ();
|
||||
|
||||
int verticalSigns = (int) Math.ceil((float) (1 + maxPlayersPerGroup) / 4);
|
||||
while (verticalSigns > 1) {
|
||||
Block block = world.getBlockAt(x, y - verticalSigns + 1, z);
|
||||
block.setType(VanillaItem.WALL_SIGN.getMaterial(), false);
|
||||
org.bukkit.material.Sign signData = new org.bukkit.material.Sign(VanillaItem.WALL_SIGN.getMaterial());
|
||||
signData.setFacingDirection(facing);
|
||||
org.bukkit.block.Sign sign = (org.bukkit.block.Sign) block.getState();
|
||||
sign.setData(signData);
|
||||
sign.update(true, false);
|
||||
|
||||
verticalSigns--;
|
||||
}
|
||||
GroupSign sign = new GroupSign(plugin, plugin.getGlobalProtectionCache().generateId(GroupSign.class, world), startSign, identifier, maxPlayersPerGroup,
|
||||
startIfElementsAtLeast, groupName);
|
||||
|
||||
LWCUtil.removeProtection(startSign);
|
||||
|
||||
public static GroupSign tryToCreate(DungeonsXL plugin, Block startSign, String identifier, int maxElements, int startIfElementsAtLeast, String groupName) {
|
||||
onCreation(plugin, startSign, identifier, maxElements, startIfElementsAtLeast);
|
||||
GroupSign sign = new GroupSign(plugin, plugin.getGlobalProtectionCache().generateId(GroupSign.class, startSign.getWorld()), startSign, identifier,
|
||||
maxElements, startIfElementsAtLeast, groupName);
|
||||
return sign;
|
||||
}
|
||||
|
||||
|
@ -16,17 +16,22 @@
|
||||
*/
|
||||
package de.erethon.dungeonsxl.global;
|
||||
|
||||
import de.erethon.caliburn.item.VanillaItem;
|
||||
import de.erethon.commons.misc.BlockUtil;
|
||||
import de.erethon.dungeonsxl.DungeonsXL;
|
||||
import de.erethon.dungeonsxl.dungeon.Dungeon;
|
||||
import de.erethon.dungeonsxl.util.LWCUtil;
|
||||
import de.erethon.dungeonsxl.world.DResourceWorld;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.material.Attachable;
|
||||
|
||||
/**
|
||||
* @author Daniel Saukel
|
||||
@ -206,4 +211,31 @@ public class JoinSign extends GlobalProtection {
|
||||
}
|
||||
}
|
||||
|
||||
protected static void onCreation(DungeonsXL plugin, Block startSign, String identifier, int maxElements, int startIfElementsAtLeast) {
|
||||
// TODO: Replace as soon as versions older than 1.13 are dropped
|
||||
|
||||
World world = startSign.getWorld();
|
||||
BlockFace facing = ((Attachable) startSign.getState().getData()).getAttachedFace().getOppositeFace();
|
||||
//BlockFace facing = ((Directional) startSign.getBlockData()).getFacing().getOppositeFace();
|
||||
int x = startSign.getX(), y = startSign.getY(), z = startSign.getZ();
|
||||
|
||||
int verticalSigns = (int) Math.ceil((float) (1 + maxElements) / 4);
|
||||
while (verticalSigns > 1) {
|
||||
Block block = world.getBlockAt(x, y - verticalSigns + 1, z);
|
||||
block.setType(VanillaItem.WALL_SIGN.getMaterial(), false);
|
||||
BlockState state = block.getState();
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign) state.getData();
|
||||
signData.setFacingDirection(facing);
|
||||
state.setData(signData);
|
||||
state.update(true, false);
|
||||
// Directional directional = (Directional) block.getBlockData();
|
||||
// directional.setFacing(facing);
|
||||
// block.setBlockData(directional, false);
|
||||
|
||||
verticalSigns--;
|
||||
}
|
||||
|
||||
LWCUtil.removeProtection(startSign);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user