Skip to content

Commit 2dd736a

Browse files
authored
Merge pull request #2564 from BentoBoxWorld/develop
Release 3.0.1
2 parents d29eb88 + 55daa72 commit 2dd736a

File tree

66 files changed

+1492
-619
lines changed

Some content is hidden

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

66 files changed

+1492
-619
lines changed

pom.xml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,9 @@
5050
</issueManagement>
5151

5252
<distributionManagement>
53-
<snapshotRepository>
54-
<id>codemc-snapshots</id>
55-
<url>https://repo.codemc.org/repository/maven-snapshots</url>
56-
</snapshotRepository>
5753
<repository>
58-
<id>codemc-releases</id>
59-
<url>https://repo.codemc.org/repository/maven-releases</url>
54+
<id>bentoboxworld</id>
55+
<url>https://repo.codemc.org/repository/bentoboxworld/</url>
6056
</repository>
6157
</distributionManagement>
6258

@@ -88,7 +84,7 @@
8884
<!-- Do not change unless you want different name for local builds. -->
8985
<build.number>-LOCAL</build.number>
9086
<!-- This allows to change between versions. -->
91-
<build.version>2.7.0</build.version>
87+
<build.version>3.0.1</build.version>
9288
<sonar.organization>bentobox-world</sonar.organization>
9389
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
9490
<server.jars>${project.basedir}/lib</server.jars>

src/main/java/world/bentobox/bentobox/BentoBox.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package world.bentobox.bentobox;
22

3+
import java.nio.file.Files;
4+
import java.nio.file.Path;
35
import java.util.List;
46
import java.util.Optional;
57

@@ -464,6 +466,32 @@ public boolean loadSettings() {
464466
getPluginLoader().disablePlugin(this);
465467
return false;
466468
}
469+
log("Saving default panels...");
470+
471+
if (!Files.exists(Path.of(this.getDataFolder().getPath(), "panels", "island_creation_panel.yml"))) {
472+
log("Saving default island_creation_panel...");
473+
this.saveResource("panels/island_creation_panel.yml", false);
474+
}
475+
476+
if (!Files.exists(Path.of(this.getDataFolder().getPath(), "panels", "language_panel.yml"))) {
477+
log("Saving default language_panel...");
478+
this.saveResource("panels/language_panel.yml", false);
479+
}
480+
481+
if (!Files.exists(Path.of(this.getDataFolder().getPath(), "panels", "island_homes_panel.yml"))) {
482+
log("Saving default island_homes_panel...");
483+
this.saveResource("panels/island_homes_panel.yml", false);
484+
}
485+
486+
if (!Files.exists(Path.of(this.getDataFolder().getPath(), "panels", "team_invite_panel.yml"))) {
487+
log("Saving default team_invite_panel...");
488+
this.saveResource("panels/team_invite_panel.yml", false);
489+
}
490+
491+
if (!Files.exists(Path.of(this.getDataFolder().getPath(), "panels", "team_panel.yml"))) {
492+
log("Saving default team_panel...");
493+
this.saveResource("panels/team_panel.yml", false);
494+
}
467495

468496
return true;
469497
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import world.bentobox.bentobox.api.events.island.IslandEvent;
1616
import world.bentobox.bentobox.api.localization.TextVariables;
1717
import world.bentobox.bentobox.api.logs.LogEntry;
18+
import world.bentobox.bentobox.api.logs.LogEntry.LogType;
1819
import world.bentobox.bentobox.api.user.User;
1920
import world.bentobox.bentobox.database.objects.Island;
2021
import world.bentobox.bentobox.managers.RanksManager;
@@ -115,10 +116,10 @@ void unregisterIsland(User user) {
115116
// Remove all island players that reference this island
116117
targetIsland.getMembers().clear();
117118
if (user.isPlayer()) {
118-
targetIsland.log(new LogEntry.Builder("UNREGISTER").data("player", targetUUID.toString())
119+
targetIsland.log(new LogEntry.Builder(LogType.UNREGISTER).data("player", targetUUID.toString())
119120
.data("admin", user.getUniqueId().toString()).build());
120121
} else {
121-
targetIsland.log(new LogEntry.Builder("UNREGISTER").data("player", targetUUID.toString())
122+
targetIsland.log(new LogEntry.Builder(LogType.UNREGISTER).data("player", targetUUID.toString())
122123
.data("admin", "console").build());
123124
}
124125
user.sendMessage("commands.admin.unregister.unregistered-island", TextVariables.XYZ, Util.xyz(targetIsland.getCenter().toVector()),

src/main/java/world/bentobox/bentobox/api/commands/admin/team/AdminTeamKickCommand.java

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import world.bentobox.bentobox.api.user.User;
1414
import world.bentobox.bentobox.database.objects.Island;
1515
import world.bentobox.bentobox.managers.RanksManager;
16-
import world.bentobox.bentobox.util.IslandInfo;
1716
import world.bentobox.bentobox.util.Util;
1817

1918
/**
@@ -59,35 +58,28 @@ public boolean canExecute(User user, String label, List<String> args) {
5958

6059
@Override
6160
public boolean execute(User user, String label, @NonNull List<String> args) {
62-
Island island = getIslands().getIsland(getWorld(), targetUUID);
63-
if (island == null) {
61+
List<Island> islands = getIslands().getIslands(getWorld(), targetUUID);
62+
if (islands.isEmpty()) {
6463
return false;
6564
}
66-
if (targetUUID.equals(island.getOwner())) {
67-
user.sendMessage("commands.admin.team.kick.cannot-kick-owner");
68-
new IslandInfo(island).showMembers(user);
69-
return false;
70-
}
71-
User target = User.getInstance(targetUUID);
72-
target.sendMessage("commands.admin.team.kick.admin-kicked");
65+
islands.forEach(island -> {
66+
if (!user.getUniqueId().equals(island.getOwner())) {
67+
User target = User.getInstance(targetUUID);
68+
target.sendMessage("commands.admin.team.kick.admin-kicked");
7369

74-
getIslands().removePlayer(island, targetUUID);
75-
user.sendMessage("commands.admin.team.kick.success", TextVariables.NAME, target.getName(), "[owner]", getPlayers().getName(island.getOwner()));
70+
getIslands().removePlayer(island, targetUUID);
71+
user.sendMessage("commands.admin.team.kick.success", TextVariables.NAME, target.getName(), "[owner]",
72+
getPlayers().getName(island.getOwner()));
73+
// Fire event so add-ons know
74+
TeamEvent.builder().island(island).reason(TeamEvent.Reason.KICK).involvedPlayer(targetUUID).admin(true)
75+
.build();
76+
IslandEvent.builder().island(island).involvedPlayer(targetUUID).admin(true)
77+
.reason(IslandEvent.Reason.RANK_CHANGE)
78+
.rankChange(island.getRank(target), RanksManager.VISITOR_RANK).build();
79+
}
80+
});
81+
user.sendMessage("commands.admin.team.kick.success-all");
7682

77-
// Fire event so add-ons know
78-
TeamEvent.builder()
79-
.island(island)
80-
.reason(TeamEvent.Reason.KICK)
81-
.involvedPlayer(targetUUID)
82-
.admin(true)
83-
.build();
84-
IslandEvent.builder()
85-
.island(island)
86-
.involvedPlayer(targetUUID)
87-
.admin(true)
88-
.reason(IslandEvent.Reason.RANK_CHANGE)
89-
.rankChange(island.getRank(target), RanksManager.VISITOR_RANK)
90-
.build();
9183
return true;
9284
}
9385
}

src/main/java/world/bentobox/bentobox/api/commands/island/IslandSethomeCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public boolean canExecute(User user, String label, List<String> args) {
5454
// Check number of homes
5555

5656
int maxHomes = getIslands().getMaxHomes(island);
57-
if (getIslands().getNumberOfHomesIfAdded(island, String.join(" ", args)) > maxHomes) {
57+
// The + 1 is for the default home
58+
if (getIslands().getNumberOfHomesIfAdded(island, String.join(" ", args)) > maxHomes + 1) {
5859
user.sendMessage("commands.island.sethome.too-many-homes", TextVariables.NUMBER, String.valueOf(maxHomes));
5960
user.sendMessage("commands.island.sethome.homes-are");
6061
getIslands().getIslands(getWorld(), user).forEach(is ->

src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import world.bentobox.bentobox.api.events.island.IslandEvent;
1010
import world.bentobox.bentobox.api.events.team.TeamEvent;
1111
import world.bentobox.bentobox.api.localization.TextVariables;
12+
import world.bentobox.bentobox.api.logs.LogEntry;
13+
import world.bentobox.bentobox.api.logs.LogEntry.LogType;
1214
import world.bentobox.bentobox.api.user.User;
1315
import world.bentobox.bentobox.database.objects.Island;
1416
import world.bentobox.bentobox.database.objects.TeamInvite;
@@ -120,6 +122,9 @@ void acceptTrustInvite(User user, TeamInvite invite) {
120122
user.sendMessage("commands.island.team.trust.you-are-trusted", TextVariables.NAME, inviter.getName(),
121123
TextVariables.DISPLAY_NAME, inviter.getDisplayName());
122124
}
125+
// Add historu record
126+
island.log(new LogEntry.Builder(LogType.TRUSTED).data(user.getUniqueId().toString(), "trusted")
127+
.data(invite.getInviter().toString(), "trusted by").build());
123128
}
124129
}
125130

src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommand.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import world.bentobox.bentobox.api.events.island.IslandEvent;
1313
import world.bentobox.bentobox.api.events.team.TeamEvent;
1414
import world.bentobox.bentobox.api.localization.TextVariables;
15+
import world.bentobox.bentobox.api.logs.LogEntry;
16+
import world.bentobox.bentobox.api.logs.LogEntry.LogType;
1517
import world.bentobox.bentobox.api.user.User;
1618
import world.bentobox.bentobox.database.objects.Island;
1719
import world.bentobox.bentobox.managers.RanksManager;
@@ -91,6 +93,9 @@ protected boolean setOwner(User user, @NonNull UUID targetUUID2) {
9193
IslandEvent.builder().island(island).involvedPlayer(user.getUniqueId()).admin(false)
9294
.reason(IslandEvent.Reason.RANK_CHANGE).rankChange(RanksManager.OWNER_RANK, RanksManager.SUB_OWNER_RANK)
9395
.build();
96+
// Add historu record
97+
island.log(new LogEntry.Builder(LogType.NEWOWNER).data(targetUUID2.toString(), "new owner")
98+
.data(user.getUniqueId().toString(), "old owner").build());
9499
return true;
95100
}
96101

src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamTrustCommand.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import world.bentobox.bentobox.api.commands.CompositeCommand;
1111
import world.bentobox.bentobox.api.localization.TextVariables;
12+
import world.bentobox.bentobox.api.logs.LogEntry;
13+
import world.bentobox.bentobox.api.logs.LogEntry.LogType;
1214
import world.bentobox.bentobox.api.user.User;
1315
import world.bentobox.bentobox.database.objects.Island;
1416
import world.bentobox.bentobox.database.objects.TeamInvite.Type;
@@ -110,6 +112,10 @@ public boolean execute(User user, String label, List<String> args) {
110112
island.setRank(target, RanksManager.TRUSTED_RANK);
111113
user.sendMessage("commands.island.team.trust.success", TextVariables.NAME, target.getName(), TextVariables.DISPLAY_NAME, target.getDisplayName());
112114
target.sendMessage("commands.island.team.trust.you-are-trusted", TextVariables.NAME, user.getName(), TextVariables.DISPLAY_NAME, user.getDisplayName());
115+
// Add historu record
116+
island.log(new LogEntry.Builder(LogType.TRUSTED).data(targetUUID.toString(), "trusted")
117+
.data(user.getUniqueId().toString(), "trusted by").build());
118+
113119
}
114120
return true;
115121
} else {

src/main/java/world/bentobox/bentobox/api/configuration/Config.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.List;
77
import java.util.logging.Logger;
88

9-
import org.apache.commons.lang.exception.ExceptionUtils;
109
import org.eclipse.jdt.annotation.Nullable;
1110

1211
import world.bentobox.bentobox.BentoBox;
@@ -64,9 +63,9 @@ public T loadConfigObject(String uniqueId) {
6463
return handler.loadObject(uniqueId);
6564
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
6665
| ClassNotFoundException | IntrospectionException | NoSuchMethodException | SecurityException e) {
67-
logger.severe(() -> "Could not load config object! " + e.getMessage());
66+
BentoBox.getInstance().logError("Could not load config object! " + e.getMessage());
6867
// Required for debugging
69-
logger.severe(ExceptionUtils.getStackTrace(e));
68+
e.printStackTrace();
7069
}
7170

7271
return null;

src/main/java/world/bentobox/bentobox/api/logs/LogEntry.java

Lines changed: 100 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package world.bentobox.bentobox.api.logs;
22

33
import java.util.LinkedHashMap;
4-
import java.util.Locale;
54
import java.util.Map;
65

76
import org.eclipse.jdt.annotation.NonNull;
@@ -15,28 +14,110 @@
1514
* An {@link world.bentobox.bentobox.database.objects.adapters.AdapterInterface AdapterInterface} is provided to be able to save/retrieve
1615
* a list of instances of this object to/from the database: {@link world.bentobox.bentobox.database.objects.adapters.LogEntryListAdapter LogEntryListAdapter}.
1716
*
18-
* @author Poslovitch
17+
* @author Poslovitch, tastybento
18+
*
1919
*/
2020
public class LogEntry {
2121
@Expose
2222
private final long timestamp;
2323
@Expose
24-
private final String type;
24+
private final LogType type;
25+
@Expose
26+
private final String customType;
2527
@Expose
2628
private final Map<String, String> data;
2729

30+
/**
31+
* This is a log enum. If you are a developer and need more make a PR. Or use the string one.
32+
*/
33+
public enum LogType {
34+
/**
35+
* Something removed
36+
*/
37+
REMOVE,
38+
/**
39+
* Something added
40+
*/
41+
ADD,
42+
/**
43+
* Island unregistered
44+
*/
45+
UNREGISTER,
46+
/**
47+
* Player banned
48+
*/
49+
BAN,
50+
/**
51+
* Something was completed
52+
*/
53+
COMPELTE,
54+
/**
55+
* Island became unowned
56+
*/
57+
UNOWNED,
58+
/**
59+
* Island became spawn
60+
*/
61+
SPAWN,
62+
/**
63+
* Player unbanned
64+
*/
65+
UNBAN,
66+
/**
67+
* Player joined
68+
*/
69+
JOINED,
70+
/**
71+
* New owner made
72+
*/
73+
NEWOWNER,
74+
/**
75+
* Player trusted
76+
*/
77+
TRUSTED,
78+
/**
79+
* Player cooped
80+
*/
81+
COOP,
82+
/**
83+
* Unknown reason
84+
*/
85+
UNKNOWN,
86+
/**
87+
* Island reset or a reset of some kind
88+
*/
89+
RESET,
90+
/**
91+
* Everything was reset
92+
*/
93+
RESET_ALL,
94+
/**
95+
* New thing
96+
*/
97+
NEW,
98+
/**
99+
* Something duplicated
100+
*/
101+
DUPLICATE,
102+
/**
103+
* General info
104+
*/
105+
INFO,
106+
}
107+
28108
private LogEntry(@NonNull Builder builder) {
29109
this.timestamp = builder.timestamp;
30110
this.type = builder.type;
31111
this.data = builder.data;
112+
this.customType = builder.customType;
32113
}
33114

34115
public long getTimestamp() {
35116
return timestamp;
36117
}
37118

38119
@NonNull
39-
public String getType() {
120+
public LogType getType() {
40121
return type;
41122
}
42123

@@ -47,13 +128,25 @@ public Map<String, String> getData() {
47128

48129
public static class Builder {
49130
private long timestamp;
50-
private final String type;
131+
private final LogType type;
51132
private Map<String, String> data;
133+
private final String customType;
52134

53-
public Builder(@NonNull String type) {
135+
public Builder(LogType type) {
136+
this.timestamp = System.currentTimeMillis();
137+
this.type = type;
138+
this.data = new LinkedHashMap<>();
139+
this.customType = null;
140+
}
141+
142+
/**
143+
* @param customType log type
144+
*/
145+
public Builder(String customType) {
54146
this.timestamp = System.currentTimeMillis();
55-
this.type = type.toUpperCase(Locale.ENGLISH);
147+
this.type = LogType.UNKNOWN;
56148
this.data = new LinkedHashMap<>();
149+
this.customType = customType;
57150
}
58151

59152
public Builder timestamp(long timestamp) {

0 commit comments

Comments
 (0)