mirror of
https://github.com/SunNetservers/Launchpad.git
synced 2025-04-02 01:36:28 +02:00
Adds a command for getting current launchpad information
This commit is contained in:
parent
762f8e14dc
commit
1a9ad558ec
@ -21,6 +21,7 @@ If you alter several launchpad values in succession, they'll all be applied to t
|
|||||||
|
|
||||||
| Command | Arguments | Description |
|
| Command | Arguments | Description |
|
||||||
|-------------------------------|-----------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
|-------------------------------|-----------------------------------------------------|----------------------------------------------------------------------------------------------------------|
|
||||||
|
| /launchpad check | | Checks whether the block the player is currently looking at is a launchpad, and prints info about it. |
|
||||||
| /launchpad add | | Makes the clicked block into a launchpad. |
|
| /launchpad add | | Makes the clicked block into a launchpad. |
|
||||||
| /launchpad remove | | Removes the clicked block as a launchpad. |
|
| /launchpad remove | | Removes the clicked block as a launchpad. |
|
||||||
| /launchpad abort | | Clears any unprocessed launchpad modifications. |
|
| /launchpad abort | | Clears any unprocessed launchpad modifications. |
|
||||||
|
4
pom.xml
4
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>net.knarcraft</groupId>
|
<groupId>net.knarcraft</groupId>
|
||||||
<artifactId>Launchpad</artifactId>
|
<artifactId>Launchpad</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Launchpad</name>
|
<name>Launchpad</name>
|
||||||
@ -97,7 +97,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.knarcraft</groupId>
|
<groupId>net.knarcraft</groupId>
|
||||||
<artifactId>knarlib</artifactId>
|
<artifactId>knarlib</artifactId>
|
||||||
<version>1.2.2</version>
|
<version>1.2.5</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -3,9 +3,12 @@ package net.knarcraft.launchpad.command;
|
|||||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||||
import net.knarcraft.launchpad.Launchpad;
|
import net.knarcraft.launchpad.Launchpad;
|
||||||
import net.knarcraft.launchpad.config.LaunchpadMessage;
|
import net.knarcraft.launchpad.config.LaunchpadMessage;
|
||||||
|
import net.knarcraft.launchpad.launchpad.LaunchpadBlock;
|
||||||
|
import net.knarcraft.launchpad.launchpad.LaunchpadBlockHandler;
|
||||||
import net.knarcraft.launchpad.launchpad.ModificationAction;
|
import net.knarcraft.launchpad.launchpad.ModificationAction;
|
||||||
import net.knarcraft.launchpad.launchpad.ModificationRequest;
|
import net.knarcraft.launchpad.launchpad.ModificationRequest;
|
||||||
import net.knarcraft.launchpad.launchpad.ModificationRequestHandler;
|
import net.knarcraft.launchpad.launchpad.ModificationRequestHandler;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -58,6 +61,9 @@ public class LaunchpadCommand implements CommandExecutor {
|
|||||||
ModificationRequestHandler.addRequest(player.getUniqueId(), new ModificationRequest(
|
ModificationRequestHandler.addRequest(player.getUniqueId(), new ModificationRequest(
|
||||||
ModificationAction.VERTICAL_VELOCITY, nullArgument(arguments[2])));
|
ModificationAction.VERTICAL_VELOCITY, nullArgument(arguments[2])));
|
||||||
}
|
}
|
||||||
|
case CHECK -> {
|
||||||
|
return checkLaunchpad(player, stringFormatter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stringFormatter.displaySuccessMessage(commandSender, LaunchpadMessage.SUCCESS_CLICK_BLOCK);
|
stringFormatter.displaySuccessMessage(commandSender, LaunchpadMessage.SUCCESS_CLICK_BLOCK);
|
||||||
@ -90,4 +96,30 @@ public class LaunchpadCommand implements CommandExecutor {
|
|||||||
return argument.equalsIgnoreCase("null") ? null : argument;
|
return argument.equalsIgnoreCase("null") ? null : argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks which launchpad is looked at, and prints information about it
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to check information about a launchpad</p>
|
||||||
|
* @param stringFormatter <p>The string formatter to use for output</p>
|
||||||
|
* @return <p>Whether the player used the command correctly</p>
|
||||||
|
*/
|
||||||
|
private boolean checkLaunchpad(@NotNull Player player, @NotNull StringFormatter stringFormatter) {
|
||||||
|
Block targetBlock = player.getTargetBlockExact(7);
|
||||||
|
if (targetBlock == null) {
|
||||||
|
stringFormatter.displaySuccessMessage(player, LaunchpadMessage.ERROR_NOT_LOOKING_AT_BLOCK);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LaunchpadBlock launchpadBlock = LaunchpadBlockHandler.getLaunchpadBlock(targetBlock);
|
||||||
|
if (launchpadBlock != null) {
|
||||||
|
stringFormatter.displaySuccessMessage(player, launchpadBlock.toString());
|
||||||
|
} else {
|
||||||
|
if (!Launchpad.getInstance().getConfiguration().isNotLaunchpadMaterial(targetBlock.getType())) {
|
||||||
|
stringFormatter.displaySuccessMessage(player, new LaunchpadBlock(targetBlock, true).toString());
|
||||||
|
} else {
|
||||||
|
stringFormatter.displaySuccessMessage(player, LaunchpadMessage.ERROR_NO_LAUNCHPAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,26 @@ public enum LaunchpadMessage implements TranslatableMessage {
|
|||||||
* The message to display when a launchpad has been added or modified
|
* The message to display when a launchpad has been added or modified
|
||||||
*/
|
*/
|
||||||
SUCCESS_MODIFIED_LAUNCHPAD,
|
SUCCESS_MODIFIED_LAUNCHPAD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The message to display when the player is not looking at a block, which is required
|
||||||
|
*/
|
||||||
|
ERROR_NOT_LOOKING_AT_BLOCK,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The message to display when the player is not looking at a launchpad
|
||||||
|
*/
|
||||||
|
ERROR_NO_LAUNCHPAD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The format to use for printing launchpad information
|
||||||
|
*/
|
||||||
|
SUCCESS_LAUNCHPAD_INFO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The suffix to add when a launchpad's value is inherited
|
||||||
|
*/
|
||||||
|
SUCCESS_LAUNCHPAD_INFO_INHERITED,
|
||||||
;
|
;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
package net.knarcraft.launchpad.launchpad;
|
package net.knarcraft.launchpad.launchpad;
|
||||||
|
|
||||||
|
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||||
import net.knarcraft.launchpad.Launchpad;
|
import net.knarcraft.launchpad.Launchpad;
|
||||||
|
import net.knarcraft.launchpad.config.LaunchpadMessage;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A block registered as a launchpad
|
* A block registered as a launchpad
|
||||||
*/
|
*/
|
||||||
@ -15,17 +20,20 @@ public class LaunchpadBlock {
|
|||||||
private double horizontalVelocity;
|
private double horizontalVelocity;
|
||||||
private double verticalVelocity;
|
private double verticalVelocity;
|
||||||
private @Nullable BlockFace fixedDirection;
|
private @Nullable BlockFace fixedDirection;
|
||||||
|
private final boolean isImplicit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new launchpad block
|
* Instantiates a new launchpad block
|
||||||
*
|
*
|
||||||
* @param block <p>The block to register this launchpad block for</p>
|
* @param block <p>The block to register this launchpad block for</p>
|
||||||
|
* @param isImplicit <p>Whether the block in question is implicitly a launchpad, or has been manually created</p>
|
||||||
*/
|
*/
|
||||||
public LaunchpadBlock(@NotNull Block block) {
|
public LaunchpadBlock(@NotNull Block block, boolean isImplicit) {
|
||||||
this.block = block;
|
this.block = block;
|
||||||
this.horizontalVelocity = -1;
|
this.horizontalVelocity = -1;
|
||||||
this.verticalVelocity = -1;
|
this.verticalVelocity = -1;
|
||||||
this.fixedDirection = null;
|
this.fixedDirection = null;
|
||||||
|
this.isImplicit = isImplicit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,13 +43,15 @@ public class LaunchpadBlock {
|
|||||||
* @param horizontalVelocity <p>The horizontal velocity of the launchpad</p>
|
* @param horizontalVelocity <p>The horizontal velocity of the launchpad</p>
|
||||||
* @param verticalVelocity <p>The vertical velocity of the launchpad</p>
|
* @param verticalVelocity <p>The vertical velocity of the launchpad</p>
|
||||||
* @param fixedDirection <p>The fixed direction of the launchpad</p>
|
* @param fixedDirection <p>The fixed direction of the launchpad</p>
|
||||||
|
* @param isImplicit <p>Whether the block in question is implicitly a launchpad, or has been manually created</p>
|
||||||
*/
|
*/
|
||||||
public LaunchpadBlock(@NotNull Block block, double horizontalVelocity, double verticalVelocity,
|
public LaunchpadBlock(@NotNull Block block, double horizontalVelocity, double verticalVelocity,
|
||||||
@Nullable BlockFace fixedDirection) {
|
@Nullable BlockFace fixedDirection, boolean isImplicit) {
|
||||||
this.block = block;
|
this.block = block;
|
||||||
setHorizontalVelocity(horizontalVelocity);
|
setHorizontalVelocity(horizontalVelocity);
|
||||||
setVerticalVelocity(verticalVelocity);
|
setVerticalVelocity(verticalVelocity);
|
||||||
setFixedDirection(fixedDirection);
|
setFixedDirection(fixedDirection);
|
||||||
|
this.isImplicit = isImplicit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,4 +149,36 @@ public class LaunchpadBlock {
|
|||||||
return this.verticalVelocity;
|
return this.verticalVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringFormatter stringFormatter = Launchpad.getInstance().getStringFormatter();
|
||||||
|
String inheritedSuffix = stringFormatter.getUnformattedColoredMessage(
|
||||||
|
LaunchpadMessage.SUCCESS_LAUNCHPAD_INFO_INHERITED);
|
||||||
|
|
||||||
|
String directionString = fixedDirection != null ? fixedDirection.name() : "None";
|
||||||
|
Location location = block.getLocation();
|
||||||
|
String coordinates = location.getBlockX() + "," + location.getBlockY() + "," + location.getBlockZ();
|
||||||
|
if (this.isImplicit) {
|
||||||
|
coordinates += inheritedSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
String hVelocity;
|
||||||
|
if (this.horizontalVelocity > 0) {
|
||||||
|
hVelocity = String.valueOf(this.horizontalVelocity);
|
||||||
|
} else {
|
||||||
|
hVelocity = getHorizontalVelocity() + inheritedSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
String vVelocity;
|
||||||
|
if (this.verticalVelocity > 0) {
|
||||||
|
vVelocity = String.valueOf(this.verticalVelocity);
|
||||||
|
} else {
|
||||||
|
vVelocity = getVerticalVelocity() + inheritedSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringFormatter.replacePlaceholders(LaunchpadMessage.SUCCESS_LAUNCHPAD_INFO,
|
||||||
|
List.of("{location}", "{horizontalVelocity}", "{verticalVelocity}", "{fixedDirection}"),
|
||||||
|
List.of(coordinates, hVelocity, vVelocity, directionString));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ public final class LaunchpadBlockHandler {
|
|||||||
fixedDirection = BlockFace.valueOf(configurationSection.getString(key + ".fixedDirection"));
|
fixedDirection = BlockFace.valueOf(configurationSection.getString(key + ".fixedDirection"));
|
||||||
}
|
}
|
||||||
launchpadBlocks.put(launchpadBlock, new LaunchpadBlock(launchpadBlock, horizontalVelocity, verticalVelocity,
|
launchpadBlocks.put(launchpadBlock, new LaunchpadBlock(launchpadBlock, horizontalVelocity, verticalVelocity,
|
||||||
fixedDirection));
|
fixedDirection, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,11 @@ public enum ModificationAction {
|
|||||||
* The action of setting both velocities at once
|
* The action of setting both velocities at once
|
||||||
*/
|
*/
|
||||||
VELOCITIES("velocities", 2),
|
VELOCITIES("velocities", 2),
|
||||||
;
|
|
||||||
|
/**
|
||||||
|
* The action of checking launchpad information for the looked at block
|
||||||
|
*/
|
||||||
|
CHECK("check", 0);
|
||||||
|
|
||||||
private final @NotNull String commandName;
|
private final @NotNull String commandName;
|
||||||
private final int neededArguments;
|
private final int neededArguments;
|
||||||
|
@ -77,7 +77,7 @@ public class LaunchpadModifyListener implements Listener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
existingLaunchpad = new LaunchpadBlock(block);
|
existingLaunchpad = new LaunchpadBlock(block, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (request.modificationAction()) {
|
switch (request.modificationAction()) {
|
||||||
|
@ -14,7 +14,7 @@ commands:
|
|||||||
permission: launchpad.reload
|
permission: launchpad.reload
|
||||||
launchpad:
|
launchpad:
|
||||||
usage: |
|
usage: |
|
||||||
/<command> <add | remove | abort>
|
/<command> <check | add | remove | abort>
|
||||||
/<command> <verticalVelocity | horizontalVelocity | fixedDirection> <value>
|
/<command> <verticalVelocity | horizontalVelocity | fixedDirection> <value>
|
||||||
/<command> velocities <horizontalVelocity> <verticalVelocity>
|
/<command> velocities <horizontalVelocity> <verticalVelocity>
|
||||||
description: Used to alter launchpads
|
description: Used to alter launchpads
|
||||||
|
@ -1,7 +1,17 @@
|
|||||||
en:
|
en:
|
||||||
ERROR_PLAYER_ONLY: "This command must be used by a player"
|
ERROR_PLAYER_ONLY: "&7This command must be used by a player"
|
||||||
ERROR_NOT_WHITELISTED: "The block could not be modified, as it's not whitelisted. If you want to abort changing a launchpad, use \"/launchpad abort\""
|
ERROR_NOT_WHITELISTED: "&7The block could not be modified, as it's not whitelisted. If you want to abort changing a launchpad, use \"/launchpad abort\""
|
||||||
SUCCESS_PLUGIN_RELOADED: "Plugin reloaded!"
|
SUCCESS_PLUGIN_RELOADED: "&7Plugin reloaded!"
|
||||||
SUCCESS_MODIFICATIONS_CLEARED: "Cleared your launchpad modification queue"
|
SUCCESS_MODIFICATIONS_CLEARED: "&7Cleared your launchpad modification queue"
|
||||||
SUCCESS_CLICK_BLOCK: "Click the launchpad you want to create or modify"
|
SUCCESS_CLICK_BLOCK: "&7Click the launchpad you want to create or modify"
|
||||||
SUCCESS_MODIFIED_LAUNCHPAD: "The clicked block's launchpad properties have been modified"
|
SUCCESS_MODIFIED_LAUNCHPAD: "&7The clicked block's launchpad properties have been modified"
|
||||||
|
ERROR_NOT_LOOKING_AT_BLOCK: "&7You are not currently looking at a block"
|
||||||
|
ERROR_NO_LAUNCHPAD: "&7The block you are looking at is not a launchpad"
|
||||||
|
SUCCESS_LAUNCHPAD_INFO: |
|
||||||
|
|
||||||
|
&f- &7Launchpad info &f-
|
||||||
|
&7Location: {location}
|
||||||
|
&7Horizontal Velocity: {horizontalVelocity}
|
||||||
|
&7Vertical Velocity: {verticalVelocity}
|
||||||
|
&7Fixed Direction: {fixedDirection}
|
||||||
|
SUCCESS_LAUNCHPAD_INFO_INHERITED: " &0[&fInherited&0]"
|
Loading…
x
Reference in New Issue
Block a user