Skip to content

Commit fed74e6

Browse files
committed
Initial command implementation
1 parent aa2b20c commit fed74e6

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

src/main/java/org/kitteh/vanish/Vanish.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,26 @@
2323
*/
2424
package org.kitteh.vanish;
2525

26+
import com.google.inject.Inject;
27+
import org.spongepowered.api.Game;
28+
import org.spongepowered.api.command.spec.CommandSpec;
29+
import org.spongepowered.api.event.Listener;
30+
import org.spongepowered.api.event.game.state.GameInitializationEvent;
2631
import org.spongepowered.api.plugin.Plugin;
2732

2833
/**
2934
* Spiritual successor to VanishNoPacket, for Sponge.
3035
*/
3136
@Plugin(id = "Vanish", name = "Vanish", version = "4.0.0-SNAPSHOT")
3237
public class Vanish {
33-
// TODO: Write plugin.
38+
public static final String PERMISSION_VANISH = "vanish.vanish";
39+
40+
@Inject
41+
private Game game;
42+
43+
@Listener
44+
public void onGameInit(GameInitializationEvent event) {
45+
CommandSpec vanishCommandSpec = CommandSpec.builder().permission(PERMISSION_VANISH).executor(new VanishCommand()).build();
46+
this.game.getCommandManager().register(this, vanishCommandSpec, "vanish", "v");
47+
}
3448
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* * Copyright (C) 2016 Matt Baxter http://kitteh.org
3+
*
4+
* Permission is hereby granted, free of charge, to any person
5+
* obtaining a copy of this software and associated documentation
6+
* files (the "Software"), to deal in the Software without
7+
* restriction, including without limitation the rights to use, copy,
8+
* modify, merge, publish, distribute, sublicense, and/or sell copies
9+
* of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be
13+
* included in all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
package org.kitteh.vanish;
25+
26+
import org.spongepowered.api.command.CommandException;
27+
import org.spongepowered.api.command.CommandResult;
28+
import org.spongepowered.api.command.CommandSource;
29+
import org.spongepowered.api.command.args.CommandContext;
30+
import org.spongepowered.api.command.spec.CommandExecutor;
31+
import org.spongepowered.api.data.key.Keys;
32+
import org.spongepowered.api.entity.living.player.Player;
33+
import org.spongepowered.api.text.Text;
34+
import org.spongepowered.api.text.format.TextColors;
35+
36+
import javax.annotation.Nonnull;
37+
38+
/**
39+
* Vanish!
40+
*/
41+
class VanishCommand implements CommandExecutor {
42+
@Nonnull
43+
@Override
44+
public CommandResult execute(@Nonnull CommandSource commandSource, @Nonnull CommandContext commandContext) throws CommandException {
45+
if (!(commandSource instanceof Player)) {
46+
commandSource.sendMessage(Text.of(TextColors.RED, "Vanish currently can only be used by players"));
47+
return CommandResult.empty();
48+
}
49+
Player player = (Player) commandSource;
50+
boolean wasVisible = player.get(Keys.INVISIBLE).orElse(false);
51+
player.offer(Keys.INVISIBLE, !wasVisible);
52+
player.sendMessage(Text.of(TextColors.AQUA, "You are now " + (wasVisible ? "" : "in") + "visible"));
53+
return CommandResult.success();
54+
}
55+
}

0 commit comments

Comments
 (0)