mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-14 14:45:31 +01:00
Fix group signs not loading correctly
...and minor further fixes.
This commit is contained in:
parent
a018664102
commit
0cc9a28f4d
@ -95,6 +95,7 @@ public class DPortal {
|
||||
|
||||
if (dgroup.getGameWorld() == null) {
|
||||
MessageUtil.sendMessage(player, plugin.getDMessages().get("Error_DungeonNotExist", DGroup.get(player).getMapName()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (dgroup.getGameWorld().getLocLobby() == null) {
|
||||
|
@ -43,7 +43,7 @@ public class GroupSign {
|
||||
|
||||
this.startSign = startSign;
|
||||
dGroups = new DGroup[maxGroups];
|
||||
this.multiFloor = multiFloor;
|
||||
this.setMultiFloor(multiFloor);
|
||||
if (multiFloor) {
|
||||
dungeonName = identifier;
|
||||
Dungeon dungeon = plugin.getDungeons().getDungeon(identifier);
|
||||
@ -81,6 +81,36 @@ public class GroupSign {
|
||||
this.dungeonName = dungeonName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the mapName
|
||||
*/
|
||||
public String getMapName() {
|
||||
return mapName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mapName
|
||||
* the mapName to set
|
||||
*/
|
||||
public void setMapName(String mapName) {
|
||||
this.mapName = mapName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the multiFloor
|
||||
*/
|
||||
public boolean isMultiFloor() {
|
||||
return multiFloor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param multiFloor
|
||||
* the multiFloor to set
|
||||
*/
|
||||
public void setMultiFloor(boolean multiFloor) {
|
||||
this.multiFloor = multiFloor;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
int i = 0;
|
||||
for (DGroup dGroup : dGroups) {
|
||||
@ -347,17 +377,20 @@ public class GroupSign {
|
||||
}
|
||||
|
||||
if ( !GameWorld.canPlayDungeon(groupSign.mapName, player)) {
|
||||
File file = new File(DungeonsXL.getPlugin().getDataFolder() + "/maps/" + groupSign.mapName, "config.yml");
|
||||
File file = new File(plugin.getDataFolder() + "/maps/" + groupSign.mapName, "config.yml");
|
||||
if (file != null) {
|
||||
WorldConfig confReader = new WorldConfig(file);
|
||||
if (confReader != null) {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_Cooldown", "" + confReader.getTimeToNextPlay()));
|
||||
MessageUtil.sendMessage(player, plugin.getDMessages().get("Error_Cooldown", "" + confReader.getTimeToNextPlay()));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( !GameWorld.checkRequirements(groupSign.mapName, player)) {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_Requirements"));
|
||||
MessageUtil.sendMessage(player, plugin.getDMessages().get("Error_Requirements"));
|
||||
return true;
|
||||
}
|
||||
|
||||
int sx1 = groupSign.startSign.getX(), sy1 = groupSign.startSign.getY(), sz1 = groupSign.startSign.getZ();
|
||||
@ -379,7 +412,12 @@ public class GroupSign {
|
||||
Sign topSign = (Sign) topBlock.getState();
|
||||
if (topSign.getLine(0).equals(strNewGrp)) {
|
||||
if (DGroup.get(player) == null) {
|
||||
groupSign.dGroups[column] = new DGroup(player, groupSign.mapName, groupSign.multiFloor);
|
||||
if (groupSign.isMultiFloor()) {
|
||||
groupSign.dGroups[column] = new DGroup(player, groupSign.dungeonName, groupSign.isMultiFloor());
|
||||
|
||||
} else {
|
||||
groupSign.dGroups[column] = new DGroup(player, groupSign.mapName, groupSign.isMultiFloor());
|
||||
}
|
||||
groupSign.update();
|
||||
}
|
||||
|
||||
@ -451,7 +489,7 @@ public class GroupSign {
|
||||
configFile.set(preString + ".z", groupSign.startSign.getZ());
|
||||
|
||||
// Etc.
|
||||
if (groupSign.multiFloor) {
|
||||
if (groupSign.isMultiFloor()) {
|
||||
configFile.set(preString + ".dungeon", groupSign.dungeonName);
|
||||
|
||||
} else {
|
||||
@ -460,7 +498,7 @@ public class GroupSign {
|
||||
|
||||
configFile.set(preString + ".maxGroups", groupSign.dGroups.length);
|
||||
configFile.set(preString + ".maxPlayersPerGroup", groupSign.maxPlayersPerGroup);
|
||||
configFile.set(preString + ".multiFloor", groupSign.multiFloor);
|
||||
configFile.set(preString + ".multiFloor", groupSign.isMultiFloor());
|
||||
}
|
||||
}
|
||||
|
||||
@ -480,8 +518,8 @@ public class GroupSign {
|
||||
int maxGroups = configFile.getInt(preString + ".maxGroups");
|
||||
int maxPlayersPerGroup = configFile.getInt(preString + ".maxPlayersPerGroup");
|
||||
boolean multiFloor = false;
|
||||
if (configFile.contains("multiFloor")) {
|
||||
multiFloor = configFile.getBoolean("multiFloor");
|
||||
if (configFile.contains(preString + ".multiFloor")) {
|
||||
multiFloor = configFile.getBoolean(preString + ".multiFloor");
|
||||
}
|
||||
Block startSign = world.getBlockAt(configFile.getInt(preString + ".x"), configFile.getInt(preString + ".y"), configFile.getInt(preString + ".z"));
|
||||
|
||||
|
@ -32,10 +32,12 @@ public class BlockListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onBlockPhysics(BlockPhysicsEvent event) {
|
||||
if (event.getBlock().getType() == Material.PORTAL) {
|
||||
if (DPortal.get(event.getBlock()) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (event.getBlock().getType() != Material.PORTAL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (DPortal.get(event.getBlock()) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,14 +74,14 @@ public class BlockListener implements Listener {
|
||||
}
|
||||
|
||||
// Editworld Signs
|
||||
EditWorld eworld = EditWorld.get(block.getWorld());
|
||||
if (eworld != null) {
|
||||
eworld.getSign().remove(event.getBlock());
|
||||
EditWorld editWorld = EditWorld.get(block.getWorld());
|
||||
if (editWorld != null) {
|
||||
editWorld.getSign().remove(event.getBlock());
|
||||
}
|
||||
|
||||
// Deny GameWorld Blocks
|
||||
GameWorld gworld = GameWorld.get(block.getWorld());
|
||||
if (gworld != null) {
|
||||
GameWorld gameWorld = GameWorld.get(block.getWorld());
|
||||
if (gameWorld != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@ -90,25 +92,28 @@ public class BlockListener implements Listener {
|
||||
Block block = event.getBlock();
|
||||
|
||||
// Deny GameWorld Blocks
|
||||
GameWorld gworld = GameWorld.get(block.getWorld());
|
||||
if (gworld != null) {
|
||||
if ( !GamePlaceableBlock.canBuildHere(block, block.getFace(event.getBlockAgainst()), event.getItemInHand().getType(), gworld)) {
|
||||
|
||||
// Workaround for a bug that would allow 3-Block-high jumping
|
||||
Location loc = event.getPlayer().getLocation();
|
||||
if (loc.getY() > block.getY() + 1.0 && loc.getY() <= block.getY() + 1.5) {
|
||||
if (loc.getX() >= block.getX() - 0.3 && loc.getX() <= block.getX() + 1.3) {
|
||||
if (loc.getZ() >= block.getZ() - 0.3 && loc.getZ() <= block.getZ() + 1.3) {
|
||||
loc.setX(block.getX() + 0.5);
|
||||
loc.setY(block.getY());
|
||||
loc.setZ(block.getZ() + 0.5);
|
||||
event.getPlayer().teleport(loc);
|
||||
}
|
||||
}
|
||||
GameWorld gameWorld = GameWorld.get(block.getWorld());
|
||||
if (gameWorld == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (GamePlaceableBlock.canBuildHere(block, block.getFace(event.getBlockAgainst()), event.getItemInHand().getType(), gameWorld)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Workaround for a bug that would allow 3-Block-high jumping
|
||||
Location loc = event.getPlayer().getLocation();
|
||||
if (loc.getY() > block.getY() + 1.0 && loc.getY() <= block.getY() + 1.5) {
|
||||
if (loc.getX() >= block.getX() - 0.3 && loc.getX() <= block.getX() + 1.3) {
|
||||
if (loc.getZ() >= block.getZ() - 0.3 && loc.getZ() <= block.getZ() + 1.3) {
|
||||
loc.setX(block.getX() + 0.5);
|
||||
loc.setY(block.getY());
|
||||
loc.setZ(block.getZ() + 0.5);
|
||||
event.getPlayer().teleport(loc);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
@ -116,40 +121,48 @@ public class BlockListener implements Listener {
|
||||
Player player = event.getPlayer();
|
||||
Block block = event.getBlock();
|
||||
String[] lines = event.getLines();
|
||||
EditWorld eworld = EditWorld.get(player.getWorld());
|
||||
EditWorld editWorld = EditWorld.get(player.getWorld());
|
||||
|
||||
// Group Signs
|
||||
if (eworld == null) {
|
||||
if (player.isOp() || player.hasPermission("dxl.sign")) {
|
||||
if (lines[0].equalsIgnoreCase("[DXL]")) {
|
||||
if (lines[1].equalsIgnoreCase("Group")) {
|
||||
String dungeonName = lines[2];
|
||||
|
||||
String[] data = lines[3].split("\\,");
|
||||
if (data.length >= 2 && data.length <= 3) {
|
||||
int maxGroups = IntegerUtil.parseInt(data[0]);
|
||||
int maxPlayersPerGroup = IntegerUtil.parseInt(data[1]);
|
||||
boolean multiFloor = false;
|
||||
if (data.length == 3) {
|
||||
if (data[2].equals("+")) {
|
||||
multiFloor = true;
|
||||
}
|
||||
}
|
||||
if (maxGroups > 0 && maxPlayersPerGroup > 0) {
|
||||
if (GroupSign.tryToCreate(event.getBlock(), dungeonName, maxGroups, maxPlayersPerGroup, multiFloor) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
if (editWorld == null) {
|
||||
if ( !player.hasPermission("dxl.sign")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !lines[0].equalsIgnoreCase("[DXL]")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (lines[1].equalsIgnoreCase("Group")) {
|
||||
String dungeonName = lines[2];
|
||||
|
||||
String[] data = lines[3].split("\\,");
|
||||
if (data.length >= 2 && data.length <= 3) {
|
||||
int maxGroups = IntegerUtil.parseInt(data[0]);
|
||||
int maxPlayersPerGroup = IntegerUtil.parseInt(data[1]);
|
||||
boolean multiFloor = false;
|
||||
if (data.length == 3) {
|
||||
if (data[2].equals("+")) {
|
||||
multiFloor = true;
|
||||
}
|
||||
} else if (lines[1].equalsIgnoreCase("Leave")) {
|
||||
if (block.getState() instanceof Sign) {
|
||||
Sign sign = (Sign) block.getState();
|
||||
new LeaveSign(sign);
|
||||
}
|
||||
|
||||
if (maxGroups > 0 && maxPlayersPerGroup > 0) {
|
||||
if (GroupSign.tryToCreate(event.getBlock(), dungeonName, maxGroups, maxPlayersPerGroup, multiFloor) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (lines[1].equalsIgnoreCase("Leave")) {
|
||||
if (block.getState() instanceof Sign) {
|
||||
Sign sign = (Sign) block.getState();
|
||||
new LeaveSign(sign);
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
} else { // Editworld Signs
|
||||
Sign sign = (Sign) block.getState();
|
||||
if (sign != null) {
|
||||
@ -160,20 +173,21 @@ public class BlockListener implements Listener {
|
||||
|
||||
DSign dsign = DSign.create(sign, null);
|
||||
|
||||
if (dsign != null) {
|
||||
if (player.isOp() || player.hasPermission(dsign.getType().getBuildPermission())) {
|
||||
if (dsign.check()) {
|
||||
eworld.checkSign(block);
|
||||
eworld.getSign().add(block);
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Player_SignCreated"));
|
||||
|
||||
} else {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_SignWrongFormat"));
|
||||
}
|
||||
|
||||
} else {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_NoPermissions"));
|
||||
}
|
||||
if (dsign == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !player.hasPermission(dsign.getType().getBuildPermission())) {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_NoPermissions"));
|
||||
}
|
||||
|
||||
if (dsign.check()) {
|
||||
editWorld.checkSign(block);
|
||||
editWorld.getSign().add(block);
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Player_SignCreated"));
|
||||
|
||||
} else {
|
||||
MessageUtil.sendMessage(player, DungeonsXL.getPlugin().getDMessages().get("Error_SignWrongFormat"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -183,18 +197,20 @@ public class BlockListener implements Listener {
|
||||
public void onBlockSpread(BlockSpreadEvent event) {
|
||||
Block block = event.getBlock();
|
||||
// Block the Spread off Vines
|
||||
if (block.getType() == Material.VINE) {
|
||||
// Check GameWorlds
|
||||
GameWorld gworld = GameWorld.get(event.getBlock().getWorld());
|
||||
if (gworld != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
// Check EditWorlds
|
||||
EditWorld eworld = EditWorld.get(event.getBlock().getWorld());
|
||||
if (eworld != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (block.getType() != Material.VINE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check GameWorlds
|
||||
GameWorld gameWorld = GameWorld.get(event.getBlock().getWorld());
|
||||
if (gameWorld != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
// Check EditWorlds
|
||||
EditWorld editWorld = EditWorld.get(event.getBlock().getWorld());
|
||||
if (editWorld != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
}
|
||||
@ -213,9 +229,9 @@ public class BlockListener implements Listener {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (GameWorld gworld : DungeonsXL.getPlugin().getGameWorlds()) {
|
||||
if (block.getWorld() == gworld.getWorld()) {
|
||||
RedstoneTrigger.updateAll(gworld);
|
||||
for (GameWorld gameWorld : DungeonsXL.getPlugin().getGameWorlds()) {
|
||||
if (block.getWorld() == gameWorld.getWorld()) {
|
||||
RedstoneTrigger.updateAll(gameWorld);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,12 +30,12 @@ public class DGroup {
|
||||
plugin.getDGroups().add(this);
|
||||
|
||||
this.players.add(player);
|
||||
if (multiFloor) {
|
||||
|
||||
Dungeon dungeon = plugin.getDungeons().getDungeon(identifier);
|
||||
if (multiFloor && dungeon != null) {
|
||||
this.dungeonName = identifier;
|
||||
this.mapName = plugin.getDungeons().getDungeon(dungeonName).getConfig().getStartFloor();
|
||||
System.out.println("This one?");
|
||||
this.unplayedFloors = plugin.getDungeons().getDungeon(dungeonName).getConfig().getFloors();
|
||||
System.out.println("If this shows p,");
|
||||
this.mapName = dungeon.getConfig().getStartFloor();
|
||||
this.unplayedFloors = dungeon.getConfig().getFloors();
|
||||
|
||||
} else {
|
||||
this.mapName = identifier;
|
||||
|
Loading…
Reference in New Issue
Block a user