Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.modnmetl</groupId>
<artifactId>virtualrealty</artifactId>
<version>2.0.0</version>
<version>2.1.0</version>
<packaging>jar</packaging>

<description>A plot creation and management plugin for Minecraft</description>
Expand Down Expand Up @@ -163,7 +163,7 @@
<dependency>
<groupId>com.modnmetl</groupId>
<artifactId>virtualrealty-premium</artifactId>
<version>${project.version}</version>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
343 changes: 107 additions & 236 deletions src/main/java/com/modnmetl/virtualrealty/VirtualRealty.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.modnmetl.virtualrealty.commands;

import com.modnmetl.virtualrealty.VirtualRealty;
import com.modnmetl.virtualrealty.commands.plot.PlotCommand;
import com.modnmetl.virtualrealty.commands.vrplot.VirtualRealtyCommand;
import com.modnmetl.virtualrealty.enums.PlotSize;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.utils.EnumUtils;
import lombok.SneakyThrows;
import net.minecraft.server.v1_13_R2.ItemNetherStar;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
Expand Down Expand Up @@ -49,6 +47,7 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
case "CREATE": {
if (assertPermission(sender, VirtualRealtyCommand.COMMAND_PERMISSION.getName() + "." + args[0].toLowerCase())) return null;
if (args.length > 1) {
// Enum Hints (Sizes)
if (args.length == 2) {
for (PlotSize value : PlotSize.values()) {
if (value == PlotSize.CUSTOM) continue;
Expand All @@ -62,15 +61,34 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
boolean isNatural = Arrays.stream(args).anyMatch(s -> s.equalsIgnoreCase("--natural"));
args = Arrays.stream(args).filter(s1 -> !s1.equalsIgnoreCase("--natural")).toArray(String[]::new);
if (isNatural) return null;
// Enum Hints (Materials)
if (args.length > 2) {
boolean predefinedValue = EnumUtils.isValidEnum(PlotSize.class, args[1].toUpperCase());
if ((predefinedValue && args.length < 5) || (!predefinedValue && args.length > 4 && args.length < 7)) {
for (Material value : Material.values()) {
if (!value.isSolid()) continue;
if (args[args.length - 1].isEmpty()) {
tabCompleter.add(value.name().toLowerCase());
} else if (value.name().toLowerCase().startsWith(args[args.length - 1].toLowerCase())) {
tabCompleter.add(value.name().toLowerCase());
PlotSize plotSize = predefinedValue ? PlotSize.valueOf(args[1].toUpperCase()) : PlotSize.CUSTOM;
if (plotSize != PlotSize.AREA) {
if (((predefinedValue && args.length < 5) || (!predefinedValue && args.length > 4 && args.length < 7))) {
for (Material value : Material.values()) {
if (!value.isSolid()) continue;
if (args[args.length - 1].isEmpty()) {
tabCompleter.add(value.name().toLowerCase());
} else if (value.name().toLowerCase().startsWith(args[args.length - 1].toLowerCase())) {
tabCompleter.add(value.name().toLowerCase());
}
}
}
} else if (args.length < 6) {
switch (args.length) {
case 3: {
tabCompleter.add(String.valueOf(plotSize.getLength()));
break;
}
case 4: {
tabCompleter.add(String.valueOf(plotSize.getHeight()));
break;
}
case 5: {
tabCompleter.add(String.valueOf(plotSize.getWidth()));
break;
}
}
}
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/modnmetl/virtualrealty/commands/SubCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@
import java.lang.reflect.Method;
import java.util.LinkedList;

import static com.modnmetl.virtualrealty.commands.vrplot.VirtualRealtyCommand.COMMAND_PERMISSION;

public abstract class SubCommand {

private final String[] args;
private final CommandSender commandSender;
private final LinkedList<String> helpList;

@SneakyThrows
public SubCommand(CommandSender sender, Command command, String label, String[] args, LinkedList<String> helpList) throws FailedCommandException {
this.args = args;
this.helpList = helpList;
this.commandSender = sender;
exec(sender, command, label, args);
Expand All @@ -32,6 +36,21 @@ public void assertPlayer() throws FailedCommandException {
}
}

public String getDefaultPermission() {
return COMMAND_PERMISSION.getName() + "." + args[0].toLowerCase();
}

public void assertPermission() throws InsufficientPermissionsException {
if (!commandSender.hasPermission(getDefaultPermission())) {
if (commandSender.isOp()) {
commandSender.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().insufficientPermissions.replaceAll("%permission%", getDefaultPermission()));
} else {
commandSender.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().insufficientPermissionsShort.replaceAll("%permission%", getDefaultPermission()));
}
throw new InsufficientPermissionsException();
}
}

public void assertPermission(String permission) throws InsufficientPermissionsException {
if (!commandSender.hasPermission(permission)) {
if (commandSender.isOp()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

import com.modnmetl.virtualrealty.VirtualRealty;
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;

import java.lang.reflect.InvocationTargetException;
import java.util.*;
Expand Down Expand Up @@ -36,17 +39,19 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
printHelp(sender);
return false;
}
if (args[0].equalsIgnoreCase("panel") || args[0].equalsIgnoreCase("draft") || args[0].equalsIgnoreCase("stake")) {
if (args[0].equalsIgnoreCase("panel")) {
try {
Class.forName("com.modnmetl.virtualrealty.premiumloader.PremiumLoader", true, VirtualRealty.getCustomClassLoader());
Class.forName("com.modnmetl.virtualrealty.premiumloader.PremiumLoader", true, VirtualRealty.getLoader());
} catch (Exception e) {
sender.sendMessage("§aThis function is available with a valid license key");
sender.sendMessage("§aPlease visit §fhttps://modnmetl.com/ §ato purchase one");
TextComponent linkComponent = new TextComponent("§fhttps://modnmetl.com/");
linkComponent.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modnmetl.com/category/virtual-realty-plugin-61eef16fe2eeab00116a3e64"));
sender.spigot().sendMessage(new TextComponent("§aPlease visit "), linkComponent, new TextComponent(" §ato purchase one"));
return false;
}
}
try {
Class<?> clazz = Class.forName("com.modnmetl.virtualrealty.commands.plot.subcommand." + String.valueOf(args[0].toCharArray()[0]).toUpperCase(Locale.ROOT) + args[0].substring(1) + "SubCommand", true, VirtualRealty.getCustomClassLoader());
Class<?> clazz = Class.forName("com.modnmetl.virtualrealty.commands.plot.subcommand." + String.valueOf(args[0].toCharArray()[0]).toUpperCase(Locale.ROOT) + args[0].substring(1) + "SubCommand", true, VirtualRealty.getLoader());
clazz.getConstructors()[0].newInstance(sender, command, label, args);
} catch (Exception e) {
if(!(e instanceof InvocationTargetException)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.objects.PlotMember;
import com.modnmetl.virtualrealty.objects.data.PlotMember;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package com.modnmetl.virtualrealty.commands.plot.subcommand;

import com.modnmetl.virtualrealty.VirtualRealty;
import com.modnmetl.virtualrealty.commands.SubCommand;
import com.modnmetl.virtualrealty.enums.Direction;
import com.modnmetl.virtualrealty.enums.PlotSize;
import com.modnmetl.virtualrealty.enums.items.VItem;
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.listeners.stake.DraftListener;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.objects.data.PlotItem;
import com.modnmetl.virtualrealty.objects.region.Cuboid;
import com.modnmetl.virtualrealty.objects.region.GridStructure;
import com.modnmetl.virtualrealty.utils.RegionUtil;
import de.tr7zw.nbtapi.NBTItem;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

import java.util.AbstractMap;
import java.util.LinkedList;

public class DraftSubCommand extends SubCommand {

public DraftSubCommand(CommandSender sender, Command command, String label, String[] args) throws FailedCommandException {
super(sender, command, label, args, new LinkedList<>());
}

@Override
public void exec(CommandSender sender, Command command, String label, String[] args) throws FailedCommandException {
assertPlayer();
Player player = ((Player) sender);
if (DraftListener.DRAFT_MAP.containsKey(player)) {
player.getInventory().remove(DraftListener.DRAFT_MAP.get(player).getValue().getValue().getItemStack());
player.getInventory().addItem(DraftListener.DRAFT_MAP.get(player).getValue().getKey().getItemStack());
DraftListener.DRAFT_MAP.get(player).getKey().removeGrid();
DraftListener.DRAFT_MAP.remove(player);
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().draftModeDisabled);
return;
}
PlayerInventory inv;
ItemStack claimItem;
if (VirtualRealty.legacyVersion) {
inv = player.getInventory();
claimItem = player.getItemInHand();
} else {
inv = player.getInventory();
claimItem = inv.getItemInMainHand();
}
NBTItem claimNbtItem;
if (!(claimItem.getType() == (VirtualRealty.legacyVersion ? Material.valueOf("SKULL_ITEM") : Material.PLAYER_HEAD)
&&
(claimNbtItem = new NBTItem(claimItem)).getString("vrplot_item") != null && claimNbtItem.getString("vrplot_item").equals("CLAIM"))) {
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().notHoldingPlotClaim);
return;
}
PlotItem plotItem = PlotItem.fromItemStack(claimItem);
Plot plot = PlotManager.getPlot(player.getLocation());
if (plot != null) {
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().standingOnPlot);
return;
}
PlotSize plotSize = PlotSize.valueOf(claimNbtItem.getString("vrplot_size"));
Cuboid cuboid = RegionUtil.getRegion(player.getLocation(), Direction.byYaw(player.getLocation().getYaw()), plotSize.getLength(), plotSize.getHeight(), plotSize.getWidth());
if (RegionUtil.isCollidingWithAnotherPlot(cuboid)) {
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().draftModeCancelledCollision);
if (!GridStructure.isCuboidGridDisplaying(player, 0)) {
new GridStructure(player, plotSize.getLength(), plotSize.getHeight(), plotSize.getWidth(), 0, ((Player) sender).getWorld(), 20 * 6, player.getLocation()).preview(player.getLocation(),true, true);

}
return;
}
if (RegionUtil.isCollidingWithBedrock(cuboid)) {
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().draftModeCancelledBedrock);
GridStructure.isCuboidGridDisplaying(player, 0);
if (!GridStructure.isCuboidGridDisplaying(player, 0)) {
new GridStructure(player, plotSize.getLength(), plotSize.getHeight(), plotSize.getWidth(), 0, ((Player) sender).getWorld(), 20 * 6, player.getLocation()).preview(player.getLocation(),true, true);
}
return;
}
PlotItem draftItem = PlotItem.fromItemStack(claimItem, VItem.DRAFT);
GridStructure draftStructure = new GridStructure(player, plotItem.getLength(), plotItem.getHeight(), plotItem.getWidth(), 0, ((Player) sender).getWorld(), 0, player.getLocation());
DraftListener.DRAFT_MAP.put(player, new AbstractMap.SimpleEntry<>(draftStructure, new AbstractMap.SimpleEntry<>(plotItem, draftItem)));
inv.remove(claimItem);
if (VirtualRealty.legacyVersion) {
player.setItemInHand(draftItem.getItemStack());
} else {
inv.setItemInMainHand(draftItem.getItemStack());
}
draftStructure.preview(player.getLocation(), true, false);
VirtualRealty.getMessages().draftModeEnabled.forEach((message) -> player.sendMessage(message.replaceAll("&", "§")));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.objects.PlotMember;
import com.modnmetl.virtualrealty.objects.data.PlotMember;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.objects.PlotMember;
import com.modnmetl.virtualrealty.objects.data.PlotMember;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.modnmetl.virtualrealty.commands.plot.subcommand;

import com.modnmetl.virtualrealty.VirtualRealty;
import com.modnmetl.virtualrealty.commands.SubCommand;
import com.modnmetl.virtualrealty.enums.Direction;
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.listeners.stake.DraftListener;
import com.modnmetl.virtualrealty.objects.data.PlotItem;
import com.modnmetl.virtualrealty.objects.region.Cuboid;
import com.modnmetl.virtualrealty.objects.region.GridStructure;
import com.modnmetl.virtualrealty.utils.RegionUtil;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.*;

public class StakeSubCommand extends SubCommand {

public static Set<UUID> stakeConfirmations = new HashSet<>();

public StakeSubCommand(CommandSender sender, Command command, String label, String[] args) throws FailedCommandException {
super(sender, command, label, args, new LinkedList<>());
}

@Override
public void exec(CommandSender sender, Command command, String label, String[] args) throws FailedCommandException {
assertPlayer();
Player player = ((Player) sender);
if (!DraftListener.DRAFT_MAP.containsKey(player)) {
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().noDraftClaimEnabled);
return;
}
GridStructure gridStructure = DraftListener.DRAFT_MAP.get(player).getKey();
PlotItem plotItem = DraftListener.DRAFT_MAP.get(player).getValue().getKey();
Cuboid cuboid = RegionUtil.getRegion(gridStructure.getPreviewLocation(), Direction.byYaw(gridStructure.getPreviewLocation().getYaw()), plotItem.getLength(), plotItem.getHeight(), plotItem.getWidth());
if (RegionUtil.isCollidingWithAnotherPlot(cuboid)) {
player.getInventory().remove(DraftListener.DRAFT_MAP.get(player).getValue().getValue().getItemStack());
player.getInventory().addItem(DraftListener.DRAFT_MAP.get(player).getValue().getKey().getItemStack());
DraftListener.DRAFT_MAP.get(player).getKey().removeGrid();
DraftListener.DRAFT_MAP.remove(player);
gridStructure.removeGrid();
gridStructure.setDisplayTicks(20L * 6);
gridStructure.preview(true, true);
player.sendMessage(VirtualRealty.PREFIX + VirtualRealty.getMessages().draftModeCancelledCollision);
return;
}
stakeConfirmations.add(player.getUniqueId());
for (String s : VirtualRealty.getMessages().stakeConfirmation) {
sender.sendMessage(VirtualRealty.PREFIX + s);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
import com.modnmetl.virtualrealty.exceptions.FailedCommandException;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.objects.Plot;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.LinkedList;
import java.util.Objects;

public class TpSubCommand extends SubCommand {

Expand Down
Loading