0.5.2
custom model data command + disable dungeon for now
This commit is contained in:
parent
f82a3481ac
commit
0cf90ea696
12 changed files with 233 additions and 77 deletions
|
@ -18,7 +18,7 @@ import static gq.unurled.raxen.utils.Utils.colorComp;
|
|||
public final class Raxen extends JavaPlugin {
|
||||
|
||||
private static final String prefix = "<aqua>Rx</aqua><light_purple>></light_purple> ";
|
||||
@Getter private static String version = "0.5.1";
|
||||
@Getter private static String version = "0.5.2";
|
||||
private final PluginManager pm = getServer().getPluginManager();
|
||||
|
||||
private static Raxen plugin;
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
package gq.unurled.raxen.commands.admin;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.util.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static gq.unurled.raxen.utils.Utils.*;
|
||||
|
||||
public class CustomModelDataCommand implements TabExecutor {
|
||||
|
||||
/**
|
||||
* change custom model data of an item
|
||||
* @param sender Source of the command
|
||||
* @param command Command which was executed
|
||||
* @param label Alias of the command which was used
|
||||
* @param args Passed command arguments
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
if (!(sender instanceof Player)) {
|
||||
errorConsoleSender(sender);
|
||||
return true;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
if (!(p.hasPermission("raxen.custommodeldata.cmd"))) {
|
||||
p.sendMessage(noPerms());
|
||||
return true;
|
||||
}
|
||||
ItemStack it = p.getInventory().getItemInMainHand();
|
||||
if (args.length == 0) {
|
||||
p.sendMessage(colorComp("<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"));
|
||||
return true;
|
||||
}
|
||||
if (!(isInt(args[0]))) {
|
||||
Material material = Material.getMaterial(args[1]);
|
||||
if (material != null) {
|
||||
it = customModelData(new ItemStack(material), Integer.parseInt(args[0]));
|
||||
p.getInventory().setItemInMainHand(it);
|
||||
p.updateInventory();
|
||||
} else {
|
||||
p.sendMessage(colorComp("<red>Please specify a valid Item Name or a valid Integer.</red>"));
|
||||
}
|
||||
} else {
|
||||
if (it != null && it.getType() != Material.AIR) { // check if player has an item in hand
|
||||
// has item in hand applying the custom model data
|
||||
it = customModelData(it, Integer.parseInt(args[0]));
|
||||
p.getInventory().setItemInMainHand(it);
|
||||
p.updateInventory();
|
||||
} else {
|
||||
p.sendMessage(colorComp("<red>Get an item in hand please or specify an item</red>"));
|
||||
p.sendMessage(colorComp("<gold>Usage: /custommodeldata <model-data-value> <item-name></gold>"));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sender Source of the command. For players tab-completing a
|
||||
* command inside of a command block, this will be the player, not
|
||||
* the command block.
|
||||
* @param command Command which was executed
|
||||
* @param label Alias of the command which was used
|
||||
* @param args The arguments passed to the command, including final
|
||||
* partial argument to be completed
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
final List<String> completions = new ArrayList<>();
|
||||
|
||||
List<String> SUB_COMMANDS= new ArrayList<>();
|
||||
|
||||
if (!(isInt(args[0]))) {
|
||||
return Arrays.asList( "§c" + args[0]);
|
||||
}
|
||||
if (args.length == 2) {
|
||||
for (Material mat : Material.values()) {
|
||||
SUB_COMMANDS.add(mat.name());
|
||||
}
|
||||
StringUtil.copyPartialMatches(args[1], SUB_COMMANDS, completions);
|
||||
Collections.sort(completions);
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
|
||||
private ItemStack customModelData(ItemStack it, Integer in) {
|
||||
ItemMeta itm = it.getItemMeta();
|
||||
itm.setCustomModelData(in);
|
||||
it.setItemMeta(itm);
|
||||
return it;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package gq.unurled.raxen.listener.player;
|
||||
|
||||
import gq.unurled.raxen.components.dungeons.Gate;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityPortalEnterEvent;
|
||||
|
||||
import static gq.unurled.raxen.utils.DungeonUtils.isInRange;
|
||||
import static gq.unurled.raxen.utils.DungeonUtils.whichIsInRange;
|
||||
|
||||
public class PortalEvent implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void PortalE(EntityPortalEnterEvent e) {
|
||||
if (e.getEntity() instanceof Player) {
|
||||
Player p = (Player) e.getEntity();
|
||||
Location loc = e.getLocation();
|
||||
// if loc is in range
|
||||
if (isInRange(loc)) {
|
||||
Gate g = whichIsInRange(loc);
|
||||
//g.t
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,6 +22,7 @@ public class CommandManager {
|
|||
private RaxenCommand raxenCommand;
|
||||
private SpawnEntity entityspawn;
|
||||
private ClassCommand classCommand;
|
||||
private CustomModelDataCommand customModelDataCommand;
|
||||
|
||||
public CommandManager(Raxen main) {
|
||||
this.main = main;
|
||||
|
@ -31,6 +32,7 @@ public class CommandManager {
|
|||
this.classCommand = new ClassCommand(this.main);
|
||||
this.skillsCommand = new SkillsCommand(main);
|
||||
this.raxenCommand = new RaxenCommand(main);
|
||||
this.customModelDataCommand = new CustomModelDataCommand();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -64,6 +66,11 @@ public class CommandManager {
|
|||
|
||||
main.getCommand("class").setTabCompleter(classCommand);
|
||||
main.getCommand("class").setExecutor(classCommand);
|
||||
|
||||
main.getCommand("custommodeldata").setTabCompleter(customModelDataCommand);
|
||||
main.getCommand("custommodeldata").setExecutor(customModelDataCommand);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,17 +4,17 @@ import gq.unurled.raxen.Raxen;
|
|||
import gq.unurled.raxen.components.dungeons.Dungeon;
|
||||
import gq.unurled.raxen.components.dungeons.Gate;
|
||||
import gq.unurled.raxen.components.dungeons.types.forest.ForestDungeon;
|
||||
import org.bukkit.Location;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DungeonsManager {
|
||||
|
||||
private Raxen main;
|
||||
|
||||
private HashMap<UUID, Gate> gates = new HashMap<>();
|
||||
private HashMap<Gate, Location> gates = new HashMap<>();
|
||||
|
||||
private HashMap<String, Dungeon> dungeons = new HashMap<>();
|
||||
private HashMap<Gate, Dungeon> dungeons = new HashMap<>();
|
||||
|
||||
public DungeonsManager(Raxen main) {
|
||||
this.main = main;
|
||||
|
@ -26,10 +26,16 @@ public class DungeonsManager {
|
|||
*/
|
||||
public void registerDungeons() {
|
||||
ForestDungeon forestDungeon = new ForestDungeon();
|
||||
dungeons.put("FOREST", forestDungeon);
|
||||
|
||||
dungeons.put(forestDungeon.getGate(), forestDungeon);
|
||||
gates.put(forestDungeon.getGate(), forestDungeon.getGate().getLoc());
|
||||
/*
|
||||
for (String s : dungeons.keySet()) {
|
||||
main.getManager().getWorldManager().loadWorld(dungeons.get(s).getName());
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public HashMap getGates() {
|
||||
return gates;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
package gq.unurled.raxen.utils;
|
||||
|
||||
import gq.unurled.raxen.Raxen;
|
||||
import gq.unurled.raxen.components.dungeons.Gate;
|
||||
import gq.unurled.raxen.components.dungeons.Rank;
|
||||
import gq.unurled.raxen.components.dungeons.Types;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Random;
|
||||
|
||||
public class DungeonUtils {
|
||||
|
@ -49,4 +54,50 @@ public class DungeonUtils {
|
|||
Random r = new Random();
|
||||
r.nextInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* if a gate is in range of the player
|
||||
* @return boolean
|
||||
*/
|
||||
public static Boolean isInRange(Location loc) {
|
||||
Raxen main = (Raxen) Bukkit.getServer().getPluginManager().getPlugin("Raxen");
|
||||
HashMap<Gate, Location> gats = main.getManager().getDungeonsManager().getGates();
|
||||
for (Gate g : gats.keySet()) {
|
||||
Double x = g.getLoc().getX();
|
||||
Double y = g.getLoc().getY();
|
||||
Double z = g.getLoc().getZ();
|
||||
Double radius = Double.valueOf(g.getPortalRadius());
|
||||
if (loc.getX() < x+radius && loc.getX() > x-radius) {
|
||||
if (loc.getY() < y+radius && loc.getY() > y-radius) {
|
||||
if (loc.getZ() < z+radius && loc.getZ() > z-radius) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* if a gate is in range of the player
|
||||
* @return the gates which is in range
|
||||
*/
|
||||
public static Gate whichIsInRange(Location loc) {
|
||||
Raxen main = (Raxen) Bukkit.getServer().getPluginManager().getPlugin("Raxen");
|
||||
HashMap<Gate, Location> gats = main.getManager().getDungeonsManager().getGates();
|
||||
for (Gate g : gats.keySet()) {
|
||||
Double x = g.getLoc().getX();
|
||||
Double y = g.getLoc().getY();
|
||||
Double z = g.getLoc().getZ();
|
||||
Double radius = Double.valueOf(g.getPortalRadius());
|
||||
if (loc.getX() < x+radius && loc.getX() > x-radius) {
|
||||
if (loc.getY() < y+radius && loc.getY() > y-radius) {
|
||||
if (loc.getZ() < z+radius && loc.getZ() > z-radius) {
|
||||
return g;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -316,6 +316,10 @@ public class Utils {
|
|||
return colorComp("<red>An Error has occurred. Please retry or contact an Admin.");
|
||||
}
|
||||
|
||||
public static void errorConsoleSender(CommandSender sender) {
|
||||
sender.sendMessage(colorComp("<red>Can't use this command as the console.</red>"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy folder from sourceDirectoryLocation to destinationDirectoryLocation
|
||||
* @param sourceDirectoryLocation the source directory
|
||||
|
@ -350,4 +354,16 @@ public class Utils {
|
|||
}
|
||||
Files.delete(path);
|
||||
}
|
||||
|
||||
public static boolean isInt(String strNum) {
|
||||
if (strNum == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
double d = Integer.parseInt(strNum);
|
||||
} catch (NumberFormatException nfe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,11 @@ commands:
|
|||
description: Spawn an custom entity
|
||||
class:
|
||||
description: player command that make them choose their class and then their stats
|
||||
custommodeldata:
|
||||
aliases:
|
||||
- cmdata
|
||||
- cmd
|
||||
description: set custom model data to item
|
||||
|
||||
permissions:
|
||||
raxen.reload.cmd:
|
||||
|
@ -46,4 +51,6 @@ permissions:
|
|||
raxen.entityspawn.cmd:
|
||||
description: entityspawn command permission
|
||||
raxen.class.cmd:
|
||||
description: class command premission
|
||||
description: class command permission
|
||||
raxen.custommodeldata.cmd:
|
||||
description: custom model data command permission
|
Loading…
Add table
Add a link
Reference in a new issue