Removes some redundancy in createPortal
This commit is contained in:
@@ -58,18 +58,19 @@ public class PortalCreator {
|
||||
*/
|
||||
@Nullable
|
||||
public Portal createPortal() {
|
||||
String route = "PortalCreator::createPortal";
|
||||
BlockLocation signLocation = new BlockLocation(event.getBlock());
|
||||
Block signControlBlock = signLocation.getParent();
|
||||
|
||||
//Return early if the sign is not placed on a block, or the block is not a control block
|
||||
if (signControlBlock == null || GateHandler.getGatesByControlBlock(signControlBlock).isEmpty()) {
|
||||
Stargate.debug("createPortal", "Control block not registered");
|
||||
Stargate.debug(route, "Control block not registered");
|
||||
return null;
|
||||
}
|
||||
|
||||
//The control block is already part of another portal
|
||||
if (PortalHandler.getByBlock(signControlBlock) != null) {
|
||||
Stargate.debug("createPortal", "idParent belongs to existing stargate");
|
||||
Stargate.debug(route, "idParent belongs to existing stargate");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -94,7 +95,7 @@ public class PortalCreator {
|
||||
PortalLocation portalLocation = new PortalLocation();
|
||||
portalLocation.setButtonFacing(buttonFacing).setYaw(yaw).setSignLocation(signLocation);
|
||||
|
||||
Stargate.debug("createPortal", "Finished getting all portal info");
|
||||
Stargate.debug(route, "Finished getting all portal info");
|
||||
|
||||
return createPortal(portalStrings, portalOptions, yaw, portalLocation);
|
||||
}
|
||||
@@ -102,17 +103,18 @@ public class PortalCreator {
|
||||
@Nullable
|
||||
private Portal createPortal(@NotNull PortalStrings portalStrings, @NotNull Map<PortalOption, Boolean> portalOptions,
|
||||
float yaw, @NotNull PortalLocation portalLocation) {
|
||||
String route = "PortalCreator::createPortal";
|
||||
//Try and find a gate matching the new portal
|
||||
Gate gate = PortalHandler.findMatchingGate(portalLocation, player.getWorld());
|
||||
if ((gate == null) || (portalLocation.getButtonVector() == null)) {
|
||||
Stargate.debug("createPortal", "Could not find matching gate layout");
|
||||
Stargate.debug(route, "Could not find matching gate layout");
|
||||
return null;
|
||||
}
|
||||
|
||||
//If the portal is a bungee portal and invalid, abort here
|
||||
if (!PortalHandler.isValidBungeePortal(portalOptions, player, portalStrings.destination(),
|
||||
portalStrings.network())) {
|
||||
Stargate.debug("createPortal", "Portal is an invalid bungee portal");
|
||||
Stargate.debug(route, "Portal is an invalid bungee portal");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -121,12 +123,12 @@ public class PortalCreator {
|
||||
for (PortalOption option : portalOptions.keySet()) {
|
||||
builder.append(option.getCharacterRepresentation()).append(" = ").append(portalOptions.get(option)).append(" ");
|
||||
}
|
||||
Stargate.debug("createPortal", builder.toString());
|
||||
Stargate.debug(route, builder.toString());
|
||||
|
||||
boolean deny = false;
|
||||
String denyMessage = "";
|
||||
|
||||
if (!portalOptions.get(PortalOption.BUNGEE)) {
|
||||
if (!(boolean) portalOptions.get(PortalOption.BUNGEE)) {
|
||||
String networkName = getNetworkName(portalStrings);
|
||||
if (networkName == null) {
|
||||
deny = true;
|
||||
@@ -166,6 +168,7 @@ public class PortalCreator {
|
||||
@Nullable
|
||||
private String getNetworkName(@NotNull PortalStrings portalStrings) {
|
||||
String network = portalStrings.network();
|
||||
String route = "PortalCreator::getNetworkName";
|
||||
|
||||
//Use default network if a proper alternative is not set
|
||||
if (portalStrings.network().length() < 1 || portalStrings.network().length() > getMaxNameNetworkLength()) {
|
||||
@@ -174,17 +177,17 @@ public class PortalCreator {
|
||||
|
||||
//Check if the player can create portals on this network. If not, create a personal portal
|
||||
if (!PermissionHelper.canCreateNetworkGate(player, network)) {
|
||||
Stargate.debug("createPortal", "Player doesn't have create permissions on network. Trying personal");
|
||||
Stargate.debug(route, "Player doesn't have create permissions on network. Trying personal");
|
||||
if (PermissionHelper.canCreatePersonalPortal(player)) {
|
||||
network = player.getName();
|
||||
if (network.length() > getMaxNameNetworkLength()) {
|
||||
network = network.substring(0, getMaxNameNetworkLength());
|
||||
}
|
||||
Stargate.debug("createPortal", "Creating personal portal");
|
||||
Stargate.debug(route, "Creating personal portal");
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_PERSONAL));
|
||||
return network;
|
||||
} else {
|
||||
Stargate.debug("createPortal", "Player does not have access to network");
|
||||
Stargate.debug(route, "Player does not have access to network");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -199,17 +202,17 @@ public class PortalCreator {
|
||||
String gateName = gate.getFilename();
|
||||
gateName = gateName.substring(0, gateName.indexOf('.'));
|
||||
if (!PermissionHelper.canCreatePortal(player, gateName)) {
|
||||
Stargate.debug("createPortal", "Player does not have access to gate layout");
|
||||
Stargate.debug("PortalCreator::canCreatePortal", "Player does not have access to gate layout");
|
||||
return Stargate.getString(Message.CREATION_GATE_DENIED);
|
||||
}
|
||||
|
||||
//Check if the user can create portals to this world.
|
||||
if (!bungee && destinationName.length() > 0) {
|
||||
Portal portal = PortalHandler.getByName(destinationName, network);
|
||||
if (portal != null && portal.getWorld() != null) {
|
||||
String world = portal.getWorld().getName();
|
||||
Portal destinationPortal = PortalHandler.getByName(destinationName, network);
|
||||
if (destinationPortal != null && destinationPortal.getWorld() != null) {
|
||||
String world = destinationPortal.getWorld().getName();
|
||||
if (PermissionHelper.cannotAccessWorld(player, world)) {
|
||||
Stargate.debug("canCreateNetworkGate", "Player does not have access to destination world");
|
||||
Stargate.debug("PortalCreator::canCreatePortal", "Player does not have access to destination world");
|
||||
return Stargate.getString(Message.CREATION_WORLD_DENIED);
|
||||
}
|
||||
}
|
||||
@@ -288,9 +291,11 @@ public class PortalCreator {
|
||||
* @return <p>True if the portal is completely valid</p>
|
||||
*/
|
||||
private boolean checkIfNewPortalIsValid(int cost, @NotNull String portalName) {
|
||||
String route = "PortalCreator::checkIfNewPortalIsValid";
|
||||
|
||||
//Check if the portal name can fit on the sign with padding (>name<)
|
||||
if (portal.getCleanName().length() < 1 || portal.getCleanName().length() > getMaxNameNetworkLength()) {
|
||||
Stargate.debug("createPortal", String.format("Name length error. %s is too long.",
|
||||
Stargate.debug(route, String.format("Name length error. %s is too long.",
|
||||
portal.getCleanName()));
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_NAME_LENGTH));
|
||||
return false;
|
||||
@@ -299,14 +304,14 @@ public class PortalCreator {
|
||||
if (portal.getOptions().isBungee()) {
|
||||
//Check if the bungee portal's name has been duplicated
|
||||
if (PortalHandler.getBungeePortals().get(portal.getCleanName()) != null) {
|
||||
Stargate.debug("createPortal::Bungee", "Gate name duplicate");
|
||||
Stargate.debug(route, "Gate name duplicate");
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_NAME_COLLISION));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
//Check if the portal name has been duplicated on the network
|
||||
if (PortalHandler.getByName(portal.getCleanName(), portal.getCleanNetwork()) != null) {
|
||||
Stargate.debug("createPortal", "Gate name duplicate");
|
||||
Stargate.debug(route, "Gate name duplicate");
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_NAME_COLLISION));
|
||||
return false;
|
||||
}
|
||||
@@ -324,7 +329,7 @@ public class PortalCreator {
|
||||
//Deduct the required fee from the player
|
||||
if (!EconomyHelper.chargePlayerIfNecessary(player, cost)) {
|
||||
EconomyHelper.sendInsufficientFundsMessage(portalName, player, cost);
|
||||
Stargate.debug("createPortal", "Insufficient Funds");
|
||||
Stargate.debug(route, "Insufficient Funds");
|
||||
return false;
|
||||
} else {
|
||||
EconomyHelper.sendDeductMessage(portalName, player, cost);
|
||||
@@ -377,7 +382,8 @@ public class PortalCreator {
|
||||
for (RelativeBlockVector borderVector : gate.getLayout().getBorder()) {
|
||||
BlockLocation borderBlockLocation = topLeft.getRelativeLocation(borderVector, yaw);
|
||||
if (PortalHandler.getByBlock(borderBlockLocation.getBlock()) != null) {
|
||||
Stargate.debug("createPortal", "Gate conflicts with existing gate");
|
||||
Stargate.debug("PortalCreator::conflictsWithExistingPortal",
|
||||
"Gate conflicts with existing gate");
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString(Message.CREATION_CONFLICT));
|
||||
return true;
|
||||
}
|
||||
|
@@ -115,15 +115,11 @@ public class GateHandler {
|
||||
@Nullable
|
||||
private static Gate loadGate(@NotNull File file) {
|
||||
try (Scanner scanner = new Scanner(file)) {
|
||||
Gate gate = loadGate(file.getName(), file.getParent(), scanner);
|
||||
if (gate != null) {
|
||||
return gate;
|
||||
}
|
||||
return loadGate(file.getName(), file.getParent(), scanner);
|
||||
} catch (Exception exception) {
|
||||
Stargate.logSevere(String.format("Could not load Gate %s - %s", file.getName(), exception.getMessage()));
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user