Skip to content

Commit 95d89c5

Browse files
authored
Merge pull request #2291 from BentoBoxWorld/develop
Version 2.1.0
2 parents 196e90b + 4ddb204 commit 95d89c5

File tree

72 files changed

+1105
-633
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1105
-633
lines changed

pom.xml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<!-- Do not change unless you want different name for local builds. -->
8989
<build.number>-LOCAL</build.number>
9090
<!-- This allows to change between versions. -->
91-
<build.version>2.0.0</build.version>
91+
<build.version>2.1.0</build.version>
9292
<sonar.organization>bentobox-world</sonar.organization>
9393
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
9494
<server.jars>${project.basedir}/lib</server.jars>
@@ -224,6 +224,24 @@
224224
<version>${spigot.version}</version>
225225
<scope>provided</scope>
226226
</dependency>
227+
<dependency>
228+
<groupId>org.spigotmc.</groupId>
229+
<artifactId>spigot</artifactId>
230+
<version>1.20.3-R0.1-SNAPSHOT</version>
231+
<scope>provided</scope>
232+
</dependency>
233+
<dependency>
234+
<groupId>org.spigotmc..</groupId>
235+
<artifactId>spigot</artifactId>
236+
<version>1.20.2-R0.1-SNAPSHOT</version>
237+
<scope>provided</scope>
238+
</dependency>
239+
<dependency>
240+
<groupId>org.spigotmc...</groupId>
241+
<artifactId>spigot</artifactId>
242+
<version>1.20.1-R0.1-SNAPSHOT</version>
243+
<scope>provided</scope>
244+
</dependency>
227245
<!-- Paper API -->
228246
<dependency>
229247
<groupId>io.papermc.paper</groupId>

src/main/java/world/bentobox/bentobox/api/commands/admin/AdminRegisterCommand.java

Lines changed: 81 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.Objects;
56
import java.util.Optional;
67
import java.util.UUID;
78

89
import org.bukkit.Location;
910
import org.bukkit.Material;
11+
import org.eclipse.jdt.annotation.Nullable;
1012

1113
import world.bentobox.bentobox.api.commands.CompositeCommand;
1214
import world.bentobox.bentobox.api.commands.ConfirmableCommand;
@@ -19,6 +21,10 @@
1921

2022
public class AdminRegisterCommand extends ConfirmableCommand {
2123

24+
private Island island;
25+
private Location closestIsland;
26+
private @Nullable UUID targetUUID;
27+
2228
public AdminRegisterCommand(CompositeCommand parent) {
2329
super(parent, "register");
2430
}
@@ -32,104 +38,108 @@ public void setup() {
3238
}
3339

3440
@Override
35-
public boolean execute(User user, String label, List<String> args) {
41+
public boolean canExecute(User user, String label, List<String> args) {
3642
// If args are not right, show help
3743
if (args.size() != 1) {
3844
showHelp(this, user);
3945
return false;
4046
}
47+
// Check world
48+
if (!getWorld().equals(user.getWorld())) {
49+
user.sendMessage("general.errors.wrong-world");
50+
return false;
51+
}
4152
// Get target
42-
UUID targetUUID = Util.getUUID(args.get(0));
53+
targetUUID = Util.getUUID(args.get(0));
4354
if (targetUUID == null) {
4455
user.sendMessage("general.errors.unknown-player", TextVariables.NAME, args.get(0));
4556
return false;
4657
}
47-
if (getIslands().hasIsland(getWorld(), targetUUID)) {
48-
user.sendMessage("general.errors.player-has-island");
49-
return false;
50-
}
51-
if (getIslands().inTeam(getWorld(), targetUUID)) {
52-
user.sendMessage("commands.admin.register.cannot-register-team-player");
53-
return false;
54-
}
55-
5658
// Check if this spot is still being deleted
57-
Location closestIsland = Util.getClosestIsland(user.getLocation());
59+
closestIsland = Util.getClosestIsland(user.getLocation());
5860
if (getPlugin().getIslandDeletionManager().inDeletion(closestIsland)) {
5961
user.sendMessage("commands.admin.register.in-deletion");
6062
return false;
6163
}
6264
// Check if island is owned
63-
Optional<Island> island = getIslands().getIslandAt(user.getLocation());
64-
if (island.filter(Island::isOwned)
65-
.filter(i -> !i.getOwner().equals(targetUUID))
66-
.isPresent()) {
65+
Optional<Island> opIsland = getIslands().getIslandAt(user.getLocation());
66+
if (opIsland.isEmpty()) {
67+
// Reserve spot
68+
this.askConfirmation(user, user.getTranslation("commands.admin.register.no-island-here"),
69+
() -> reserve(user, args.get(0)));
70+
return false;
71+
}
72+
island = opIsland.get();
73+
if (targetUUID.equals(island.getOwner())) {
6774
user.sendMessage("commands.admin.register.already-owned");
6875
return false;
6976
}
7077
// Check if island is spawn
71-
if (island.map(Island::isSpawn).orElse(false)) {
72-
askConfirmation(user, user.getTranslation("commands.admin.register.island-is-spawn"), () -> register(user, args.get(0), targetUUID, island, closestIsland));
78+
if (island.isSpawn()) {
79+
askConfirmation(user, user.getTranslation("commands.admin.register.island-is-spawn"),
80+
() -> register(user, args.get(0)));
7381
return false;
7482
}
75-
return register(user, args.get(0),targetUUID, island, closestIsland);
83+
84+
return true;
7685
}
7786

78-
private boolean register(User user, String targetName, UUID targetUUID, Optional<Island> island, Location closestIsland) {
79-
// Register island if it exists
80-
if (!island.map(i -> {
81-
// Island exists
82-
getIslands().setOwner(user, targetUUID, i, RanksManager.VISITOR_RANK);
83-
if (i.isSpawn()) {
84-
getIslands().clearSpawn(i.getWorld());
85-
}
86-
user.sendMessage("commands.admin.register.registered-island", TextVariables.XYZ, Util.xyz(i.getCenter().toVector()),
87-
TextVariables.NAME, targetName);
88-
user.sendMessage("general.success");
89-
// Build and call event
90-
IslandEvent.builder()
91-
.island(i)
92-
.location(i.getCenter())
93-
.reason(IslandEvent.Reason.REGISTERED)
94-
.involvedPlayer(targetUUID)
95-
.admin(true)
96-
.build();
97-
IslandEvent.builder()
98-
.island(i)
99-
.involvedPlayer(targetUUID)
100-
.admin(true)
101-
.reason(IslandEvent.Reason.RANK_CHANGE)
102-
.rankChange(RanksManager.VISITOR_RANK, RanksManager.OWNER_RANK)
103-
.build();
104-
return true;
105-
}).orElse(false)) {
106-
// Island does not exist - this is a reservation
107-
this.askConfirmation(user, user.getTranslation("commands.admin.register.no-island-here"), () -> {
108-
// Make island here
109-
Island i = getIslands().createIsland(closestIsland, targetUUID);
110-
if (i == null) {
111-
user.sendMessage("commands.admin.register.cannot-make-island");
112-
return;
113-
}
114-
getIslands().setOwner(user, targetUUID, i, RanksManager.VISITOR_RANK);
115-
i.setReserved(true);
116-
i.getCenter().getBlock().setType(Material.BEDROCK);
117-
user.sendMessage("commands.admin.register.reserved-island", TextVariables.XYZ, Util.xyz(i.getCenter().toVector()),
118-
TextVariables.NAME, targetName);
119-
// Build and fire event
120-
IslandEvent.builder()
121-
.island(i)
122-
.location(i.getCenter())
123-
.reason(IslandEvent.Reason.RESERVED)
124-
.involvedPlayer(targetUUID)
125-
.admin(true)
126-
.build();
127-
});
128-
return false;
129-
}
87+
@Override
88+
public boolean execute(User user, String label, List<String> args) {
89+
register(user, args.get(0));
13090
return true;
13191
}
13292

93+
/**
94+
* Reserve a spot for a target
95+
* @param user user doing the reserving
96+
* @param targetName target name
97+
*/
98+
void reserve(User user, String targetName) {
99+
Objects.requireNonNull(closestIsland);
100+
Objects.requireNonNull(targetUUID);
101+
// Island does not exist - this is a reservation
102+
// Make island here
103+
Island i = getIslands().createIsland(closestIsland, targetUUID);
104+
if (i == null) {
105+
user.sendMessage("commands.admin.register.cannot-make-island");
106+
return;
107+
}
108+
getIslands().setOwner(user, targetUUID, i, RanksManager.VISITOR_RANK);
109+
i.setReserved(true);
110+
i.getCenter().getBlock().setType(Material.BEDROCK);
111+
user.sendMessage("commands.admin.register.reserved-island", TextVariables.XYZ,
112+
Util.xyz(i.getCenter().toVector()), TextVariables.NAME, targetName);
113+
// Build and fire event
114+
IslandEvent.builder().island(i).location(i.getCenter()).reason(IslandEvent.Reason.RESERVED)
115+
.involvedPlayer(targetUUID).admin(true).build();
116+
}
117+
118+
/**
119+
* Register the island to a target
120+
* @param user user doing the registering
121+
* @param targetName name of target
122+
*/
123+
void register(User user, String targetName) {
124+
Objects.requireNonNull(closestIsland);
125+
Objects.requireNonNull(targetUUID);
126+
Objects.requireNonNull(island);
127+
// Island exists
128+
getIslands().setOwner(user, targetUUID, island, RanksManager.VISITOR_RANK);
129+
if (island.isSpawn()) {
130+
getIslands().clearSpawn(island.getWorld());
131+
}
132+
user.sendMessage("commands.admin.register.registered-island", TextVariables.XYZ,
133+
Util.xyz(island.getCenter().toVector()), TextVariables.NAME, targetName);
134+
user.sendMessage("general.success");
135+
// Build and call event
136+
IslandEvent.builder().island(island).location(island.getCenter()).reason(IslandEvent.Reason.REGISTERED)
137+
.involvedPlayer(targetUUID).admin(true).build();
138+
IslandEvent.builder().island(island).involvedPlayer(targetUUID).admin(true)
139+
.reason(IslandEvent.Reason.RANK_CHANGE).rankChange(RanksManager.VISITOR_RANK, RanksManager.OWNER_RANK)
140+
.build();
141+
}
142+
133143
@Override
134144
public Optional<List<String>> tabComplete(User user, String alias, List<String> args) {
135145
String lastArg = !args.isEmpty() ? args.get(args.size()-1) : "";

src/main/java/world/bentobox/bentobox/api/commands/admin/AdminSetspawnCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ private void setSpawn(User user, Island i) {
6565
.build();
6666
}
6767
// If island is owned, then unregister the owner and any members
68-
new ImmutableSet.Builder<UUID>().addAll(i.getMembers().keySet()).build().forEach(m ->
69-
getIslands().removePlayer(getWorld(), m));
68+
new ImmutableSet.Builder<UUID>().addAll(i.getMembers().keySet()).build()
69+
.forEach(m -> getIslands().removePlayer(i, m));
7070
}
7171
getIslands().setSpawn(i);
7272
i.setSpawnPoint(World.Environment.NORMAL, user.getLocation());

0 commit comments

Comments
 (0)