Skip to content

Commit 5b409cb

Browse files
committed
Add a permissions manager GUI
1 parent 19ae918 commit 5b409cb

17 files changed

+1326
-158
lines changed

build.gradle

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ apply plugin: 'eclipse'
1818
sourceCompatibility = "1.8"
1919
targetCompatibility = "1.8"
2020

21-
version = "0.1.0"
21+
version = "0.3.0"
2222

2323
group = "com.simon816.chatui"
2424

@@ -41,20 +41,20 @@ compileJava.options.encoding = 'UTF-8'
4141
compileJava.options.compilerArgs += '-proc:none'
4242

4343
minecraft {
44-
version = "1890"
44+
version = "2098"
4545
runDir = "run"
46-
mappings = "stable_22"
46+
mappings = "stable_26"
4747
}
4848

4949
dependencies {
50-
compile 'org.spongepowered:spongeapi:4.1.0'
51-
compile 'net.sf.trove4j:trove4j:3.0.3' // From spongecommon
52-
compile 'org.spongepowered:spongeforge:1.8.9-1890-4.1.0-BETA-1399:dev'
50+
compile 'org.spongepowered:spongeapi:5.0.0'
51+
compile 'net.sf.trove4j:trove4j:3.0.3' // From spongeforge
52+
compile 'org.spongepowered:spongeforge:1.10.2-2098-5.0.0-BETA-1808:dev'
5353
}
5454

5555
processResources {
5656
from('src/main/resources') {
5757
include 'mcmod.info'
58-
expand(version: project.version, apiVersionRange: '[4.0.0,5.0.0]')
58+
expand(version: project.version, apiVersionRange: '[5.0.0,6.0.0)')
5959
}
6060
}

src/main/java/com/simon816/chatui/ActivePlayerChatView.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@
44
import com.simon816.chatui.impl.ImplementationConfig;
55
import com.simon816.chatui.tabs.GlobalTab;
66
import com.simon816.chatui.tabs.NewTab;
7-
import com.simon816.chatui.tabs.PermissionsTab;
87
import com.simon816.chatui.tabs.SceneTab;
98
import com.simon816.chatui.tabs.Tab;
109
import com.simon816.chatui.tabs.TextBufferTab;
1110
import com.simon816.chatui.tabs.TextFileTab;
1211
import com.simon816.chatui.tabs.config.ConfigEditTab;
12+
import com.simon816.chatui.tabs.perm.PermissionsTab;
1313
import ninja.leaping.configurate.ConfigurationNode;
14+
import org.spongepowered.api.Sponge;
1415
import org.spongepowered.api.command.CommandSource;
1516
import org.spongepowered.api.entity.living.player.Player;
17+
import org.spongepowered.api.service.permission.PermissionService;
1618
import org.spongepowered.api.text.Text;
1719
import org.spongepowered.api.text.chat.ChatType;
1820

@@ -78,12 +80,15 @@ private void showNewTabAdminButtons() {
7880
this.newTab.addButton("Edit Config", new NewTab.LaunchTabAction(() -> new ConfigEditTab(ImplementationConfig.getRootNode(),
7981
Text.of("Sponge Config"), ConfigEditTab.Options.DEFAULTS, ImplementationConfig.getHandler())));
8082
}
81-
this.newTab.addButton("Permissions", new NewTab.LaunchTabAction(() -> new PermissionsTab()));
83+
Optional<PermissionService> optService = Sponge.getServiceManager().provide(PermissionService.class);
84+
if (optService.isPresent()) {
85+
this.newTab.addButton("Permissions", new NewTab.LaunchTabAction(() -> new PermissionsTab(optService.get())));
86+
}
8287
}
8388

8489
@Override
8590
public Player getPlayer() {
86-
return this.playerContext.player;
91+
return this.playerContext.getPlayer();
8792
}
8893

8994
public PlayerContext getContext() {
@@ -103,7 +108,7 @@ public NewTab getNewTab() {
103108
@Override
104109
public void update() {
105110
this.isUpdating = true;
106-
this.playerContext.player.sendMessage(this.window.draw(this.playerContext));
111+
this.playerContext.getPlayer().sendMessage(this.window.draw(this.playerContext));
107112
this.isUpdating = false;
108113
}
109114

@@ -166,7 +171,7 @@ private void disable() {
166171
// Force clear the screen
167172
this.isUpdating = true;
168173
for (int i = 0; i < this.playerContext.height; i++) {
169-
this.playerContext.player.sendMessage(Text.NEW_LINE);
174+
this.playerContext.getPlayer().sendMessage(Text.NEW_LINE);
170175
}
171176
this.isUpdating = false;
172177
ChatUI.instance().initialize(getPlayer());

src/main/java/com/simon816/chatui/PlayerContext.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,53 @@
33
import static com.google.common.base.Preconditions.checkArgument;
44

55
import com.google.common.base.Objects;
6+
import org.spongepowered.api.Sponge;
67
import org.spongepowered.api.entity.living.player.Player;
78

89
import java.util.Locale;
10+
import java.util.UUID;
911

1012
public class PlayerContext {
1113

12-
public final Player player;
1314
public final int height;
1415
public final int width;
1516
public final boolean forceUnicode;
1617

18+
private final UUID playerUUID;
19+
1720
public PlayerContext(Player player, int width, int height, boolean forceUnicode) {
18-
this.player = player;
21+
this.playerUUID = player.getUniqueId();
1922
this.width = width;
2023
this.height = height;
2124
this.forceUnicode = forceUnicode;
2225
}
2326

27+
public Player getPlayer() {
28+
return Sponge.getServer().getPlayer(this.playerUUID).get();
29+
}
30+
2431
public PlayerContext withHeight(int height) {
2532
checkArgument(height >= 1, "Height must be at least one");
26-
return new PlayerContext(this.player, this.width, height, this.forceUnicode);
33+
return new PlayerContext(this.getPlayer(), this.width, height, this.forceUnicode);
2734
}
2835

2936
public PlayerContext withWidth(int width) {
3037
checkArgument(width >= 1, "Width must be at least one");
31-
return new PlayerContext(this.player, width, this.height, this.forceUnicode);
38+
return new PlayerContext(this.getPlayer(), width, this.height, this.forceUnicode);
3239
}
3340

3441
public PlayerContext withUnicode(boolean forceUnicode) {
35-
return new PlayerContext(this.player, this.width, this.height, forceUnicode);
42+
return new PlayerContext(this.getPlayer(), this.width, this.height, forceUnicode);
3643
}
3744

3845
public Locale getLocale() {
39-
return this.player.getLocale();
46+
return this.getPlayer().getLocale();
4047
}
4148

4249
@Override
4350
public String toString() {
4451
return Objects.toStringHelper(this)
45-
.add("player", this.player)
52+
.add("player", this.getPlayer())
4653
.add("width", this.width)
4754
.add("height", this.height)
4855
.toString();

src/main/java/com/simon816/chatui/pagination/PaginationSourceWrapper.java

Lines changed: 3 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,18 @@
22

33
import com.simon816.chatui.PlayerChatView;
44
import com.simon816.chatui.tabs.PaginationTab;
5+
import com.simon816.chatui.util.ForwardingSource;
56
import org.spongepowered.api.command.CommandSource;
6-
import org.spongepowered.api.command.source.ProxySource;
7-
import org.spongepowered.api.service.context.Context;
8-
import org.spongepowered.api.service.permission.Subject;
9-
import org.spongepowered.api.service.permission.SubjectCollection;
10-
import org.spongepowered.api.service.permission.SubjectData;
117
import org.spongepowered.api.text.Text;
12-
import org.spongepowered.api.text.channel.MessageChannel;
13-
import org.spongepowered.api.util.Tristate;
148

15-
import java.util.List;
16-
import java.util.Optional;
17-
import java.util.Set;
18-
19-
public class PaginationSourceWrapper implements ProxySource {
9+
public class PaginationSourceWrapper extends ForwardingSource {
2010

2111
public final PlayerChatView view;
22-
private final CommandSource actualSource;
2312
private final PaginationTab tab;
2413

2514
public PaginationSourceWrapper(PlayerChatView view, CommandSource actualSource, Text title) {
15+
super(actualSource);
2616
this.view = view;
27-
this.actualSource = actualSource;
2817
this.tab = new PaginationTab(this, title == null ? Text.of("Pagination") : title);
2918
view.getWindow().addTab(this.tab, true);
3019
view.update();
@@ -45,94 +34,4 @@ public void sendMessages(Text... messages) {
4534
this.tab.setPage(messages);
4635
}
4736

48-
@Override
49-
public String getName() {
50-
return this.actualSource.getName();
51-
}
52-
53-
@Override
54-
public MessageChannel getMessageChannel() {
55-
return this.actualSource.getMessageChannel();
56-
}
57-
58-
@Override
59-
public void setMessageChannel(MessageChannel channel) {
60-
this.actualSource.setMessageChannel(channel);
61-
}
62-
63-
@Override
64-
public Optional<CommandSource> getCommandSource() {
65-
return this.actualSource.getCommandSource();
66-
}
67-
68-
@Override
69-
public SubjectCollection getContainingCollection() {
70-
return this.actualSource.getContainingCollection();
71-
}
72-
73-
@Override
74-
public SubjectData getSubjectData() {
75-
return this.actualSource.getSubjectData();
76-
}
77-
78-
@Override
79-
public SubjectData getTransientSubjectData() {
80-
return this.actualSource.getTransientSubjectData();
81-
}
82-
83-
@Override
84-
public boolean hasPermission(Set<Context> contexts, String permission) {
85-
return this.actualSource.hasPermission(contexts, permission);
86-
}
87-
88-
@Override
89-
public boolean hasPermission(String permission) {
90-
return this.actualSource.hasPermission(permission);
91-
}
92-
93-
@Override
94-
public Tristate getPermissionValue(Set<Context> contexts, String permission) {
95-
return this.actualSource.getPermissionValue(contexts, permission);
96-
}
97-
98-
@Override
99-
public boolean isChildOf(Subject parent) {
100-
return this.actualSource.isChildOf(parent);
101-
}
102-
103-
@Override
104-
public boolean isChildOf(Set<Context> contexts, Subject parent) {
105-
return this.actualSource.isChildOf(contexts, parent);
106-
}
107-
108-
@Override
109-
public List<Subject> getParents() {
110-
return this.actualSource.getParents();
111-
}
112-
113-
@Override
114-
public List<Subject> getParents(Set<Context> contexts) {
115-
return this.actualSource.getParents(contexts);
116-
}
117-
118-
@Override
119-
public Optional<String> getOption(Set<Context> contexts, String key) {
120-
return this.actualSource.getOption(contexts, key);
121-
}
122-
123-
@Override
124-
public String getIdentifier() {
125-
return this.actualSource.getIdentifier();
126-
}
127-
128-
@Override
129-
public Set<Context> getActiveContexts() {
130-
return this.actualSource.getActiveContexts();
131-
}
132-
133-
@Override
134-
public CommandSource getOriginalSource() {
135-
return this.actualSource;
136-
}
137-
13837
}

src/main/java/com/simon816/chatui/tabs/NewTab.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.simon816.chatui.PlayerChatView;
77
import com.simon816.chatui.PlayerContext;
88
import com.simon816.chatui.ui.Button;
9-
import com.simon816.chatui.ui.HboxUI;
9+
import com.simon816.chatui.ui.HBoxUI;
1010
import com.simon816.chatui.ui.VBoxUI;
1111
import org.spongepowered.api.text.Text;
1212

@@ -42,7 +42,7 @@ public Text draw(PlayerContext ctx) {
4242
while (maxButtonRows < Math.ceil(this.buttons.size() / (float) columns)) {
4343
columns++;
4444
}
45-
HboxUI colBox = new HboxUI();
45+
HBoxUI colBox = new HBoxUI();
4646
int index = 0;
4747
for (int i = 0; i < columns; i++) {
4848
VBoxUI rowBox = new VBoxUI();

src/main/java/com/simon816/chatui/tabs/PermissionsTab.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)