diff --git a/README.md b/README.md index 5266f07..cafd770 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Add a whole new level of role-play to any server that uses roads, perfect for ci ``` - me.A5H73Y + io.github.a5h73y Carz 7.0 jar @@ -54,5 +54,5 @@ repositories { ``` ``` -compile 'me.A5H73Y:Carz:7.0' +compile 'io.github.a5h73y:Carz:7.0' ``` diff --git a/pom.xml b/pom.xml index 0af0629..385280f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - me.A5H73Y + io.github.a5h73y Carz 7.0 jar @@ -30,7 +30,7 @@ - + spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ @@ -38,12 +38,12 @@ vault-repo - https://jitpack.io + https://jitpack.io/ CodeMC - https://repo.codemc.org/repository/maven-public + https://repo.codemc.org/repository/maven-public/ @@ -53,28 +53,28 @@ - + org.spigotmc spigot-api 1.15.2-R0.1-SNAPSHOT provided - + org.bukkit bukkit 1.15.2-R0.1-SNAPSHOT provided - + net.milkbowl.vault VaultAPI 1.7 provided - + com.connorlinfoot BountifulAPI @@ -142,7 +142,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.2.2 @@ -152,7 +152,7 @@ org.bstats - me.A5H73Y.Carz + io.github.a5h73y.Carz diff --git a/src/main/java/io/github/a5h73y/commands/CarzAutoTabCompleter.java b/src/main/java/io/github/a5h73y/commands/CarzAutoTabCompleter.java index aa80929..34b2f81 100644 --- a/src/main/java/io/github/a5h73y/commands/CarzAutoTabCompleter.java +++ b/src/main/java/io/github/a5h73y/commands/CarzAutoTabCompleter.java @@ -28,32 +28,45 @@ public List onTabComplete(CommandSender sender, Command command, String return null; } + Player player = (Player) sender; List allowedCommands = new ArrayList<>(); List filteredCommands = new ArrayList<>(); - if (carz.getFuelController().isFuelEnabled()) { + allowedCommands.add("cmds"); + allowedCommands.add("claim"); + allowedCommands.add("details"); + + if (Carz.getInstance().getFuelController().isFuelEnabled()) { allowedCommands.add("fuel"); + if (carz.getConfig().getBoolean(Commands.REFUEL.getConfigPath())) { allowedCommands.add("refuel"); } } - if (carz.getConfig().getBoolean(Commands.PURCHASE.getConfigPath())) { - allowedCommands.add("purchase"); + if (PermissionUtils.hasStrictPermission(player, Permissions.PURCHASE, false)) { allowedCommands.add("stash"); + allowedCommands.add("cartypes"); + + if (carz.getConfig().getBoolean(Commands.PURCHASE.getConfigPath())) { + allowedCommands.add("purchase"); + } } - if (carz.getConfig().getBoolean(Commands.UPGRADE.getConfigPath())) { - allowedCommands.add("upgrade"); + if (carz.getConfig().getBoolean(Commands.UPGRADE.getConfigPath()) + && PermissionUtils.hasStrictPermission(player, Permissions.UPGRADE, false)) { + allowedCommands.add( "upgrade"); } - if (PermissionUtils.hasStrictPermission((Player) sender, Permissions.ADMIN, false)) { + if (PermissionUtils.hasStrictPermission(player, Permissions.ADMIN, false)) { + allowedCommands.add("addCB"); + allowedCommands.add("createtype"); + allowedCommands.add("economy"); + allowedCommands.add("reload"); + if (carz.getConfig().getBoolean(Commands.SPAWN.getConfigPath())) { allowedCommands.add("spawn"); } - - allowedCommands.add("reload"); - allowedCommands.add("addCB"); } for (String allowedCommand : allowedCommands) { diff --git a/src/main/java/io/github/a5h73y/commands/CarzCommands.java b/src/main/java/io/github/a5h73y/commands/CarzCommands.java index e655b07..64fbcc7 100644 --- a/src/main/java/io/github/a5h73y/commands/CarzCommands.java +++ b/src/main/java/io/github/a5h73y/commands/CarzCommands.java @@ -4,6 +4,7 @@ import io.github.a5h73y.conversation.CreateCarTypeConversation; import io.github.a5h73y.enums.Commands; import io.github.a5h73y.enums.Permissions; +import io.github.a5h73y.enums.VehicleDetailKey; import io.github.a5h73y.model.Car; import io.github.a5h73y.other.AbstractPluginReceiver; import io.github.a5h73y.other.CarzHelp; @@ -15,13 +16,16 @@ import io.github.a5h73y.purchases.UpgradePurchase; import io.github.a5h73y.utility.CarUtils; import io.github.a5h73y.utility.PermissionUtils; +import io.github.a5h73y.utility.StringUtils; import io.github.a5h73y.utility.TranslationUtils; import io.github.a5h73y.utility.ValidationUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Minecart; import org.bukkit.entity.Player; +import org.bukkit.entity.Vehicle; import static io.github.a5h73y.controllers.CarController.DEFAULT_CAR; @@ -55,6 +59,23 @@ public boolean onCommand(CommandSender sender, Command command, String label, St carz.getFuelController().displayFuelLevel(player); break; + case "claim": + if (!player.isInsideVehicle() || !(player.getVehicle() instanceof Minecart) + || !ValidationUtils.isACarzVehicle((Vehicle) player.getVehicle())) { + TranslationUtils.sendTranslation("Error.NotInCar", player); + return false; + } + + if (carz.getItemMetaUtils().has(VehicleDetailKey.VEHICLE_OWNER, player.getVehicle())) { + String owner = carz.getItemMetaUtils().getValue(VehicleDetailKey.VEHICLE_OWNER, player.getVehicle()); + player.sendMessage(TranslationUtils.getTranslation("Error.Owned").replace("%PLAYER%", owner)); + return false; + } + + carz.getItemMetaUtils().setValue(VehicleDetailKey.VEHICLE_OWNER, player.getVehicle(), player.getName()); + TranslationUtils.sendTranslation("Car.Claimed", player); + break; + case "spawn": if (!PluginUtils.commandEnabled(player, Commands.SPAWN)) { return false; @@ -140,11 +161,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St return false; } + player.sendMessage(StringUtils.getStandardHeading("Car Types")); carz.getCarController().getCarTypes().keySet().forEach(player::sendMessage); break; case "details": - if (!carz.getCarController().isDriving(player.getName())) { + if (!player.isInsideVehicle() + || carz.getCarController().getCar(player.getVehicle().getEntityId()) == null) { TranslationUtils.sendTranslation("Error.NotInCar", player); return false; } diff --git a/src/main/java/io/github/a5h73y/configuration/Settings.java b/src/main/java/io/github/a5h73y/configuration/Settings.java index 9931c6a..b8166e7 100644 --- a/src/main/java/io/github/a5h73y/configuration/Settings.java +++ b/src/main/java/io/github/a5h73y/configuration/Settings.java @@ -124,6 +124,7 @@ private void setupStrings() { stringsConfig.addDefault("Car.UpgradeSpeed", "New top speed: %SPEED%"); stringsConfig.addDefault("Car.Key.Display", "&b%PLAYER%&f's key"); stringsConfig.addDefault("Car.Key.Received", "You receive a key."); + stringsConfig.addDefault("Car.Claimed", "You are now the owner of this car."); stringsConfig.addDefault("Purchase.Confirm.Purchase","&7Enter &a/carz confirm &7to confirm, or &c/carz cancel &7to cancel the purchase."); stringsConfig.addDefault("Purchase.Confirm.Car","You are about to purchase a &b%TYPE% &7car, costing &b%COST%&7."); diff --git a/src/main/java/io/github/a5h73y/model/Car.java b/src/main/java/io/github/a5h73y/model/Car.java index a56b17f..cf4a129 100644 --- a/src/main/java/io/github/a5h73y/model/Car.java +++ b/src/main/java/io/github/a5h73y/model/Car.java @@ -6,9 +6,11 @@ public class Car { - private int entityId; + private final int entityId; - private CarDetails carDetails; + private final String carType; + + private final CarDetails carDetails; private double maxSpeed; @@ -23,9 +25,8 @@ public Car(final int entityId) { public Car(final int entityId, final String carType) { this.entityId = entityId; this.currentSpeed = 0.0; - - this.carDetails = Carz.getInstance().getCarController().getCarTypes().get( - carType == null ? CarController.DEFAULT_CAR : carType); + this.carType = carType != null ? carType : CarController.DEFAULT_CAR; + this.carDetails = Carz.getInstance().getCarController().getCarTypes().get(carType); this.currentFuel = Carz.getInstance().getFuelController().getStartAmount(); this.maxSpeed = this.carDetails.getStartMaxSpeed(); } @@ -53,6 +54,7 @@ public void resetSpeed() { public String toString() { return StringUtils.getStandardHeading("Car Details") + "\nentityId = " + entityId + + ", \ncarType = " + carType + ", \nmaxSpeed = " + maxSpeed + ", \ncurrentSpeed = " + currentSpeed + ", \ncurrentFuel = " + currentFuel + @@ -63,6 +65,10 @@ public int getEntityId() { return entityId; } + public String getCarType() { + return carType; + } + public Double getCurrentFuel() { return currentFuel; } diff --git a/src/main/java/io/github/a5h73y/other/CarzHelp.java b/src/main/java/io/github/a5h73y/other/CarzHelp.java index 7ede729..dc095a2 100644 --- a/src/main/java/io/github/a5h73y/other/CarzHelp.java +++ b/src/main/java/io/github/a5h73y/other/CarzHelp.java @@ -20,29 +20,40 @@ public static void displayCommands(Player player) { FileConfiguration config = Carz.getInstance().getConfig(); player.sendMessage(StringUtils.getStandardHeading("Carz Commands")); + displayCommandUsage(player, "claim", "Claim an unowned car"); + displayCommandUsage(player, "details", "Display the current car's details"); + if (Carz.getInstance().getFuelController().isFuelEnabled()) { - displayCommandUsage(player, "fuel", "Display the car's fuel"); + displayCommandUsage(player, "fuel", "Display the car's remaining fuel"); + if (config.getBoolean(Commands.REFUEL.getConfigPath())) { - displayCommandUsage(player, "refuel", "Refuel your car"); + displayCommandUsage(player, "refuel", "Request to refuel your car"); } } - if (config.getBoolean(Commands.SPAWN.getConfigPath()) && player.isOp()) { - displayCommandUsage(player, "spawn", "Spawn a car at your location"); - } + if (PermissionUtils.hasStrictPermission(player, Permissions.PURCHASE, false)) { + if (config.getBoolean(Commands.PURCHASE.getConfigPath())) { + displayCommandUsage(player, "purchase", "Request to purchase a car"); + } - if (config.getBoolean(Commands.PURCHASE.getConfigPath())) { - displayCommandUsage(player, "purchase", "Purchase a car"); - displayCommandUsage(player, "stash", "Stash your owned car back into your inventory"); + displayCommandUsage(player, "stash", "Stash your car back into your inventory"); + displayCommandUsage(player, "cartypes", "Displays all the available car types"); } - if (config.getBoolean(Commands.UPGRADE.getConfigPath())) { + if (config.getBoolean(Commands.UPGRADE.getConfigPath()) + && PermissionUtils.hasStrictPermission(player, Permissions.UPGRADE, false)) { displayCommandUsage(player, "upgrade", "Upgrade your car"); } if (PermissionUtils.hasStrictPermission(player, Permissions.ADMIN, false)) { - displayCommandUsage(player, "reload", "Reload the config"); + if (config.getBoolean(Commands.SPAWN.getConfigPath())) { + displayCommandUsage(player, "spawn", "Receive an un-owned car"); + } + displayCommandUsage(player, "addCB", "Add a ClimbBlock to the list"); + displayCommandUsage(player, "createtype", "Create a new Car Type"); + displayCommandUsage(player, "economy", "View Economy information"); + displayCommandUsage(player, "reload", "Reload the config"); } } diff --git a/src/main/java/io/github/a5h73y/utility/ValidationUtils.java b/src/main/java/io/github/a5h73y/utility/ValidationUtils.java index d447915..5ad1b3d 100644 --- a/src/main/java/io/github/a5h73y/utility/ValidationUtils.java +++ b/src/main/java/io/github/a5h73y/utility/ValidationUtils.java @@ -166,7 +166,7 @@ public static boolean canPurchaseUpgrade(Player player, boolean checkEconomy) { * @return boolean */ public static boolean canPurchaseFuel(Player player) { - return canPurchaseUpgrade(player, true); + return canPurchaseFuel(player, true); } /**