Skip to content

Commit

Permalink
Merge pull request #23 from Project-Poseidon-Plugins/varioushomefixes
Browse files Browse the repository at this point in the history
Various home fixes
  • Loading branch information
RitzKid76 authored Feb 28, 2025
2 parents d76acae + 7faba98 commit 62d446f
Show file tree
Hide file tree
Showing 6 changed files with 152 additions and 36 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package com.johnymuffin.beta.fundamentals.commands;

import com.johnymuffin.beta.fundamentals.Fundamentals;
import com.johnymuffin.beta.fundamentals.FundamentalsPlayerMap;
import com.johnymuffin.beta.fundamentals.player.FundamentalsPlayer;
import com.johnymuffin.beta.fundamentals.settings.FundamentalsLanguage;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.UUID;

import static com.johnymuffin.beta.fundamentals.FundamentalPermission.isPlayerAuthorized;
import static com.johnymuffin.beta.fundamentals.util.Utils.getUUIDFromUsername;

public class CommandDelhome implements CommandExecutor {
@Override
Expand All @@ -24,13 +25,51 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
return true;
}
Player player = (Player) commandSender;
FundamentalsPlayer fundamentalsPlayer = FundamentalsPlayerMap.getInstance().getPlayer(player);
String targetPlayerUsername;
FundamentalsPlayer fundamentalsPlayer;
String homeName;

if (strings.length == 0) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("delhome_info"));
return true;
}
String homeName = strings[0];
else {
if (strings[0].contains(":") && strings[0].length() > 1) {
// User is requesting another user
if (!isPlayerAuthorized(commandSender, "fundamentals.delhome.others")) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("no_permission"));
return true;
}
String[] homeNameParts = strings[0].split(":");
if (homeNameParts[0].isEmpty()) {
String message = FundamentalsLanguage.getInstance().getMessage("home_empty_player_target");
commandSender.sendMessage(message);
return true;
}
if (homeNameParts.length > 1) {
// User is requesting to delete a specific home
homeName = homeNameParts[1];
} else {
String message = FundamentalsLanguage.getInstance().getMessage("delhome_empty_player_home_target");
commandSender.sendMessage(message);
return true;
}
targetPlayerUsername = homeNameParts[0];
UUID targetPlayerUUID = getUUIDFromUsername(targetPlayerUsername);
if (!FundamentalsPlayerMap.getInstance().isPlayerKnown(targetPlayerUUID)) {
String message = FundamentalsLanguage.getInstance().getMessage("player_not_found_full");
message = message.replace("%username%", targetPlayerUsername);
commandSender.sendMessage(message);
return true;
}
fundamentalsPlayer = FundamentalsPlayerMap.getInstance().getPlayer(targetPlayerUUID);
} else {
// User is requesting their own homes
fundamentalsPlayer = FundamentalsPlayerMap.getInstance().getPlayer(player);
homeName = strings[0];
}
}

if(!fundamentalsPlayer.doesHomeExist(homeName)) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("delhome_unknown_home"));
return true;
Expand All @@ -40,8 +79,7 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
} else {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("delhome_unknown_unsuccessful"));
}



return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.johnymuffin.beta.fundamentals.FundamentalsPlayerMap;
import com.johnymuffin.beta.fundamentals.player.FundamentalsPlayer;
import com.johnymuffin.beta.fundamentals.settings.FundamentalsLanguage;
import com.johnymuffin.beta.fundamentals.util.Utils;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
Expand Down Expand Up @@ -37,31 +36,36 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
return true;
}
Player player = (Player) commandSender;
String homeName = null;
String homeName;
FundamentalsPlayer targetPlayer;

String targetPlayerUsername = "";
boolean viewingHomesFromAnotherPlayer = false;

if (strings.length == 0) {
targetPlayer = FundamentalsPlayerMap.getInstance().getPlayer(player);
homeName = null;
} else {
String[] homeNameParts = strings[0].split(":");
if (strings[0].contains(":")) {
//User is requesting another user
if (strings[0].contains(":") && strings[0].length() > 1) {
// User is requesting another user
if (!isPlayerAuthorized(commandSender, "fundamentals.home.others")) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("no_permission"));
return true;
}
String targetPlayerUsername;
viewingHomesFromAnotherPlayer = true;
String[] homeNameParts = strings[0].split(":");
if (homeNameParts[0].isEmpty()) {
String message = FundamentalsLanguage.getInstance().getMessage("home_empty_player_target");
commandSender.sendMessage(message);
return true;
}
if (homeNameParts.length > 1) {
//User is requesting to teleport to a specific home
// User is requesting to teleport to a specific home
homeName = homeNameParts[1];
targetPlayerUsername = homeNameParts[0];
} else {
//User is requesting a list of homes from another user
// User is requesting a list of homes from another user
homeName = null;
targetPlayerUsername = homeNameParts[0];
}
targetPlayerUsername = homeNameParts[0];
UUID targetPlayerUUID = getUUIDFromUsername(targetPlayerUsername);
if (!FundamentalsPlayerMap.getInstance().isPlayerKnown(targetPlayerUUID)) {
String message = FundamentalsLanguage.getInstance().getMessage("player_not_found_full");
Expand All @@ -71,21 +75,33 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
}
targetPlayer = FundamentalsPlayerMap.getInstance().getPlayer(targetPlayerUUID);
} else {
//User is requesting their own homes
// User is requesting their own homes
targetPlayer = FundamentalsPlayerMap.getInstance().getPlayer(player);
homeName = strings[0];
}
}


if (homeName == null) {
//No home specified, list homes
// No home specified, list homes
ArrayList<String> homes = targetPlayer.getPlayerHomes();
if (homes.size() == 0) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("home_non_recorded"));
if (homes.isEmpty()) {
if (!viewingHomesFromAnotherPlayer) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("home_non_recorded"));
}
else {
String msg = FundamentalsLanguage.getInstance().getMessage("home_non_recorded_others");
msg = msg.replaceAll("%var1%", targetPlayerUsername);
commandSender.sendMessage(msg);
}
return true;
}
String msg = "&6Home List: ";
String msg;
if (!viewingHomesFromAnotherPlayer) {
msg = "&6Home List: ";
}
else {
msg = "&a" + targetPlayerUsername + "&6's Home List: ";
}
for (String hn : homes) {
if (targetPlayer.isHomeInValidWorld(hn)) {
msg = msg + "&a" + hn + "&6, ";
Expand All @@ -96,7 +112,6 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
msg = msg.substring(0, msg.length() - 2);
commandSender.sendMessage(formatColor(msg));
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("home_use_homes"));
return true;
} else {
if (!targetPlayer.doesHomeExist(homeName)) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("home_not_on_record"));
Expand All @@ -113,25 +128,33 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
Location home = targetPlayer.getPlayerHome(homeName);
Location safeLocation;
try {
safeLocation = Utils.getSafeDestination(home);
safeLocation = getSafeDestination(home);
} catch (Exception e) {
String msg = FundamentalsLanguage.getInstance().getMessage("generic_error_player");
msg = msg.replaceAll("%var1%", e.getMessage());
commandSender.sendMessage(msg);
return true;
}
player.teleport(safeLocation);
String msg = FundamentalsLanguage.getInstance().getMessage("home_teleport_successfully");
msg = msg.replaceAll("%var1%", homeName);
String msg;
if (!viewingHomesFromAnotherPlayer) {
msg = FundamentalsLanguage.getInstance().getMessage("home_teleport_successfully");
msg = msg.replaceAll("%var1%", homeName);
}
else {
msg = FundamentalsLanguage.getInstance().getMessage("home_teleport_successfully_others");
msg = msg.replaceAll("%var1%", targetPlayerUsername);
msg = msg.replaceAll("%var2%", homeName);
}
commandSender.sendMessage(msg);
//Username
// Username
String target = getPlayerName(targetPlayer.getUuid());
if (target == null) {
target = targetPlayer.getUuid().toString();
}
plugin.debugLogger(Level.INFO, player.getName() + " has teleported to a home owned by " + target + " called " + homeName, 2);
return true;
}
return true;


}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
int homesPerPage = FundamentalsConfig.getInstance().getConfigInteger("settings.homes-per-page");
int pageCount = (int) Math.ceil((double) homeList.size() / homesPerPage);

if (page <= pageCount) {
if (page <= pageCount && page > 0) {
String message = FundamentalsLanguage.getInstance().getMessage("homes_list");
message = message.replace("%var1%", String.valueOf(page));
message = message.replace("%var2%", String.valueOf(pageCount));
Expand All @@ -82,7 +82,7 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
homes = homes.substring(0, homes.length() - 2);
commandSender.sendMessage(formatColor(homes));
} else {
// specified page count too high
// specified page count too high or invalid
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("homes_invalid_usage"));
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.UUID;

import static com.johnymuffin.beta.fundamentals.FundamentalPermission.isPlayerAuthorized;
import static com.johnymuffin.beta.fundamentals.util.Utils.getUUIDFromUsername;
import static com.johnymuffin.beta.fundamentals.util.Utils.verifyHomeName;

public class CommandSetHome implements CommandExecutor {
Expand All @@ -23,18 +27,54 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
return true;
}
Player player = (Player) commandSender;
String targetPlayerUsername = "";
FundamentalsPlayerFile fundamentalsPlayerFile = FundamentalsPlayerMap.getInstance().getPlayer(player);
boolean viewingHomesFromAnotherPlayer = false;

String homeName = "main";
if (strings.length > 0) {
homeName = strings[0];
if (strings[0].contains(":") && strings[0].length() > 1) {
// User is requesting another user
if (!isPlayerAuthorized(commandSender, "fundamentals.sethome.others")) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("no_permission"));
return true;
}
viewingHomesFromAnotherPlayer = true;
String[] homeNameParts = strings[0].split(":");
if (homeNameParts[0].isEmpty()) {
String message = FundamentalsLanguage.getInstance().getMessage("home_empty_player_target");
commandSender.sendMessage(message);
return true;
}
if (homeNameParts.length > 1) {
// User is requesting to set a specific home
homeName = homeNameParts[1];
} else {
String message = FundamentalsLanguage.getInstance().getMessage("sethome_empty_player_home_target");
commandSender.sendMessage(message);
return true;
}
targetPlayerUsername = homeNameParts[0];
UUID targetPlayerUUID = getUUIDFromUsername(targetPlayerUsername);
if (!FundamentalsPlayerMap.getInstance().isPlayerKnown(targetPlayerUUID)) {
String message = FundamentalsLanguage.getInstance().getMessage("player_not_found_full");
message = message.replace("%username%", targetPlayerUsername);
commandSender.sendMessage(message);
return true;
}
fundamentalsPlayerFile = FundamentalsPlayerMap.getInstance().getPlayer(targetPlayerUUID);
} else {
// User is requesting to set their own homes
homeName = strings[0];
}
if (!verifyHomeName(homeName)) {
commandSender.sendMessage(FundamentalsLanguage.getInstance().getMessage("sethome_invalid_name"));
return true;
}

}
//Check home limit
int limit = Integer.valueOf(String.valueOf(FundamentalsConfig.getInstance().getConfigOption("settings.multiple-homes")));
int limit = Integer.parseInt(String.valueOf(FundamentalsConfig.getInstance().getConfigOption("settings.multiple-homes")));
int homeCount = fundamentalsPlayerFile.getPlayerHomes().size();

if (!(commandSender.hasPermission("fundamentals.sethome.unlimited") || commandSender.isOp())) {
Expand All @@ -61,8 +101,16 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
}
fundamentalsPlayerFile.setPlayerHome(homeName, player.getLocation());

String msg = FundamentalsLanguage.getInstance().getMessage("sethome_set_successfully");
msg = msg.replaceAll("%var1%", homeName);
String msg;
if (!viewingHomesFromAnotherPlayer) {
msg = FundamentalsLanguage.getInstance().getMessage("sethome_set_successfully");
msg = msg.replaceAll("%var1%", homeName);
}
else {
msg = FundamentalsLanguage.getInstance().getMessage("sethome_set_successfully_others");
msg = msg.replaceAll("%var1%", homeName);
msg = msg.replaceAll("%var2%", targetPlayerUsername);
}
commandSender.sendMessage(msg);
return true;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ private void loadDefaults() {
map.put("hat_invalid", "&cYou can't put that item on your head silly!");
//Home
map.put("home_non_recorded", "&6Sorry, you have no homes on record. Please set one with /sethome");
map.put("home_non_recorded_others", "&6Sorry, &b%var1%&6 has no homes on record.");
map.put("home_not_on_record", "&6Sorry, we couldn't find a home with that name. Do /homes for a list of homes");
map.put("home_in_invalid_world", "&4Sorry, your home is in an invalid world.");
map.put("home_is_sleeping", "&6Sorry, you can't teleport to a home while sleeping.");
map.put("home_empty_player_target", "&6Sorry, the player home teleport target cannot be empty.");
map.put("home_teleport_successfully", "&6You have been teleported to your home &b%var1%");
map.put("home_teleport_successfully_others", "&6You have been teleported to &b%var1%&6's home &b%var2%");
map.put("home_use_homes", "&6Use &a/homes&6 for a more feature rich home list.");
//Homesearch
map.put("homesearch_invalid_radius", "Please enter a valid number for radius.");
Expand All @@ -58,11 +61,14 @@ private void loadDefaults() {
map.put("sethome_limit_reached", "&6Sorry, you are already at your limit of &4%var1% &6homes.");
map.put("sethome_already_exists", "&6Sorry, a home with the name &b%var1%&6 already exists. Please delete the existing home before creating another with the same name.");
map.put("sethome_set_successfully", "&6Your home &b%var1% &6has been set.");
map.put("sethome_set_successfully_others", "&6The home &b%var1% &6has been set to &b%var2%&6's home list.");
map.put("sethome_empty_player_home_target", "&6Sorry, the player home set target cannot be empty.");
//Delhome
map.put("delhome_info", "&6Please specify a home name \"/delhome (home)\". A list of homes can be obtained with /home.");
map.put("delhome_info", "&6Please specify a home name \"/delhome (home)\". A list of homes can be obtained with /homes.");
map.put("delhome_unknown_home", "&6Sorry, we couldn't find a home with that name. Do /homes to get a list of homes.");
map.put("delhome_unknown_successful", "&6You have successfully deleted a home");
map.put("delhome_unknown_unsuccessful", "&4Sorry, an error was encountered when deleting that home. Please contact staff!");
map.put("delhome_empty_player_home_target", "&6Sorry, the player home delete target cannot be empty.");
//Homes
map.put("homes_list", "&6Home List (page &a%var1%&6/&a%var2%&6): ");
map.put("homes_invalid_usage", "&6Invalid usage: &a/homes [page number]");
Expand Down
1 change: 1 addition & 0 deletions FundamentalsCore/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ commands:
homes:
description: a home command
usage: /<command>
aliases: [hl, homelist]
balance:
description: a balance command
usage: /<command>
Expand Down

0 comments on commit 62d446f

Please sign in to comment.