Skip to content

Commit 6d895fa

Browse files
authored
Merge pull request #31 from BentoBoxWorld/develop
Release 1.13.1
2 parents 9c30572 + 0dfa5de commit 6d895fa

File tree

11 files changed

+275
-45
lines changed

11 files changed

+275
-45
lines changed

.github/workflows/build.yml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
name: Build
1+
name: SonarCloud
22
on:
33
push:
44
branches:
55
- develop
6-
- master
76
pull_request:
87
types: [opened, synchronize, reopened]
98
jobs:
109
build:
11-
name: Build
10+
name: Build and analyze
1211
runs-on: ubuntu-latest
1312
steps:
14-
- uses: actions/checkout@v2
13+
- uses: actions/checkout@v3
1514
with:
1615
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
17-
- name: Set up JDK 11
18-
uses: actions/setup-java@v1
16+
- name: Set up JDK 17
17+
uses: actions/setup-java@v3
1918
with:
20-
java-version: 11
19+
java-version: 17
20+
distribution: 'zulu' # Alternative distribution options are available.
2121
- name: Cache SonarCloud packages
22-
uses: actions/cache@v1
22+
uses: actions/cache@v3
2323
with:
2424
path: ~/.sonar/cache
2525
key: ${{ runner.os }}-sonar
2626
restore-keys: ${{ runner.os }}-sonar
2727
- name: Cache Maven packages
28-
uses: actions/cache@v1
28+
uses: actions/cache@v3
2929
with:
3030
path: ~/.m2
3131
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -34,4 +34,4 @@ jobs:
3434
env:
3535
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
3636
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
37-
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
37+
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=BentoBoxWorld_ControlPanel

pom.xml

+99-20
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@
5656
<!-- Some JAVA encoding settings -->
5757
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5858
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
59-
<java.version>1.8</java.version>
59+
<java.version>17</java.version>
6060

6161
<!-- SPIGOT API version -->
62-
<spigot.version>1.15.2-R0.1-SNAPSHOT</spigot.version>
62+
<spigot.version>1.20.4-R0.1-SNAPSHOT</spigot.version>
6363

6464
<!-- BentoBox API version -->
65-
<bentobox.version>1.14.0</bentobox.version>
65+
<bentobox.version>2.0.0-SNAPSHOT</bentobox.version>
6666

6767
<!-- Revision variable removes warning about dynamic version -->
6868
<revision>${build.version}-SNAPSHOT</revision>
6969
<!-- This allows to change between versions and snapshots. -->
70-
<build.version>1.13.0</build.version>
70+
<build.version>1.13.1</build.version>
7171
<build.number>-LOCAL</build.number>
7272
<!-- Sonar Cloud -->
7373
<sonar.projectKey>BentoBoxWorld_ControlPanel</sonar.projectKey>
@@ -152,9 +152,18 @@
152152
<!-- Build contains information for maven. It allows to create correct
153153
jar file. -->
154154
<build>
155+
<!-- By default ${revision} is ${build.version}-SNAPSHOT -->
156+
<!-- If GIT_BRANCH variable is set to origin/master, then it will
157+
be only ${build.version}. -->
158+
159+
<!-- By default ${build.number} is -LOCAL. -->
160+
<!-- If the BUILD_NUMBER variable is set, then it will be -b[number]. -->
161+
<!-- If GIT_BRANCH variable is set to origin/master, then it will
162+
be the empty string. -->
155163
<finalName>${project.name}-${revision}${build.number}</finalName>
156164

157165
<defaultGoal>clean package</defaultGoal>
166+
158167
<resources>
159168
<resource>
160169
<directory>src/main/resources</directory>
@@ -166,6 +175,14 @@
166175
<filtering>false</filtering>
167176
<includes>
168177
<include>*.yml</include>
178+
</includes>
179+
</resource>
180+
<resource>
181+
<directory>src/main/resources/blueprints</directory>
182+
<targetPath>./blueprints</targetPath>
183+
<filtering>false</filtering>
184+
<includes>
185+
<include>*.blu</include>
169186
<include>*.json</include>
170187
</includes>
171188
</resource>
@@ -180,20 +197,57 @@
180197
<groupId>org.apache.maven.plugins</groupId>
181198
<artifactId>maven-resources-plugin</artifactId>
182199
<version>3.1.0</version>
200+
<configuration>
201+
<nonFilteredFileExtensions>
202+
<nonFilteredFileExtension>blu</nonFilteredFileExtension>
203+
</nonFilteredFileExtensions>
204+
</configuration>
183205
</plugin>
184206
<plugin>
185207
<groupId>org.apache.maven.plugins</groupId>
186208
<artifactId>maven-compiler-plugin</artifactId>
187-
<version>3.7.0</version>
209+
<version>3.8.1</version>
188210
<configuration>
189-
<source>${java.version}</source>
190-
<target>${java.version}</target>
211+
<release>${java.version}</release>
191212
</configuration>
192213
</plugin>
193214
<plugin>
194215
<groupId>org.apache.maven.plugins</groupId>
195216
<artifactId>maven-surefire-plugin</artifactId>
196-
<version>2.22.0</version>
217+
<version>3.1.2</version>
218+
<!--suppress MavenModelInspection -->
219+
<configuration>
220+
<argLine>
221+
${argLine}
222+
--add-opens java.base/java.lang=ALL-UNNAMED
223+
--add-opens java.base/java.math=ALL-UNNAMED
224+
--add-opens java.base/java.io=ALL-UNNAMED
225+
--add-opens java.base/java.util=ALL-UNNAMED
226+
--add-opens
227+
java.base/java.util.stream=ALL-UNNAMED
228+
--add-opens java.base/java.text=ALL-UNNAMED
229+
--add-opens
230+
java.base/java.util.regex=ALL-UNNAMED
231+
--add-opens
232+
java.base/java.nio.channels.spi=ALL-UNNAMED
233+
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
234+
--add-opens java.base/java.net=ALL-UNNAMED
235+
--add-opens
236+
java.base/java.util.concurrent=ALL-UNNAMED
237+
--add-opens java.base/sun.nio.fs=ALL-UNNAMED
238+
--add-opens java.base/sun.nio.cs=ALL-UNNAMED
239+
--add-opens java.base/java.nio.file=ALL-UNNAMED
240+
--add-opens
241+
java.base/java.nio.charset=ALL-UNNAMED
242+
--add-opens
243+
java.base/java.lang.reflect=ALL-UNNAMED
244+
--add-opens
245+
java.logging/java.util.logging=ALL-UNNAMED
246+
--add-opens java.base/java.lang.ref=ALL-UNNAMED
247+
--add-opens java.base/java.util.jar=ALL-UNNAMED
248+
--add-opens java.base/java.util.zip=ALL-UNNAMED
249+
</argLine>
250+
</configuration>
197251
</plugin>
198252
<plugin>
199253
<groupId>org.apache.maven.plugins</groupId>
@@ -203,15 +257,17 @@
203257
<plugin>
204258
<groupId>org.apache.maven.plugins</groupId>
205259
<artifactId>maven-javadoc-plugin</artifactId>
206-
<version>3.0.1</version>
260+
<version>3.3.0</version>
207261
<configuration>
208-
<show>public</show>
209262
<failOnError>false</failOnError>
210263
<additionalJOption>-Xdoclint:none</additionalJOption>
264+
<!-- To compile with Java 11, this tag may be required -->
265+
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
211266
</configuration>
212267
<executions>
213268
<execution>
214269
<id>attach-javadocs</id>
270+
<phase>install</phase>
215271
<goals>
216272
<goal>jar</goal>
217273
</goals>
@@ -233,25 +289,48 @@
233289
</plugin>
234290
<plugin>
235291
<groupId>org.apache.maven.plugins</groupId>
236-
<artifactId>maven-shade-plugin</artifactId>
237-
<version>3.1.1</version>
292+
<artifactId>maven-install-plugin</artifactId>
293+
<version>2.5.2</version>
294+
</plugin>
295+
<plugin>
296+
<groupId>org.apache.maven.plugins</groupId>
297+
<artifactId>maven-deploy-plugin</artifactId>
298+
<version>2.8.2</version>
299+
</plugin>
300+
<plugin>
301+
<groupId>org.jacoco</groupId>
302+
<artifactId>jacoco-maven-plugin</artifactId>
303+
<version>0.8.10</version>
238304
<configuration>
239-
<minimizeJar>true</minimizeJar>
305+
<append>true</append>
306+
<excludes>
307+
<!-- This is required to prevent Jacoco from adding
308+
synthetic fields to a JavaBean class (causes errors in testing) -->
309+
<exclude>**/*Names*</exclude>
310+
<!-- Prevents the Material is too large to mock error -->
311+
<exclude>org/bukkit/Material*</exclude>
312+
</excludes>
240313
</configuration>
241314
<executions>
242315
<execution>
243-
<phase>package</phase>
316+
<id>prepare-agent</id>
317+
<goals>
318+
<goal>prepare-agent</goal>
319+
</goals>
320+
</execution>
321+
<execution>
322+
<id>report</id>
244323
<goals>
245-
<goal>shade</goal>
324+
<goal>report</goal>
246325
</goals>
326+
<configuration>
327+
<formats>
328+
<format>XML</format>
329+
</formats>
330+
</configuration>
247331
</execution>
248332
</executions>
249333
</plugin>
250-
<plugin>
251-
<groupId>org.apache.maven.plugins</groupId>
252-
<artifactId>maven-install-plugin</artifactId>
253-
<version>2.5.2</version>
254-
</plugin>
255334
</plugins>
256335
</build>
257336

src/main/java/world/bentobox/controlpanel/managers/ControlPanelManager.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@
77
package world.bentobox.controlpanel.managers;
88

99

10-
import org.bukkit.Material;
11-
import org.bukkit.World;
12-
import org.bukkit.configuration.ConfigurationSection;
13-
import org.bukkit.configuration.InvalidConfigurationException;
14-
import org.bukkit.configuration.file.YamlConfiguration;
15-
import org.jetbrains.annotations.NotNull;
16-
import org.jetbrains.annotations.Nullable;
1710
import java.io.File;
1811
import java.io.IOException;
1912
import java.util.ArrayList;
@@ -22,6 +15,14 @@
2215
import java.util.Map;
2316
import java.util.Objects;
2417

18+
import org.bukkit.Material;
19+
import org.bukkit.World;
20+
import org.bukkit.configuration.ConfigurationSection;
21+
import org.bukkit.configuration.InvalidConfigurationException;
22+
import org.bukkit.configuration.file.YamlConfiguration;
23+
import org.jetbrains.annotations.NotNull;
24+
import org.jetbrains.annotations.Nullable;
25+
2526
import world.bentobox.bentobox.api.addons.GameModeAddon;
2627
import world.bentobox.bentobox.api.user.User;
2728
import world.bentobox.bentobox.database.Database;
@@ -86,6 +87,7 @@ public void load()
8687
* This method loads given controlPanelObject inside cache.
8788
* @param controlPanelObject Object that must be added to cache.
8889
*/
90+
@SuppressWarnings("deprecation")
8991
private void load(ControlPanelObject controlPanelObject)
9092
{
9193
// Migrate older data

src/main/java/world/bentobox/controlpanel/panels/GuiUtils.java

+31-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package world.bentobox.controlpanel.panels;
22

33

4-
import org.apache.commons.lang.WordUtils;
5-
import org.bukkit.ChatColor;
6-
import org.bukkit.Material;
7-
import org.bukkit.inventory.ItemStack;
4+
import java.text.BreakIterator;
85
import java.util.ArrayList;
96
import java.util.Arrays;
107
import java.util.Collections;
118
import java.util.List;
129

10+
import org.bukkit.ChatColor;
11+
import org.bukkit.Material;
12+
import org.bukkit.inventory.ItemStack;
13+
1314
import world.bentobox.bentobox.api.panels.PanelItem;
1415
import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
1516
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
@@ -142,7 +143,7 @@ public static List<String> stringSplit(String string, int warpLength, boolean co
142143
List<String> result = new ArrayList<>();
143144

144145
Arrays.stream(string.split("\\|")).
145-
map(line -> Arrays.asList(WordUtils.wrap(line, warpLength).split(System.getProperty("line.separator")))).
146+
map(line -> Arrays.asList(wrap(line, warpLength).split(System.getProperty("line.separator")))).
146147
forEach(result::addAll);
147148

148149
// Fix colors, as splitting my lost that information.
@@ -159,6 +160,31 @@ public static List<String> stringSplit(String string, int warpLength, boolean co
159160
return result;
160161
}
161162

163+
static String wrap(String text, int maxWidth) {
164+
BreakIterator boundary = BreakIterator.getLineInstance();
165+
boundary.setText(text);
166+
167+
StringBuilder wrappedText = new StringBuilder();
168+
int start = boundary.first();
169+
int end = boundary.next();
170+
int lineLength = 0;
171+
172+
while (end != BreakIterator.DONE) {
173+
String word = text.substring(start, end);
174+
lineLength += word.length();
175+
176+
if (lineLength >= maxWidth) {
177+
wrappedText.append("\n");
178+
lineLength = word.length();
179+
}
180+
wrappedText.append(word);
181+
start = end;
182+
end = boundary.next();
183+
}
184+
185+
return wrappedText.toString();
186+
}
187+
162188

163189
/**
164190
* Simple splitter

src/main/resources/locales/de.yml

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
---
12
controlpanel:
23
messages:
34
import-count: 'Importiere [number] Controllpanel '
5+
control-panels-wiped: "&2 Alle ControlPanels in [gamemode] werden entfernt"
46
errors:
57
no-load: "&4 [file] konnte nicht geladen werden: [message]"
68
no-file: "&4 [file] fehlt"
9+
not-a-gamemode-world: "&4 Es konnte kein gültiger Spielmodus gefunden werden."
710
no-valid-panels: "&4Konnte kein gültiges Controllpanel finden."
811
no-valid-panels-op: "&4Konnte kein gültiges ControllPanel finden. Du solltest
912
versuchen, es mit /[admin] cp import zu importieren"
@@ -12,7 +15,10 @@ controlpanel:
1215
help:
1316
description: shows admin help commands
1417
import:
15-
parameters: "[overwrite]"
16-
description: 'Importiert ControllPanels von [file]'
18+
parameters: "[file-name] - Name der zu importierenden Datei. Bei leerem Namen
19+
wird die Standardvorlage importiert."
20+
description: Importiert ControllPanels von [file]
21+
confirmation: Bitte bestätigen Sie, dass Sie vorhandene Bedienfelder aus [gamemode]
22+
entfernen und Bedienfelder aus [file] importieren möchten
1723
help:
18-
description: 'Öffnet das Bedienfeld'
24+
description: Öffnet das Bedienfeld

src/main/resources/locales/fr.yml

+7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
---
12
controlpanel:
23
messages:
34
import-count: " [number] panneaux de commande importés."
5+
control-panels-wiped: "&2 Tous les panneaux de contrôle de [gamemode] ont été
6+
retirés"
47
errors:
58
no-load: "&4Impossible de charger le fichier [file]: [message]"
69
no-file: "&4Fichier [file] manquant"
10+
not-a-gamemode-world: "&4 Impossible de trouver un mode de jeu valide."
711
no-valid-panels: "&4Impossible de trouver un panneau de configuration valide.\n"
812
no-valid-panels-op: "&4Impossible de trouver un panneau de configuration valide.
913
Vous devriez essayer de l'importer en utilisant /[admin] cp import"
@@ -16,6 +20,9 @@ controlpanel:
1620
description: |2-
1721
1822
importe les panneaux de contrôle de [file]
23+
confirmation: Veuillez confirmer que vous souhaitez supprimer les panneaux
24+
de contrôle existants de [gamemode] et importez des panneaux de contrôle
25+
depuis [file]
1926
help:
2027
description: |2-
2128

0 commit comments

Comments
 (0)