Command rework (#1434)
* Network part finished. * Should be more reasonable now * This should be good enough. * Orb finished, needs strings * Bind finished. Needs strings. * Reformat & Help subcommand * Cleanup, strings, no negative amounts * Removed TODOs * Added missing MaxTier check for Blood Orbs. Added TODO: Test with custom Blood Orbs. * Ritual commands finished. Check for valid placement might be optimized. (TODO) * Access modifiers, moved TODO * Added TODOs for localized strings * DrainUtils postponed until the necessary functionality is available with SoulTickets (telling SoulTicket network from soul ticket, a list of all registered soul tickets per network) * Replaced all occurrences of TextHelper with TextComponentTranslation in the commands section * - Moved Teleports.java to teleport package - added teleposer command - added missing strings - cleanup * Fixed spelling of "Successful(ly)" * getUsage() now returns translation keys. getInfo() is now an explicit String ritual creation command now has proper tab completions help is an additional argument with "-h" or "?" cleanup * teleposerSet final cleanup. * Removed ritual removal command Signed-off-by: tobias <angryaeon@icloud.com> * Check if the tile has a ritual first Signed-off-by: tobias <angryaeon@icloud.com> * A bit more optimisation Signed-off-by: tobias <angryaeon@icloud.com> * Cleanup part 1 Signed-off-by: tobias <angryaeon@icloud.com> * Cleanup part 2 Signed-off-by: tobias <angryaeon@icloud.com> * Part 3 Signed-off-by: tobias <angryaeon@icloud.com> * Part 4 Signed-off-by: tobias <angryaeon@icloud.com> * Updated language file to reflect cleanup & continuity changes. Signed-off-by: tobias <angryaeon@icloud.com> * Change to use an abstract class that gets called instead of calling super on overriden execute() for commands Signed-off-by: tobias <angryaeon@icloud.com> * Use player facing for ritual creation. Signed-off-by: tobias <angryaeon@icloud.com>
This commit is contained in:
parent
2a8e1f1271
commit
95d99c0a01
|
@ -1,12 +1,12 @@
|
||||||
package WayofTime.bloodmagic.block;
|
package WayofTime.bloodmagic.block;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.block.base.BlockInteger;
|
||||||
import WayofTime.bloodmagic.ritual.IMasterRitualStone;
|
import WayofTime.bloodmagic.ritual.IMasterRitualStone;
|
||||||
|
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
|
||||||
import WayofTime.bloodmagic.teleport.PortalLocation;
|
import WayofTime.bloodmagic.teleport.PortalLocation;
|
||||||
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
||||||
import WayofTime.bloodmagic.block.base.BlockInteger;
|
import WayofTime.bloodmagic.teleport.Teleports;
|
||||||
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
|
|
||||||
import WayofTime.bloodmagic.ritual.portal.Teleports;
|
|
||||||
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
|
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package WayofTime.bloodmagic.block;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
|
import WayofTime.bloodmagic.command.sub.SubCommandTeleposer;
|
||||||
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
||||||
import WayofTime.bloodmagic.tile.TileTeleposer;
|
import WayofTime.bloodmagic.tile.TileTeleposer;
|
||||||
import WayofTime.bloodmagic.util.Constants;
|
import WayofTime.bloodmagic.util.Constants;
|
||||||
|
@ -48,8 +49,10 @@ public class BlockTeleposer extends BlockContainer implements IVariantProvider,
|
||||||
@Override
|
@Override
|
||||||
public void breakBlock(World world, BlockPos blockPos, IBlockState blockState) {
|
public void breakBlock(World world, BlockPos blockPos, IBlockState blockState) {
|
||||||
TileTeleposer tileTeleposer = (TileTeleposer) world.getTileEntity(blockPos);
|
TileTeleposer tileTeleposer = (TileTeleposer) world.getTileEntity(blockPos);
|
||||||
if (tileTeleposer != null)
|
if (tileTeleposer != null) {
|
||||||
tileTeleposer.dropItems();
|
tileTeleposer.dropItems();
|
||||||
|
SubCommandTeleposer.teleposerSet.remove(tileTeleposer);
|
||||||
|
}
|
||||||
|
|
||||||
super.breakBlock(world, blockPos, blockState);
|
super.breakBlock(world, blockPos, blockState);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
package WayofTime.bloodmagic.command;
|
package WayofTime.bloodmagic.command;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.command.sub.SubCommandBind;
|
import WayofTime.bloodmagic.command.sub.*;
|
||||||
import WayofTime.bloodmagic.command.sub.SubCommandNetwork;
|
|
||||||
import WayofTime.bloodmagic.command.sub.SubCommandOrb;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
import net.minecraft.command.ICommandSender;
|
import net.minecraft.command.ICommandSender;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
|
||||||
import net.minecraftforge.server.command.CommandTreeBase;
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
public class CommandBloodMagic extends CommandTreeBase {
|
public class CommandBloodMagic extends CommandTreeBase {
|
||||||
|
|
||||||
public CommandBloodMagic() {
|
public CommandBloodMagic() {
|
||||||
addSubcommand(new SubCommandBind());
|
addSubcommand(new SubCommandBind());
|
||||||
addSubcommand(new SubCommandNetwork());
|
addSubcommand(new SubCommandNetwork());
|
||||||
addSubcommand(new SubCommandOrb());
|
addSubcommand(new SubCommandOrb());
|
||||||
|
addSubcommand(new SubCommandRitual());
|
||||||
|
addSubcommand(new SubCommandTeleposer());
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,15 +31,4 @@ public class CommandBloodMagic extends CommandTreeBase {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void displayHelpString(ICommandSender commandSender, String display, Object... info) {
|
|
||||||
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void displayErrorString(ICommandSender commandSender, String display, Object... info) {
|
|
||||||
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void displaySuccessString(ICommandSender commandSender, String display, Object... info) {
|
|
||||||
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect(display, info)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,17 +3,26 @@ package WayofTime.bloodmagic.command.sub;
|
||||||
import WayofTime.bloodmagic.core.data.Binding;
|
import WayofTime.bloodmagic.core.data.Binding;
|
||||||
import WayofTime.bloodmagic.iface.IBindable;
|
import WayofTime.bloodmagic.iface.IBindable;
|
||||||
import WayofTime.bloodmagic.util.helper.BindableHelper;
|
import WayofTime.bloodmagic.util.helper.BindableHelper;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
import net.minecraft.command.CommandBase;
|
|
||||||
import net.minecraft.command.CommandException;
|
import net.minecraft.command.CommandException;
|
||||||
import net.minecraft.command.ICommandSender;
|
import net.minecraft.command.ICommandSender;
|
||||||
import net.minecraft.command.PlayerNotFoundException;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
|
public class SubCommandBind extends CommandTreeBase {
|
||||||
|
public EntityPlayerMP player;
|
||||||
|
|
||||||
|
public SubCommandBind() {
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return player.getName();
|
||||||
|
}
|
||||||
|
|
||||||
public class SubCommandBind extends CommandBase {
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "bind";
|
return "bind";
|
||||||
|
@ -21,7 +30,11 @@ public class SubCommandBind extends CommandBase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsage(ICommandSender commandSender) {
|
public String getUsage(ICommandSender commandSender) {
|
||||||
return TextHelper.localizeEffect("commands.bloodmagic.bind.usage");
|
return "commands.bloodmagic.bind.usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHelp() {
|
||||||
|
return "commands.bloodmagic.bind.help";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,49 +43,49 @@ public class SubCommandBind extends CommandBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
|
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
if (commandSender.getEntityWorld().isRemote)
|
if (args.length == 1 && (args[0].equals("?") || args[0].equals("help"))) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(getHelp()));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try {
|
|
||||||
EntityPlayer player = CommandBase.getCommandSenderAsPlayer(commandSender);
|
|
||||||
ItemStack held = player.getHeldItemMainhand();
|
|
||||||
boolean bind = true;
|
|
||||||
|
|
||||||
if (held.getItem() instanceof IBindable) {
|
|
||||||
if (args.length > 0) {
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("help"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (isBoolean(args[0])) {
|
|
||||||
bind = Boolean.parseBoolean(args[0]);
|
|
||||||
|
|
||||||
if (args.length > 2)
|
|
||||||
player = CommandBase.getPlayer(server, commandSender, args[1]);
|
|
||||||
} else {
|
|
||||||
player = CommandBase.getPlayer(server, commandSender, args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bind) {
|
|
||||||
Binding binding = new Binding(player.getGameProfile().getId(), player.getGameProfile().getName());
|
|
||||||
BindableHelper.applyBinding(held, binding);
|
|
||||||
commandSender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.success"));
|
|
||||||
} else {
|
|
||||||
Binding binding = ((IBindable) held.getItem()).getBinding(held);
|
|
||||||
if (binding != null) {
|
|
||||||
held.getTagCompound().removeTag("binding");
|
|
||||||
commandSender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.remove.success"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (PlayerNotFoundException e) {
|
|
||||||
commandSender.sendMessage(new TextComponentTranslation(TextHelper.localizeEffect("commands.bloodmagic.error.404")));
|
|
||||||
}
|
}
|
||||||
|
if (sender.getEntityWorld().isRemote)
|
||||||
|
return;
|
||||||
|
EntityPlayerMP player = args.length < 2 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
ItemStack held = player.getHeldItemMainhand();
|
||||||
|
boolean bind = true;
|
||||||
|
if (held.getItem() instanceof IBindable) {
|
||||||
|
Binding binding = ((IBindable) held.getItem()).getBinding(held);
|
||||||
|
if (binding != null)
|
||||||
|
bind = false;
|
||||||
|
if (args.length < 2)
|
||||||
|
if (args.length == 1)
|
||||||
|
if (isBoolean(args[0]))
|
||||||
|
bind = Boolean.parseBoolean(args[0]);
|
||||||
|
else
|
||||||
|
player = getPlayer(server, sender, args[0]);
|
||||||
|
if (bind) {
|
||||||
|
if (binding.getOwnerName().equals(player.getName())) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.error.ownerEqualsTarget"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
binding = new Binding(player.getGameProfile().getId(), player.getGameProfile().getName());
|
||||||
|
BindableHelper.applyBinding(held, binding);
|
||||||
|
this.player = player;
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.success", getInfo()));
|
||||||
|
} else {
|
||||||
|
if (binding == null) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.error.notBound"));
|
||||||
|
}
|
||||||
|
held.getTagCompound().removeTag("binding");
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.remove.success"));
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.bind.error.notBindable"));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBoolean(String string) {
|
private boolean isBoolean(String string) {
|
||||||
return string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false");
|
return string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false");
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,21 +2,33 @@ package WayofTime.bloodmagic.command.sub;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
||||||
import WayofTime.bloodmagic.core.data.SoulTicket;
|
import WayofTime.bloodmagic.core.data.SoulTicket;
|
||||||
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
|
||||||
import WayofTime.bloodmagic.command.CommandBloodMagic;
|
|
||||||
import WayofTime.bloodmagic.util.Utils;
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
||||||
import net.minecraft.command.CommandBase;
|
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
||||||
import net.minecraft.command.CommandException;
|
import net.minecraft.command.CommandException;
|
||||||
import net.minecraft.command.ICommandSender;
|
import net.minecraft.command.ICommandSender;
|
||||||
import net.minecraft.command.PlayerNotFoundException;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SubCommandNetwork extends CommandTreeBase {
|
||||||
|
|
||||||
|
public SubCommandNetwork() {
|
||||||
|
addSubcommand(new Syphon());
|
||||||
|
addSubcommand(new Add());
|
||||||
|
addSubcommand(new Set());
|
||||||
|
addSubcommand(new Get());
|
||||||
|
addSubcommand(new Cap());
|
||||||
|
addSubcommand(new Fill());
|
||||||
|
addSubcommand(new Tickets());
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
|
}
|
||||||
|
|
||||||
public class SubCommandNetwork extends CommandBase {
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "network";
|
return "network";
|
||||||
|
@ -24,160 +36,190 @@ public class SubCommandNetwork extends CommandBase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsage(ICommandSender commandSender) {
|
public String getUsage(ICommandSender commandSender) {
|
||||||
return TextHelper.localizeEffect("commands.bloodmagic.network.usage");
|
return "commands.bloodmagic.network.usage";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRequiredPermissionLevel() {
|
public int getRequiredPermissionLevel() {
|
||||||
return 2;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
abstract class NetworkCommand extends CommandTreeBase {
|
||||||
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
|
|
||||||
if (args.length > 1) {
|
public EntityPlayerMP player;
|
||||||
if (args[0].equalsIgnoreCase("help"))
|
public SoulNetwork network;
|
||||||
|
public String uuid;
|
||||||
|
|
||||||
|
public Integer commandHelperAmount(MinecraftServer server, ICommandSender sender, String[] args) {
|
||||||
|
int amount;
|
||||||
|
if (args.length == 0)
|
||||||
|
amount = 1000;
|
||||||
|
else if (Utils.isInteger(args[0]))
|
||||||
|
amount = Integer.parseInt(args[0]);
|
||||||
|
else if (args.length > 1 && Utils.isInteger(args[1]))
|
||||||
|
amount = Integer.parseInt(args[1]);
|
||||||
|
else {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.arg.invalid"));
|
||||||
|
sender.sendMessage(new TextComponentTranslation(this.getUsage(sender)));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (amount < 0) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.negative"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.network." + getName() + ".usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHelp() {
|
||||||
|
return "commands.bloodmagic.network." + getName() + ".help";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
if (!getName().equals("get")) {
|
||||||
|
if (args.length == 1 && (args[0].equals("?") || args[0].equals("help"))) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(getHelp()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.player = args.length < 2 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
this.uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
|
||||||
|
this.network = NetworkHelper.getSoulNetwork(uuid);
|
||||||
|
}
|
||||||
|
subExecute(server, sender, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void subExecute(MinecraftServer server, ICommandSender sender, String... args) throws CommandException;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Syphon extends NetworkCommand {
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "syphon";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer amount = commandHelperAmount(server, sender, args);
|
||||||
|
if (amount == null)
|
||||||
return;
|
return;
|
||||||
|
int currE = network.getCurrentEssence();
|
||||||
try {
|
if (amount > currE) {
|
||||||
EntityPlayer player = CommandBase.getPlayer(server, commandSender, args[1]);
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.syphon.amountTooHigh"));
|
||||||
|
if (currE == 0)
|
||||||
try {
|
return;
|
||||||
ValidCommands command = ValidCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH));
|
amount = Math.min(amount, currE);
|
||||||
command.run(player, commandSender, args.length > 0 && args.length < 2, args);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (PlayerNotFoundException e) {
|
|
||||||
CommandBloodMagic.displayErrorString(commandSender, e.getLocalizedMessage());
|
|
||||||
}
|
}
|
||||||
} else {
|
network.syphonAndDamage(player, SoulTicket.command(sender, this.getName(), amount));
|
||||||
CommandBloodMagic.displayErrorString(commandSender, "commands.bloodmagic.error.arg.missing");
|
int newE = network.getCurrentEssence();
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.syphon.success", currE - newE, player.getDisplayName().getFormattedText()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum ValidCommands {
|
class Add extends NetworkCommand {
|
||||||
SYPHON("commands.bloodmagic.network.syphon.help") {
|
@Override
|
||||||
@Override
|
public String getName() {
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
return "add";
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length == 3) {
|
|
||||||
if (Utils.isInteger(args[2])) {
|
|
||||||
int amount = Integer.parseInt(args[2]);
|
|
||||||
NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, SoulTicket.command(sender, "syphon", amount));
|
|
||||||
CommandBloodMagic.displaySuccessString(sender, "commands.bloodmagic.network.syphon.success", amount, player.getDisplayName().getFormattedText());
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.invalid");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.missing");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ADD("commands.bloodmagic.network.add.help") {
|
|
||||||
@Override
|
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
|
||||||
|
|
||||||
if (args.length == 3) {
|
|
||||||
if (Utils.isInteger(args[2])) {
|
|
||||||
int amount = Integer.parseInt(args[2]);
|
|
||||||
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
|
|
||||||
CommandBloodMagic.displaySuccessString(sender, "commands.bloodmagic.network.add.success", network.add(SoulTicket.command(sender, "add", amount), maxOrb), player.getDisplayName().getFormattedText());
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.invalid");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.missing");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
SET("commands.bloodmagic.network.set.help") {
|
|
||||||
@Override
|
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
|
||||||
|
|
||||||
if (args.length == 3) {
|
|
||||||
if (Utils.isInteger(args[2])) {
|
|
||||||
int amount = Integer.parseInt(args[2]);
|
|
||||||
network.setCurrentEssence(amount);
|
|
||||||
CommandBloodMagic.displaySuccessString(sender, "commands.bloodmagic.network.set.success", player.getDisplayName().getFormattedText(), amount);
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.invalid");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(sender, "commands.bloodmagic.error.arg.missing");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
GET("commands.bloodmagic.network.get.help") {
|
|
||||||
@Override
|
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
|
||||||
|
|
||||||
if (args.length > 1)
|
|
||||||
sender.sendMessage(new TextComponentString(TextHelper.localizeEffect("tooltip.bloodmagic.sigil.divination.currentEssence", network.getCurrentEssence())));
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
FILL("commands.bloodmagic.network.fill.help") {
|
|
||||||
@Override
|
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help, Integer.MAX_VALUE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
|
||||||
|
|
||||||
if (args.length > 1) {
|
|
||||||
network.setCurrentEssence(Integer.MAX_VALUE);
|
|
||||||
CommandBloodMagic.displaySuccessString(sender, "commands.bloodmagic.network.fill.success", player.getDisplayName().getFormattedText());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
CAP("commands.bloodmagic.network.cap.help") {
|
|
||||||
@Override
|
|
||||||
public void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args) {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(sender, this.help);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
|
||||||
|
|
||||||
if (args.length > 1) {
|
|
||||||
int maxOrb = NetworkHelper.getMaximumForTier(network.getOrbTier());
|
|
||||||
network.setCurrentEssence(maxOrb);
|
|
||||||
CommandBloodMagic.displaySuccessString(sender, "commands.bloodmagic.network.cap.success", player.getDisplayName().getFormattedText());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},;
|
|
||||||
|
|
||||||
public String help;
|
|
||||||
|
|
||||||
ValidCommands(String help) {
|
|
||||||
this.help = help;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void run(EntityPlayer player, ICommandSender sender, boolean displayHelp, String... args);
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer amount = commandHelperAmount(server, sender, args);
|
||||||
|
if (amount == null)
|
||||||
|
return;
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.add.success", network.add(SoulTicket.command(sender, getName(), amount), NetworkHelper.getMaximumForTier(network.getOrbTier())), player.getDisplayName().getFormattedText()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
class Set extends NetworkCommand {
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer amount = commandHelperAmount(server, sender, args);
|
||||||
|
if (amount == null)
|
||||||
|
return;
|
||||||
|
network.setCurrentEssence(amount);
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.set.success", player.getDisplayName().getFormattedText(), amount));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Get extends NetworkCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "get";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
if (args.length == 1 && (args[0].equals("?") || args[0].equals("help"))) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(getHelp()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.player = args.length < 1 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
sender.sendMessage(new TextComponentString((player != sender ? player.getDisplayName().getFormattedText() + " " : "" + new TextComponentTranslation("tooltip.bloodmagic.sigil.divination.currentEssence", network.getCurrentEssence()).getFormattedText())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Cap extends NetworkCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "cap";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
network.setCurrentEssence(NetworkHelper.getMaximumForTier(network.getOrbTier()));
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.cap.success", player.getDisplayName().getFormattedText()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Fill extends NetworkCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInfo() {
|
||||||
|
return "" + Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "fill";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
network.setCurrentEssence(Integer.MAX_VALUE);
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.network.fill.success", player.getDisplayName().getFormattedText()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Tickets extends NetworkCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "tickethistory";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
List<SoulTicket> tickethistory = network.getTicketHistory();
|
||||||
|
if (tickethistory.isEmpty())
|
||||||
|
for (SoulTicket i : network.getTicketHistory())
|
||||||
|
sender.sendMessage(i.getDescription());
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success", player.getDisplayName().getFormattedText()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,22 +1,25 @@
|
||||||
package WayofTime.bloodmagic.command.sub;
|
package WayofTime.bloodmagic.command.sub;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
||||||
|
import WayofTime.bloodmagic.core.registry.OrbRegistry;
|
||||||
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
||||||
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
||||||
import WayofTime.bloodmagic.command.CommandBloodMagic;
|
|
||||||
import WayofTime.bloodmagic.util.Utils;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
import net.minecraft.command.CommandBase;
|
|
||||||
import net.minecraft.command.CommandException;
|
import net.minecraft.command.CommandException;
|
||||||
import net.minecraft.command.ICommandSender;
|
import net.minecraft.command.ICommandSender;
|
||||||
import net.minecraft.command.PlayerNotFoundException;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
import java.util.Locale;
|
public class SubCommandOrb extends CommandTreeBase {
|
||||||
|
public SubCommandOrb() {
|
||||||
|
addSubcommand(new Get());
|
||||||
|
addSubcommand(new Set());
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
|
}
|
||||||
|
|
||||||
public class SubCommandOrb extends CommandBase {
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "orb";
|
return "orb";
|
||||||
|
@ -24,7 +27,7 @@ public class SubCommandOrb extends CommandBase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsage(ICommandSender commandSender) {
|
public String getUsage(ICommandSender commandSender) {
|
||||||
return TextHelper.localizeEffect("commands.bloodmagic.orb.usage");
|
return "commands.bloodmagic.orb.usage";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,76 +35,93 @@ public class SubCommandOrb extends CommandBase {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
abstract class OrbCommand extends CommandTreeBase {
|
||||||
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
|
|
||||||
if (args.length > 0) {
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("help"))
|
public EntityPlayerMP player;
|
||||||
|
public String uuid;
|
||||||
|
public SoulNetwork network;
|
||||||
|
public Object info;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.orb." + getName() + ".usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHelp() {
|
||||||
|
return "commands.bloodmagic.orb." + getName() + ".help";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
if (args.length == 1 && (args[0].equals("?") || args[0].equals("help"))) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(getHelp()));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try {
|
|
||||||
String givenName = commandSender.getName();
|
|
||||||
|
|
||||||
if (args.length > 1)
|
|
||||||
givenName = args[1];
|
|
||||||
|
|
||||||
EntityPlayer player = CommandBase.getPlayer(server, commandSender, givenName);
|
|
||||||
String uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(uuid);
|
|
||||||
|
|
||||||
boolean displayHelp = args.length > 0 && args.length < 2;
|
|
||||||
|
|
||||||
try {
|
|
||||||
switch (ValidCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH))) {
|
|
||||||
case SET: {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(commandSender, ValidCommands.SET.help);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length == 3) {
|
|
||||||
if (Utils.isInteger(args[2])) {
|
|
||||||
int amount = Integer.parseInt(args[2]);
|
|
||||||
network.setOrbTier(amount);
|
|
||||||
CommandBloodMagic.displaySuccessString(commandSender, "commands.bloodmagic.success");
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(commandSender, "commands.bloodmagic.error.arg.invalid");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CommandBloodMagic.displayErrorString(commandSender, "commands.bloodmagic.error.arg.missing");
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case GET: {
|
|
||||||
if (displayHelp) {
|
|
||||||
CommandBloodMagic.displayHelpString(commandSender, ValidCommands.GET.help);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length > 1)
|
|
||||||
commandSender.sendMessage(new TextComponentString(TextHelper.localizeEffect("message.orb.currenttier", network.getOrbTier())));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
CommandBloodMagic.displayErrorString(commandSender, "commands.bloodmagic.error.404");
|
|
||||||
}
|
|
||||||
} catch (PlayerNotFoundException e) {
|
|
||||||
CommandBloodMagic.displayErrorString(commandSender, "commands.bloodmagic.error.404");
|
|
||||||
}
|
}
|
||||||
|
player = args.length < 2 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
|
||||||
|
network = NetworkHelper.getSoulNetwork(uuid);
|
||||||
|
|
||||||
|
subExecute(server, sender, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void subExecute(MinecraftServer server, ICommandSender sender, String... args) throws CommandException;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Get extends OrbCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "get";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
super.execute(server, sender, args);
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.orb.currenttier", network.getOrbTier()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum ValidCommands {
|
class Set extends OrbCommand {
|
||||||
SET("commands.bloodmagic.orb.set.help"),
|
//TODO: check whether maxTier check works with custom Blood Orbs
|
||||||
GET("commands.bloodmagic.orb.get.help");
|
int maxTier = OrbRegistry.getTierMap().size() - 1;
|
||||||
|
|
||||||
public String help;
|
@Override
|
||||||
|
public String getInfo() {
|
||||||
|
return "" + maxTier;
|
||||||
|
}
|
||||||
|
|
||||||
ValidCommands(String help) {
|
@Override
|
||||||
this.help = help;
|
public String getName() {
|
||||||
|
return "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
super.execute(server, sender, args);
|
||||||
|
|
||||||
|
int targetTier;
|
||||||
|
if (args.length == 1 && Utils.isInteger(args[0]))
|
||||||
|
targetTier = Integer.parseInt(args[0]);
|
||||||
|
else if (args.length == 2 && Utils.isInteger(args[1]))
|
||||||
|
targetTier = Integer.parseInt(args[1]);
|
||||||
|
else {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.arg.invalid"));
|
||||||
|
sender.sendMessage(new TextComponentTranslation(this.getUsage(sender)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (targetTier < 0) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.negative"));
|
||||||
|
return;
|
||||||
|
} else if (targetTier > maxTier) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.orb.error.tierTooHigh", getInfo()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
network.setOrbTier(targetTier);
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
package WayofTime.bloodmagic.command.sub;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.ritual.Ritual;
|
||||||
|
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
|
||||||
|
import WayofTime.bloodmagic.util.helper.RitualHelper;
|
||||||
|
import net.minecraft.command.CommandException;
|
||||||
|
import net.minecraft.command.ICommandSender;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SubCommandRitual extends CommandTreeBase {
|
||||||
|
public SubCommandRitual() {
|
||||||
|
addSubcommand(new RitualCreate());
|
||||||
|
addSubcommand(new RitualRepair());
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "ritual";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileMasterRitualStone getMRS(ICommandSender sender) {
|
||||||
|
BlockPos pos = sender.getPosition().down();
|
||||||
|
World world = sender.getEntityWorld();
|
||||||
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
|
if (tile instanceof TileMasterRitualStone) {
|
||||||
|
return (TileMasterRitualStone) tile;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
class RitualCreate extends CommandTreeBase {
|
||||||
|
public List<String> ritualList = new ArrayList<>();
|
||||||
|
public RitualCreate() {
|
||||||
|
for (Ritual ritual : BloodMagic.RITUAL_MANAGER.getRituals()) {
|
||||||
|
ritualList.add(BloodMagic.RITUAL_MANAGER.getId(ritual));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos) {
|
||||||
|
return ritualList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "create";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MinecraftServer server, ICommandSender sender, String... args) throws CommandException {
|
||||||
|
if (args.length == 0) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.blooodmagic.ritual.create.noRitual"));
|
||||||
|
return;
|
||||||
|
} else if (args.length == 2 && (args[1].equals("help") || args[1].equals("?"))) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(BloodMagic.RITUAL_MANAGER.getRitual(args[0]).getUnlocalizedName() + ".info"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
EntityPlayerMP player = args.length < 3 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[1]);
|
||||||
|
boolean safe = false;
|
||||||
|
if (args.length > 1 && args.length < 4) {
|
||||||
|
int k = args.length - 1;
|
||||||
|
if (args[k].equals("true") || args[k].equals("false")) {
|
||||||
|
safe = Boolean.parseBoolean(args[k]);
|
||||||
|
} else if (args[1].equals("safe"))
|
||||||
|
safe = true;
|
||||||
|
else
|
||||||
|
player = getPlayer(server, sender, args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockPos pos = player.getPosition().down();
|
||||||
|
World world = player.getEntityWorld();
|
||||||
|
EnumFacing direction = player.getHorizontalFacing();
|
||||||
|
|
||||||
|
if (RitualHelper.createRitual(world, pos, direction, BloodMagic.RITUAL_MANAGER.getRitual(args[0]), safe))
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
else if (!safe)
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.ritual.create.error.outOfWorldBoundaries"));
|
||||||
|
else
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.ritaul.create.error.unsafe"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.ritual.create.help";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RitualRepair extends CommandTreeBase {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "repair";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.ritual.repair.usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MinecraftServer server, ICommandSender sender, String... args) throws CommandException {
|
||||||
|
EntityPlayerMP player = args.length < 2 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
TileMasterRitualStone tile = getMRS(player);
|
||||||
|
boolean safe = false;
|
||||||
|
if (args.length > 0 && args.length < 3) {
|
||||||
|
int k = args.length - 1;
|
||||||
|
if (args[k].equals("true") || args[k].equals("false")) {
|
||||||
|
safe = Boolean.parseBoolean(args[k]);
|
||||||
|
} else if (args[0].equals("safe"))
|
||||||
|
safe = true;
|
||||||
|
}
|
||||||
|
if (tile != null)
|
||||||
|
if (RitualHelper.repairRitualFromRuins(tile, safe))
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
else if (!safe)
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.ritual.create.error.outOfWorldBoundaries"));
|
||||||
|
else
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.ritaul.create.error.unsafe"));
|
||||||
|
else
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.ritual.error.noMRS"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,329 @@
|
||||||
|
package WayofTime.bloodmagic.command.sub;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.core.data.Binding;
|
||||||
|
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
||||||
|
import WayofTime.bloodmagic.teleport.Teleports;
|
||||||
|
import WayofTime.bloodmagic.tile.TileTeleposer;
|
||||||
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
|
import net.minecraft.command.CommandException;
|
||||||
|
import net.minecraft.command.ICommandSender;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.TextComponentString;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeBase;
|
||||||
|
import net.minecraftforge.server.command.CommandTreeHelp;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class SubCommandTeleposer extends CommandTreeBase {
|
||||||
|
public static final Set<TileTeleposer> teleposerSet = new HashSet<>(); //contains "valid" teleposers (teleposers with focus), teleposers check themselves every 100 ticks.
|
||||||
|
public static TileTeleposer[] teleposerArray;
|
||||||
|
|
||||||
|
public SubCommandTeleposer() {
|
||||||
|
addSubcommand(new OutputTeleposerList());
|
||||||
|
addSubcommand(new TeleportToTeleposer());
|
||||||
|
addSubcommand(new TeleportToTeleposerFocus());
|
||||||
|
addSubcommand(new RemoveTeleposer());
|
||||||
|
addSubcommand(new RecursiveRemoveTeleposer());
|
||||||
|
addSubcommand(new RemoveAllOfPlayer());
|
||||||
|
addSubcommand(new CommandTreeHelp(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRequiredPermissionLevel() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "teleposer";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.teleposer.usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class TeleposeHelper extends CommandTreeBase {
|
||||||
|
public EntityPlayer player;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.bloodmagic.teleposer." + getName() + ".usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHelp() {
|
||||||
|
return "commands.bloodmagic.teleposer." + getName() + ".help";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRequiredPermissionLevel() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileTeleposer[] cleanUpAndCreateArrayFromTeleposerList(EntityPlayer player) {
|
||||||
|
if (player == null)
|
||||||
|
for (TileTeleposer i : teleposerSet) {
|
||||||
|
if (i == null || i.isInvalid() || i.isEmpty()) {
|
||||||
|
teleposerSet.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (TileTeleposer i : teleposerSet) {
|
||||||
|
if (i == null || i.isInvalid() || i.isEmpty()) {
|
||||||
|
teleposerSet.remove(i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ItemStack stack = i.getStackInSlot(0);
|
||||||
|
ItemTelepositionFocus focus = (ItemTelepositionFocus) stack.getItem();
|
||||||
|
Binding binding = focus.getBinding(stack);
|
||||||
|
if (binding != null && !binding.getOwnerName().equals(player.getName())) {
|
||||||
|
teleposerSet.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
teleposerArray = teleposerSet.toArray(new TileTeleposer[0]);
|
||||||
|
return teleposerArray;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendOwnedTeleposerList(ICommandSender sender, EntityPlayer player) {
|
||||||
|
teleposerArray = cleanUpAndCreateArrayFromTeleposerList(player);
|
||||||
|
for (int i = 0; i < teleposerArray.length; i++) {
|
||||||
|
ItemStack stack = teleposerArray[i].getStackInSlot(0);
|
||||||
|
ItemTelepositionFocus focus = (ItemTelepositionFocus) stack.getItem();
|
||||||
|
Binding binding = focus.getBinding(stack);
|
||||||
|
if (binding != null) {
|
||||||
|
String name = binding.getOwnerName();
|
||||||
|
if (player != null) {
|
||||||
|
if (name.equals(player.getName()))
|
||||||
|
sender.sendMessage(new TextComponentString(i + new TextComponentTranslation("commands.bloodmagic.teleposer.anddimension").getFormattedText() + teleposerArray[i].getWorld().provider.getDimension() + " " + teleposerArray[i].getPos() + " " + new TextComponentTranslation("commands.bloodmagic.teleposer.focusanddim").getFormattedText() + " " + focus.getWorld(stack).provider.getDimension() + " " + focus.getBlockPos(stack) + " " + new TextComponentTranslation("commands.bloodmagic.teleposer.owner").getFormattedText() + " " + name));
|
||||||
|
} else
|
||||||
|
sender.sendMessage(new TextComponentString(i + new TextComponentTranslation("commands.bloodmagic.teleposer.anddimension").getFormattedText() + teleposerArray[i].getWorld().provider.getDimension() + " " + teleposerArray[i].getPos() + " " + new TextComponentTranslation("commands.bloodmagic.teleposer.focusanddim").getFormattedText() + " " + focus.getWorld(stack).provider.getDimension() + " " + focus.getBlockPos(stack) + " " + new TextComponentTranslation("commands.bloodmagic.teleposer.owner").getFormattedText() + " " + name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIDFromArgs(ICommandSender sender, String[] args) {
|
||||||
|
int teleposerID;
|
||||||
|
if (args.length == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Utils.isInteger(args[0]))
|
||||||
|
teleposerID = Integer.parseInt(args[0]);
|
||||||
|
else if (args.length > 1 && Utils.isInteger(args[1]))
|
||||||
|
teleposerID = Integer.parseInt(args[1]);
|
||||||
|
else {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.arg.invalid"));
|
||||||
|
sender.sendMessage(new TextComponentTranslation(this.getUsage(sender)));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (teleposerID < 0) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.negative"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return teleposerID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
if (args.length == 1 && args[0].equals("?") || args[0].equals("help")) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation(getHelp()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(getName().equals("rmrf") || getName().equals("remove"))) {
|
||||||
|
this.player = args.length < 2 ? getCommandSenderAsPlayer(sender) : getPlayer(server, sender, args[0]);
|
||||||
|
}
|
||||||
|
subExecute(server, sender, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void subExecute(MinecraftServer server, ICommandSender sender, String... args) throws CommandException;
|
||||||
|
}
|
||||||
|
|
||||||
|
class OutputTeleposerList extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "list";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
sendOwnedTeleposerList(sender, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TeleportToTeleposer extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "teleport";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer teleposerID = getIDFromArgs(sender, args);
|
||||||
|
if (teleposerID == null)
|
||||||
|
sendOwnedTeleposerList(sender, null);
|
||||||
|
else if (!sender.getEntityWorld().isRemote) {
|
||||||
|
if (teleposerID > teleposerArray.length) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.error.outofbounds"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TileTeleposer brunhilde = teleposerArray[teleposerID]; // every teleposer is a brunhilde!
|
||||||
|
BlockPos brunhildePos = brunhilde.getPos();
|
||||||
|
World brunhildeWorld = brunhilde.getWorld();
|
||||||
|
if (player.getEntityWorld().equals(brunhildeWorld))
|
||||||
|
new Teleports.TeleportSameDim(brunhildePos, player, player.getUniqueID(), false).teleport();
|
||||||
|
else
|
||||||
|
new Teleports.TeleportToDim(brunhildePos, player, player.getUniqueID(), player.getEntityWorld(), brunhildeWorld.provider.getDimension(), false).teleport();
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TeleportToTeleposerFocus extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "teleportfocus";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer teleposerID = getIDFromArgs(sender, args);
|
||||||
|
if (teleposerID == null)
|
||||||
|
sendOwnedTeleposerList(sender, null);
|
||||||
|
else if (!sender.getEntityWorld().isRemote) {
|
||||||
|
if (teleposerID > teleposerArray.length) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.outofbounds"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TileTeleposer brunhilde = teleposerArray[teleposerID]; // every teleposer is a brunhilde!
|
||||||
|
ItemStack stack = brunhilde.getStackInSlot(0);
|
||||||
|
ItemTelepositionFocus focus = (ItemTelepositionFocus) stack.getItem();
|
||||||
|
BlockPos brunhildeFocusPos = focus.getBlockPos(stack);
|
||||||
|
World brunhildeFocusWorld = focus.getWorld(stack);
|
||||||
|
if (player.getEntityWorld().equals(brunhildeFocusWorld))
|
||||||
|
new Teleports.TeleportSameDim(brunhildeFocusPos, player, player.getUniqueID(), false).teleport();
|
||||||
|
else
|
||||||
|
new Teleports.TeleportToDim(brunhildeFocusPos, player, player.getUniqueID(), player.getEntityWorld(), brunhildeFocusWorld.provider.getDimension(), false).teleport();
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RemoveTeleposer extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "remove";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer teleposerID = getIDFromArgs(sender, args);
|
||||||
|
if (teleposerID == null)
|
||||||
|
sendOwnedTeleposerList(sender, null);
|
||||||
|
else if (!sender.getEntityWorld().isRemote) {
|
||||||
|
if (teleposerID > teleposerArray.length) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.outofbounds"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TileTeleposer brunhilde = teleposerArray[teleposerID]; // every teleposer is a brunhilde!
|
||||||
|
BlockPos brunhildePos = brunhilde.getPos();
|
||||||
|
World brunhildeWorld = brunhilde.getWorld();
|
||||||
|
brunhildeWorld.setBlockToAir(brunhildePos);
|
||||||
|
cleanUpAndCreateArrayFromTeleposerList(null);
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RecursiveRemoveTeleposer extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "rmrf";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
Integer teleposerID = getIDFromArgs(sender, args);
|
||||||
|
if (teleposerID == null)
|
||||||
|
sendOwnedTeleposerList(sender, null);
|
||||||
|
else if (!sender.getEntityWorld().isRemote) {
|
||||||
|
if (teleposerID > teleposerArray.length) {
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.outofbounds"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TileTeleposer brunhilde = teleposerArray[teleposerID]; // every teleposer is a brunhilde!
|
||||||
|
do {
|
||||||
|
BlockPos brunhildePos = brunhilde.getPos();
|
||||||
|
World brunhildeWorld = brunhilde.getWorld();
|
||||||
|
ItemStack stack = brunhilde.getStackInSlot(0);
|
||||||
|
ItemTelepositionFocus focus = (ItemTelepositionFocus) stack.getItem();
|
||||||
|
BlockPos brunhildeFocusPos = focus.getBlockPos(stack);
|
||||||
|
World brunhildeFocusWorld = focus.getWorld(stack);
|
||||||
|
brunhilde.setInventorySlotContents(0, ItemStack.EMPTY);
|
||||||
|
brunhildeWorld.setBlockToAir(brunhildePos);
|
||||||
|
TileEntity testTile = brunhildeFocusWorld.getTileEntity(brunhildeFocusPos);
|
||||||
|
if (!(testTile instanceof TileTeleposer) || ((TileTeleposer) testTile).getStackInSlot(0).isEmpty())
|
||||||
|
break;
|
||||||
|
for (TileTeleposer i : teleposerArray) {
|
||||||
|
if (i.getPos().equals(brunhildeFocusPos)) {
|
||||||
|
brunhilde = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} while (true);
|
||||||
|
cleanUpAndCreateArrayFromTeleposerList(null);
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class RemoveAllOfPlayer extends TeleposeHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "removeall";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void subExecute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
cleanUpAndCreateArrayFromTeleposerList(player);
|
||||||
|
|
||||||
|
if (!sender.getEntityWorld().isRemote) {
|
||||||
|
for (TileTeleposer i : teleposerArray) {
|
||||||
|
i.setInventorySlotContents(0, ItemStack.EMPTY);
|
||||||
|
i.getWorld().setBlockToAir(i.getPos());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
cleanUpAndCreateArrayFromTeleposerList(null);
|
||||||
|
|
||||||
|
sender.sendMessage(new TextComponentTranslation("commands.bloodmagic.success"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,10 +3,10 @@ package WayofTime.bloodmagic.item.sigil;
|
||||||
import WayofTime.bloodmagic.core.data.Binding;
|
import WayofTime.bloodmagic.core.data.Binding;
|
||||||
import WayofTime.bloodmagic.iface.ISigil;
|
import WayofTime.bloodmagic.iface.ISigil;
|
||||||
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
||||||
|
import WayofTime.bloodmagic.teleport.Teleports;
|
||||||
|
import WayofTime.bloodmagic.tile.TileTeleposer;
|
||||||
import WayofTime.bloodmagic.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
||||||
import WayofTime.bloodmagic.ritual.portal.Teleports;
|
|
||||||
import WayofTime.bloodmagic.tile.TileTeleposer;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
package WayofTime.bloodmagic.ritual.portal;
|
package WayofTime.bloodmagic.teleport;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
||||||
import WayofTime.bloodmagic.core.data.SoulTicket;
|
import WayofTime.bloodmagic.core.data.SoulTicket;
|
||||||
import WayofTime.bloodmagic.event.TeleposeEvent;
|
import WayofTime.bloodmagic.event.TeleposeEvent;
|
||||||
import WayofTime.bloodmagic.teleport.Teleport;
|
|
||||||
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityList;
|
import net.minecraft.entity.EntityList;
|
||||||
|
@ -148,7 +147,7 @@ public class Teleports {
|
||||||
|
|
||||||
network.syphon(ticket(oldWorld, player, getTeleportCost()));
|
network.syphon(ticket(oldWorld, player, getTeleportCost()));
|
||||||
|
|
||||||
/* begin brandon3055 "BrandonsCore" intedimensional teleportation code */
|
/* begin brandon3055 "BrandonsCore" interdimensional teleportation code */
|
||||||
|
|
||||||
PlayerList playerList = server.getPlayerList();
|
PlayerList playerList = server.getPlayerList();
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package WayofTime.bloodmagic.tile;
|
package WayofTime.bloodmagic.tile;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.block.BlockTeleposer;
|
import WayofTime.bloodmagic.block.BlockTeleposer;
|
||||||
|
import WayofTime.bloodmagic.command.sub.SubCommandTeleposer;
|
||||||
import WayofTime.bloodmagic.core.data.Binding;
|
import WayofTime.bloodmagic.core.data.Binding;
|
||||||
import WayofTime.bloodmagic.core.data.SoulTicket;
|
import WayofTime.bloodmagic.core.data.SoulTicket;
|
||||||
import WayofTime.bloodmagic.event.TeleposeEvent;
|
import WayofTime.bloodmagic.event.TeleposeEvent;
|
||||||
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
||||||
import WayofTime.bloodmagic.ritual.portal.Teleports;
|
|
||||||
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
import WayofTime.bloodmagic.teleport.TeleportQueue;
|
||||||
|
import WayofTime.bloodmagic.teleport.Teleports;
|
||||||
import WayofTime.bloodmagic.util.Constants;
|
import WayofTime.bloodmagic.util.Constants;
|
||||||
import WayofTime.bloodmagic.util.Utils;
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
||||||
|
@ -56,6 +57,17 @@ public class TileTeleposer extends TileInventory implements ITickable {
|
||||||
}
|
}
|
||||||
|
|
||||||
previousInput = currentInput;
|
previousInput = currentInput;
|
||||||
|
|
||||||
|
if (world.getTotalWorldTime() % 100 == 0) {
|
||||||
|
ItemStack focusStack = getStackInSlot(0);
|
||||||
|
if (!focusStack.isEmpty()) {
|
||||||
|
if (((ItemTelepositionFocus) focusStack.getItem()).getBinding(focusStack) != null)
|
||||||
|
SubCommandTeleposer.teleposerSet.add(this);
|
||||||
|
else
|
||||||
|
SubCommandTeleposer.teleposerSet.remove(this);
|
||||||
|
} else
|
||||||
|
SubCommandTeleposer.teleposerSet.remove(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,14 +78,14 @@ public class TileTeleposer extends TileInventory implements ITickable {
|
||||||
Binding binding = focus.getBinding(focusStack);
|
Binding binding = focus.getBinding(focusStack);
|
||||||
if (binding == null)
|
if (binding == null)
|
||||||
return;
|
return;
|
||||||
BlockPos focusPos = focus.getBlockPos(getStackInSlot(0));
|
BlockPos focusPos = focus.getBlockPos(focusStack);
|
||||||
World focusWorld = focus.getWorld(getStackInSlot(0));
|
World focusWorld = focus.getWorld(focusStack);
|
||||||
if (focusWorld == null)
|
if (focusWorld == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TileEntity boundTile = focusWorld.getTileEntity(focusPos);
|
TileEntity boundTile = focusWorld.getTileEntity(focusPos);
|
||||||
if (boundTile instanceof TileTeleposer && boundTile != this) {
|
if (boundTile instanceof TileTeleposer && boundTile != this) {
|
||||||
final int focusLevel = (getStackInSlot(0).getItemDamage() + 1);
|
final int focusLevel = (focusStack.getItemDamage() + 1);
|
||||||
final int lpToBeDrained = (int) (0.5F * Math.sqrt((pos.getX() - focusPos.getX()) * (pos.getX() - focusPos.getX()) + (pos.getY() - focusPos.getY() + 1) * (pos.getY() - focusPos.getY() + 1) + (pos.getZ() - focusPos.getZ()) * (pos.getZ() - focusPos.getZ())));
|
final int lpToBeDrained = (int) (0.5F * Math.sqrt((pos.getX() - focusPos.getX()) * (pos.getX() - focusPos.getX()) + (pos.getY() - focusPos.getY() + 1) * (pos.getY() - focusPos.getY() + 1) + (pos.getZ() - focusPos.getZ()) * (pos.getZ() - focusPos.getZ())));
|
||||||
|
|
||||||
if (NetworkHelper.syphonFromContainer(focusStack, SoulTicket.block(world, pos, lpToBeDrained * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) * (focusLevel * 2 - 1)))) {
|
if (NetworkHelper.syphonFromContainer(focusStack, SoulTicket.block(world, pos, lpToBeDrained * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) * (focusLevel * 2 - 1)))) {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package WayofTime.bloodmagic.util.helper;
|
package WayofTime.bloodmagic.util.helper;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
|
||||||
import WayofTime.bloodmagic.ritual.EnumRuneType;
|
import WayofTime.bloodmagic.ritual.EnumRuneType;
|
||||||
import WayofTime.bloodmagic.ritual.IRitualStone;
|
import WayofTime.bloodmagic.ritual.IRitualStone;
|
||||||
import WayofTime.bloodmagic.ritual.Ritual;
|
import WayofTime.bloodmagic.ritual.Ritual;
|
||||||
import WayofTime.bloodmagic.ritual.RitualComponent;
|
import WayofTime.bloodmagic.ritual.RitualComponent;
|
||||||
|
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -14,6 +16,7 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.common.capabilities.CapabilityInject;
|
import net.minecraftforge.common.capabilities.CapabilityInject;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -96,10 +99,8 @@ public class RitualHelper {
|
||||||
return true;
|
return true;
|
||||||
else if (tile instanceof IRitualStone.Tile)
|
else if (tile instanceof IRitualStone.Tile)
|
||||||
return true;
|
return true;
|
||||||
else if (tile != null && tile.hasCapability(RUNE_CAPABILITY, null))
|
else return tile != null && tile.hasCapability(RUNE_CAPABILITY, null);
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setRuneType(World world, BlockPos pos, EnumRuneType type) {
|
public static void setRuneType(World world, BlockPos pos, EnumRuneType type) {
|
||||||
|
@ -117,4 +118,94 @@ public class RitualHelper {
|
||||||
world.notifyBlockUpdate(pos, state, state, 3);
|
world.notifyBlockUpdate(pos, state, state, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean createRitual(World world, BlockPos pos, EnumFacing direction, Ritual ritual, boolean safe) {
|
||||||
|
|
||||||
|
List<RitualComponent> components = Lists.newArrayList();
|
||||||
|
ritual.gatherComponents(components::add);
|
||||||
|
|
||||||
|
if (abortConstruction(world, pos, direction, safe, components)) return false;
|
||||||
|
|
||||||
|
IBlockState mrs = RegistrarBloodMagicBlocks.RITUAL_CONTROLLER.getDefaultState();
|
||||||
|
world.setBlockState(pos, mrs);
|
||||||
|
|
||||||
|
setRitualStones(direction, world, pos, components);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean abortConstruction(World world, BlockPos pos, EnumFacing direction, boolean safe, List<RitualComponent> components) {
|
||||||
|
//TODO: can be optimized to check only for the first and last component if every ritual has those at the highest and lowest y-level respectivly.
|
||||||
|
for (RitualComponent component : components) {
|
||||||
|
BlockPos offset = component.getOffset(direction);
|
||||||
|
BlockPos newPos = pos.add(offset);
|
||||||
|
if (world.isOutsideBuildHeight(newPos) || (safe && !world.isAirBlock(newPos)))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean repairRitualFromRuins(TileMasterRitualStone tile, boolean safe) {
|
||||||
|
Ritual ritual = tile.getCurrentRitual();
|
||||||
|
EnumFacing direction;
|
||||||
|
Pair<Ritual, EnumFacing> pair;
|
||||||
|
if (ritual == null) {
|
||||||
|
pair = getRitualFromRuins(tile);
|
||||||
|
ritual = pair.getKey();
|
||||||
|
direction = pair.getValue();
|
||||||
|
} else
|
||||||
|
direction = tile.getDirection();
|
||||||
|
|
||||||
|
World world = tile.getWorld();
|
||||||
|
BlockPos pos = tile.getPos();
|
||||||
|
|
||||||
|
List<RitualComponent> components = Lists.newArrayList();
|
||||||
|
ritual.gatherComponents(components::add);
|
||||||
|
|
||||||
|
if (abortConstruction(world, pos, direction, safe, components)) return false;
|
||||||
|
|
||||||
|
setRitualStones(direction, world, pos, components);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setRitualStones(EnumFacing direction, World world, BlockPos pos, List<RitualComponent> gatheredComponents) {
|
||||||
|
for (RitualComponent component : gatheredComponents) {
|
||||||
|
BlockPos offset = component.getOffset(direction);
|
||||||
|
BlockPos newPos = pos.add(offset);
|
||||||
|
int meta = component.getRuneType().ordinal();
|
||||||
|
IBlockState newState = RegistrarBloodMagicBlocks.RITUAL_STONE.getStateFromMeta(meta);
|
||||||
|
world.setBlockState(newPos, newState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Pair<Ritual, EnumFacing> getRitualFromRuins(TileMasterRitualStone tile) {
|
||||||
|
BlockPos pos = tile.getPos();
|
||||||
|
World world = tile.getWorld();
|
||||||
|
Ritual possibleRitual = tile.getCurrentRitual();
|
||||||
|
EnumFacing possibleDirection = tile.getDirection();
|
||||||
|
int highestCount = 0;
|
||||||
|
|
||||||
|
if (possibleRitual == null || possibleDirection == null)
|
||||||
|
for (Ritual ritual : BloodMagic.RITUAL_MANAGER.getRituals()) {
|
||||||
|
for (EnumFacing direction : EnumFacing.HORIZONTALS) {
|
||||||
|
List<RitualComponent> components = Lists.newArrayList();
|
||||||
|
ritual.gatherComponents(components::add);
|
||||||
|
int currentCount = 0;
|
||||||
|
|
||||||
|
for (RitualComponent component : components) {
|
||||||
|
BlockPos newPos = pos.add(component.getOffset(direction));
|
||||||
|
if (isRuneType(world, newPos, component.getRuneType()))
|
||||||
|
currentCount += 1;
|
||||||
|
}
|
||||||
|
if (currentCount > highestCount) {
|
||||||
|
highestCount = currentCount;
|
||||||
|
possibleRitual = ritual;
|
||||||
|
possibleDirection = direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return Pair.of(possibleRitual, possibleDirection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -817,9 +817,8 @@ entity.bloodmagic.Mimic.name=Mimic
|
||||||
commands.bloodmagic.error.arg.invalid=Invalid arguments
|
commands.bloodmagic.error.arg.invalid=Invalid arguments
|
||||||
commands.bloodmagic.error.arg.missing=Not enough arguments
|
commands.bloodmagic.error.arg.missing=Not enough arguments
|
||||||
commands.bloodmagic.error.arg.player.missing=You must specify which player you wish to perform this action on.
|
commands.bloodmagic.error.arg.player.missing=You must specify which player you wish to perform this action on.
|
||||||
commands.bloodmagic.error.404=Command not found!
|
commands.bloodmagic.error.negative=Amount must be a positive Integer.
|
||||||
commands.bloodmagic.error.unknown=Unknown command!
|
commands.bloodmagic.error.outofbounds=Given integer is too large (must be within list ID boundaries).
|
||||||
commands.bloodmagic.error.perm=You do not have permission to use this command.
|
|
||||||
|
|
||||||
commands.bloodmagic.success=Executed successfully
|
commands.bloodmagic.success=Executed successfully
|
||||||
|
|
||||||
|
@ -833,42 +832,67 @@ commands.bloodmagic.network.usage=/bloodmagic network [syphon|add|get|fill|cap]
|
||||||
commands.bloodmagic.network.help=LP network utilities
|
commands.bloodmagic.network.help=LP network utilities
|
||||||
commands.bloodmagic.network.syphon.help=Removes the given amount of LP from the given player's LP network.
|
commands.bloodmagic.network.syphon.help=Removes the given amount of LP from the given player's LP network.
|
||||||
commands.bloodmagic.network.syphon.success=Successfully syphoned %d LP from %s.
|
commands.bloodmagic.network.syphon.success=Successfully syphoned %d LP from %s.
|
||||||
|
commands.bloodmagic.network.syphon.usage=/bloodmagic network syphon [player] [amount]
|
||||||
|
commands.bloodmagic.network.syphon.amountTooHigh=Cannot syphon more LP than available.
|
||||||
commands.bloodmagic.network.add.help=Adds the given amount of LP to the given player's LP network. Follows standard LP gain rules.
|
commands.bloodmagic.network.add.help=Adds the given amount of LP to the given player's LP network. Follows standard LP gain rules.
|
||||||
|
commands.bloodmagic.network.add.usage=/bloodmagic network add [player] [amount]
|
||||||
commands.bloodmagic.network.add.success=Successfully added %d LP to %s's LP network.
|
commands.bloodmagic.network.add.success=Successfully added %d LP to %s's LP network.
|
||||||
commands.bloodmagic.network.set.help=Sets the given player's LP to the given amount.
|
commands.bloodmagic.network.set.help=Sets the given player's LP to the given amount.
|
||||||
|
commands.bloodmagic.network.set.usage=/bloodmagic network set [player] [amount]
|
||||||
commands.bloodmagic.network.set.success=Successfully set %s's LP network to %d LP.
|
commands.bloodmagic.network.set.success=Successfully set %s's LP network to %d LP.
|
||||||
commands.bloodmagic.network.get.help=Returns the amount of LP in the given player's LP network.
|
commands.bloodmagic.network.get.help=Returns the amount of LP in the given player's LP network.
|
||||||
|
commands.bloodmagic.network.get.usage=/bloodmagic network get [player]
|
||||||
commands.bloodmagic.network.fill.help=Fills the given player's LP network to %d.
|
commands.bloodmagic.network.fill.help=Fills the given player's LP network to %d.
|
||||||
|
commands.bloodmagic.network.fill.usage=/bloodmagic network fill [player]
|
||||||
commands.bloodmagic.network.fill.success=Successfully filled %s's LP network.
|
commands.bloodmagic.network.fill.success=Successfully filled %s's LP network.
|
||||||
commands.bloodmagic.network.cap.help=Fills the given player's LP network to the max that their highest Blood Orb can store.
|
commands.bloodmagic.network.cap.help=Fills the given player's LP network to the max that their highest Blood Orb can store.
|
||||||
|
commands.bloodmagic.network.cap.usage=/bloodmagic network cap [player]
|
||||||
commands.bloodmagic.network.cap.success=Successfully capped off %s's LP network.
|
commands.bloodmagic.network.cap.success=Successfully capped off %s's LP network.
|
||||||
|
|
||||||
commands.bloodmagic.bind.usage=/bloodmagic bind [true|false] [player]
|
|
||||||
|
commands.bloodmagic.bind.usage=/bloodmagic bind [true|false] [player] ("?" or "help" for help)
|
||||||
commands.bloodmagic.bind.help=Attempts to (un)bind the currently held item.
|
commands.bloodmagic.bind.help=Attempts to (un)bind the currently held item.
|
||||||
commands.bloodmagic.bind.success=Binding successful
|
commands.bloodmagic.bind.success=Successfully bound to %d.
|
||||||
commands.bloodmagic.bind.remove.success=Unbinding successful
|
commands.bloodmagic.bind.remove.success=Unbinding successful
|
||||||
|
commands.bloodmagic.bind.error.ownerEqualsTarget=Nothing changed: Target and current owner are equal.
|
||||||
|
commands.bloodmagic.bind.error.notBound=Cannot unbind: Item not bound.
|
||||||
|
commands.bloodmagic.bind.error.notBindable=Cannot bind: Item not bindable.
|
||||||
|
|
||||||
commands.bloodmagic.orb.usage=/bloodmagic orb [set|get] player [tier]
|
commands.bloodmagic.orb.usage=/bloodmagic orb [set|get] player [tier] ("?" or "help" for help)
|
||||||
commands.bloodmagic.orb.help=Used to set or get the Player's max Blood Orb tier.
|
commands.bloodmagic.orb.help=Used to set or get the Player's max Blood Orb tier.
|
||||||
|
commands.bloodmagic.orb.get.help=Used to get the Player's max Blood Orb tier.
|
||||||
|
commands.bloodmagic.orb.get.usage=/bloodmagic orb get [player|?|help]
|
||||||
|
commands.bloodmagic.orb.set.help=Used to set the Player's max Blood Orb tier.
|
||||||
|
commands.bloodmagic.orb.set.usage=/bloodmagic orb set [player|?|help]
|
||||||
|
commands.bloodmagic.orb.currenttier=Current Orb tier is %d.
|
||||||
|
commands.bloodmagic.orb.error.tierTooHigh=Orb tier cannot be higher than %d.
|
||||||
|
|
||||||
commands.bloodmagic.bind.failed.noPlayer=There is no player specified
|
commands.bloodmagic.ritual.create.help=Creates the specified ritual with the MRS at your feet, ignores other blocks by default. (Optional parameters: ([<player> (safe|true|false)] | [safe|true|false]))
|
||||||
commands.bloodmagic.bind.failed.alreadyBound=Item is already bound; use /unbind to unbind it
|
commands.bloodmagic.ritual.repair.help=Repairs the ritual with the closest match to the remaining ritual stones, ignores other blocks by default. (Optional parameters: ([<player> (safe|true|false)] | [safe|true|false]))
|
||||||
commands.bloodmagic.bind.failed.notBindable=Item cannot be bound
|
|
||||||
commands.bloodmagic.unbind.usage=/unbind
|
|
||||||
commands.bloodmagic.unbind.success=Item successfully unbound!
|
|
||||||
commands.bloodmagic.unbind.failed.notBindable=Item cannot be unbound
|
|
||||||
commands.bloodmagic.soulnetwork.usage=/soulnetwork <player> <add|subtract|fill|empty|get> [amount]
|
|
||||||
commands.bloodmagic.soulnetwork.add.success=Successfully added %dLP to %s's Soul Network!
|
|
||||||
commands.bloodmagic.soulnetwork.subtract.success=Successfully subtracted %dLP from %s's Soul Network!
|
|
||||||
commands.bloodmagic.soulnetwork.fill.success=Successfully filled %s's Soul Network!
|
|
||||||
commands.bloodmagic.soulnetwork.empty.success=Successfully emptied %s's Soul Network!
|
|
||||||
commands.bloodmagic.soulnetwork.get.success=There is %dLP in %s's Soul Network!
|
|
||||||
commands.bloodmagic.soulnetwork.noPlayer=There is no player specified
|
|
||||||
commands.bloodmagic.soulnetwork.noCommand=There is no command specified
|
|
||||||
commands.bloodmagic.soulnetwork.notACommand=That is not a valid command
|
|
||||||
commands.bloodmagic.soulnetwork.fillMax.success=Successfully filled %s's Soul Network to their orb max!
|
|
||||||
commands.bloodmagic.soulnetwork.create.success=Successfully created %s's Soul Network (Orb tier: %d)
|
|
||||||
|
|
||||||
|
commands.bloodmagic.ritual.create.noRitual=You must select a ritual. (Tab-completions are available!)
|
||||||
|
commands.bloodmagic.ritaul.create.error.unsafe=Created or repaired ritual cannot be placed safely.
|
||||||
|
commands.bloodmagic.ritual.create.error.outOfWorldBoundaries=Created or repaired ritual would be out of world boundaries.
|
||||||
|
commands.bloodmagic.ritual.error.noMRS=You need to stand on a Master Ritual Stone to execute the command!
|
||||||
|
|
||||||
|
commands.bloodmagic.teleposer.usage=Teleposer Utilities ("?" or "help" for help)
|
||||||
|
commands.bloodmagic.teleposer.list.help=Returns a list of all valid teleposers, optionally possessed by [player].
|
||||||
|
commands.bloodmagic.teleposer.list.usage=/bloodmagic teleposer list [player|?|help]
|
||||||
|
commands.bloodmagic.teleposer.teleport.help=Teleports to the location of the specified teleposer.
|
||||||
|
commands.bloodmagic.teleposer.teleport.usage=/bloodmagic teleposer teleport [ID|?|help]
|
||||||
|
commands.bloodmagic.teleposer.teleportfocus.help=Teleports to the location stored in the specified teleposer's focus.
|
||||||
|
commands.bloodmagic.teleposer.teleportfocus.usage=/bloodmagic teleposer teleportfocus [ID|?|help]
|
||||||
|
commands.bloodmagic.teleposer.rmrf.help=Follows teleposer foci and removes all teleposers along the path, starting with the specified teleposer.
|
||||||
|
commands.bloodmagic.teleposer.rmrf.usage=/bloodmagic teleposer rmrf [ID|?|help]
|
||||||
|
commands.bloodmagic.teleposer.remove.help=Removes the specified teleposer.
|
||||||
|
commands.bloodmagic.teleposer.remove.usage=/bloodmagic teleposer remove [ID|?|help]
|
||||||
|
commands.bloodmagic.teleposer.removeall.help=Removes all teleposers or all teleposers containing a focus bound to [player], if specified.
|
||||||
|
commands.bloodmagic.teleposer.removeall.usage=/bloodmagic teleposer removeall [player|?|help]
|
||||||
|
|
||||||
|
#Used by commands.bloodmagic.teleposer.list for the dump sent to the player
|
||||||
|
commands.bloodmagic.teleposer.anddimension=: Teleposer: DimID:
|
||||||
|
commands.bloodmagic.teleposer.focusanddim=Focus: DimID:
|
||||||
|
commands.bloodmagic.teleposer.owner=Owner:
|
||||||
|
|
||||||
|
|
||||||
# GUI
|
# GUI
|
||||||
|
|
Loading…
Reference in a new issue