Skip to content
This repository was archived by the owner on May 27, 2024. It is now read-only.

Commit 82c69cf

Browse files
authored
Update to v1.9.2 (#143)
2 parents 1abc10c + 0c4a036 commit 82c69cf

84 files changed

Lines changed: 2737 additions & 764 deletions

File tree

Some content is hidden

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

.github/workflows/build.yml

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,23 +47,60 @@ jobs:
4747
- name: Gradle Test
4848
run: ./gradlew test
4949

50+
test-server:
51+
runs-on: ubuntu-latest
52+
timeout-minutes: 360
53+
needs: test
54+
55+
strategy:
56+
fail-fast: false
57+
matrix:
58+
version: [ 1.16.5, 1.15.2, 1.14.4, 1.13.2, 1.12.2, 1.11.2, 1.10.2, 1.9.4, 1.8.8 ]
59+
java-version: [ 8 ]
60+
include:
61+
- version: 1.19.4
62+
java-version: 17
63+
- version: 1.20.4
64+
java-version: 17
65+
66+
name: Test Plugin on MC ${{ matrix.version }}
67+
steps:
68+
- uses: actions/checkout@v4
69+
- name: Setup JDK ${{ matrix.java-version }}
70+
uses: actions/setup-java@v4
71+
with:
72+
java-version: ${{ matrix.java-version }}
73+
distribution: 'temurin'
74+
cache: 'gradle'
75+
- name: Change Permissions
76+
run: chmod +x ./gradlew
77+
- name: Build Plugin
78+
run: ./gradlew clean assemble
79+
- name: Test Plugin - ${{ matrix.version }}
80+
uses: GamerCoder215/TestMC@v1.0.1
81+
with:
82+
path: 'plugin/build/libs/novaconomy-*.jar'
83+
runtime: 'paper'
84+
version: ${{ matrix.version }}
85+
time: 120
86+
5087
build:
5188
runs-on: ubuntu-latest
5289
needs: setup
5390
timeout-minutes: 30
5491

5592
strategy:
93+
fail-fast: false
5694
matrix:
57-
java-version: [17, 18, 19]
58-
java-vendor: [temurin, zulu]
95+
java-version: [8, 11, 16, 17]
5996

60-
name: Build Java ${{ matrix.java-version }}-${{ matrix.java-vendor }}
97+
name: Build Java ${{ matrix.java-version }}
6198
steps:
6299
- uses: actions/checkout@v4
63100
- name: Set up JDK ${{ matrix.java-version }}
64101
uses: actions/setup-java@v4
65102
with:
66-
distribution: ${{ matrix.java-vendor }}
103+
distribution: 'temurin'
67104
java-version: ${{ matrix.java-version }}
68105
cache: 'gradle'
69106
- name: Change Permissions

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,21 @@ Novaconomy is an economy plugin with so many features, you'll never need another
7171
- Fix Essentials-related Integration Issues
7272
- Fix Additional 1.20.3+ Issues
7373

74+
- **v1.9.2**
75+
- **Player Language Override**
76+
- Players can specify their own language
77+
- Uses currently supported Languages
78+
- **Not all messages can be used this way**. Some GUI-related items will use the global language.
79+
- **Corporation & Business Mail**
80+
- Corporations and Businesses can now receive mail messages from players.
81+
- Use Book & Quill to write to them.
82+
- Read Wiki for more information.
83+
- Update to Gradle 8.7
84+
- Update Lamp to v3.2.1
85+
- Fix Java 8 Support
86+
- Improve Testing Capabilities
87+
- Minor Code Optimization
88+
7489
### 💸 1.8.0 Update: Ecstatic Economy
7590
- New Features
7691
- **Unlimited Business Products**

abstraction/src/main/java/us/teaminceptus/novaconomy/abstraction/CommandWrapper.java

Lines changed: 277 additions & 194 deletions
Large diffs are not rendered by default.

abstraction/src/main/java/us/teaminceptus/novaconomy/abstraction/NBTWrapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ public final Class<?> getClass(String key) {
122122
return null;
123123
}
124124

125+
public void cancel() { set("cancelled", true); }
126+
127+
public boolean isCancelled() { return getBoolean("cancelled"); }
128+
125129
@Override
126130
public boolean equals(Object o) {
127131
if (this == o) return true;

abstraction/src/main/java/us/teaminceptus/novaconomy/abstraction/Wrapper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ default int getCommandVersion() {
5555

5656
void sendSign(Player p, Consumer<String[]> lines);
5757

58+
void openBook(Player p, ItemStack book);
59+
5860
// Defaults
5961

6062
default List<Material> getCrops() {

abstraction/src/main/java/us/teaminceptus/novaconomy/abstraction/test/TestWrapper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,7 @@ public void removePacketInjector(Player p) {}
6464
@Override
6565
public void sendSign(Player p, Consumer<String[]> lines) {}
6666

67+
@Override
68+
public void openBook(Player p, ItemStack book) {}
69+
6770
}

abstraction/src/main/java/us/teaminceptus/novaconomy/messages/BukkitMessageHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@ class BukkitMessageHandler implements MessageHandler {
1818

1919
@Override
2020
public void send(CommandSender sender, String key, Object... args) {
21-
sendRaw(sender, format(get(key), args));
21+
sendRaw(sender, format(sender, get(sender, key), args));
2222
}
2323

2424
@Override
2525
public void sendMessage(CommandSender sender, String key, Object... args) {
26-
sendRawMessage(sender, format(get(key), args));
26+
sendRawMessage(sender, format(sender, get(sender, key), args));
2727
}
2828

2929
@Override
3030
public void sendError(CommandSender sender, String key, Object... args) {
31-
sendRawMessage(sender, ChatColor.RED + format(get(key), args));
31+
sendRawMessage(sender, ChatColor.RED + format(sender, get(sender, key), args));
3232
}
3333

3434
@Override
3535
public void sendSuccess(CommandSender sender, String key, Object... args) {
36-
sendRawMessage(sender, ChatColor.GREEN + format(get(key), args));
36+
sendRawMessage(sender, ChatColor.GREEN + format(sender, get(sender, key), args));
3737
}
3838

3939
@Override

abstraction/src/main/java/us/teaminceptus/novaconomy/messages/MessageHandler.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.bukkit.entity.EntityType;
1111
import org.bukkit.entity.Player;
1212
import org.bukkit.event.entity.EntityDamageEvent;
13+
import org.bukkit.permissions.ServerOperator;
1314
import org.bukkit.plugin.Plugin;
1415
import us.teaminceptus.novaconomy.api.Language;
1516
import us.teaminceptus.novaconomy.api.NovaConfig;
@@ -125,8 +126,8 @@ static <T> Supplier<String> any(Supplier<T[]> array, Function<T, String> toStrin
125126
.put("error.argument.icon", any(Material::values, Material::toString, w::isItem))
126127
.put("error.argument.integer", r::nextInt)
127128
.put("error.argument.item", any(Material::values, Material::toString, w::isItem))
128-
.put("error.argument.scale", () -> r.nextInt(10, 30) / 10.0)
129-
.put("error.argument.symbol", () -> "'" + (char) r.nextInt(0x21, 0x7E) + "'")
129+
.put("error.argument.scale", () -> r.nextInt(20) / 10.0)
130+
.put("error.argument.symbol", () -> "'" + (char) (r.nextInt(0x7E - 0x21) + 0x21) + "'")
130131

131132
.build()
132133
.entrySet()
@@ -140,17 +141,39 @@ static String prefix() {
140141
return get("plugin.prefix");
141142
}
142143

144+
static String prefix(ServerOperator sender) {
145+
return get(sender, "plugin.prefix");
146+
}
147+
143148
static String get(String key) {
144149
return Language.getCurrentMessage(key);
145150
}
146151

152+
static String get(ServerOperator sender, String key) {
153+
if (!(sender instanceof Player)) return get(key);
154+
Player p = (Player) sender;
155+
NovaPlayer np = new NovaPlayer(p);
156+
157+
return np.getLanguage().getMessage(key);
158+
}
159+
147160
static String format(String format, Object... args) {
148161
if (args.length == 0) return format;
149162

150163
return String.format(Language.getCurrentLocale(), format, args)
151164
.replace("\u00a0", " "); // Replace non-breaking space with regular space
152165
}
153166

167+
static String format(ServerOperator sender, String format, Object... args) {
168+
if (!(sender instanceof Player)) return format(format, args);
169+
170+
Player p = (Player) sender;
171+
NovaPlayer np = new NovaPlayer(p);
172+
173+
return String.format(np.getLanguage().getLocale(), format, args)
174+
.replace("\u00a0", " "); // Replace non-breaking space with regular space
175+
}
176+
154177
// Fetching
155178

156179
static MessageHandler getMessageHandler() {

abstraction/src/main/java/us/teaminceptus/novaconomy/messages/SpigotMessageHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private static void map(CommandSender sender, List<BaseComponent> components, St
7777
if (!advancedText(sender)) return;
7878

7979
if (MessageHandler.ERROR_EXAMPLES.containsKey(key)) {
80-
BaseComponent[] example = TextComponent.fromLegacyText(EXAMPLE_COLORS[r.nextInt(EXAMPLE_COLORS.length)] + format(get("constants.example"), ChatColor.GOLD + MessageHandler.ERROR_EXAMPLES.get(key).get()));
80+
BaseComponent[] example = TextComponent.fromLegacyText(EXAMPLE_COLORS[r.nextInt(EXAMPLE_COLORS.length)] + format(sender, get(sender, "constants.example"), ChatColor.GOLD + MessageHandler.ERROR_EXAMPLES.get(key).get()));
8181
HoverEvent hover = new HoverEvent(HoverEvent.Action.SHOW_TEXT, example);
8282

8383
components.forEach(c -> c.setHoverEvent(hover));
@@ -86,15 +86,15 @@ private static void map(CommandSender sender, List<BaseComponent> components, St
8686

8787
@Override
8888
public void send(CommandSender sender, String key, Object... args) {
89-
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(format(get(key), args))));
89+
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(format(sender, get(sender, key), args))));
9090
map(sender, message, key);
9191

9292
sendComponents(sender, message);
9393
}
9494

9595
@Override
9696
public void sendMessage(CommandSender sender, String key, Object... args) {
97-
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(format(get(key), args))));
97+
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(format(sender, get(sender, key), args))));
9898
map(sender, message, key);
9999

100100
message.add(0, prefix(sender));
@@ -104,7 +104,7 @@ public void sendMessage(CommandSender sender, String key, Object... args) {
104104

105105
@Override
106106
public void sendError(CommandSender sender, String key, Object... args) {
107-
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(ChatColor.RED + format(get(key), args))));
107+
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(ChatColor.RED + format(sender, get(sender, key), args))));
108108
map(sender, message, key);
109109

110110
message.add(0, prefix(sender));
@@ -114,7 +114,7 @@ public void sendError(CommandSender sender, String key, Object... args) {
114114

115115
@Override
116116
public void sendSuccess(CommandSender sender, String key, Object... args) {
117-
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(ChatColor.GREEN + format(get(key), args))));
117+
List<BaseComponent> message = new ArrayList<>(Arrays.asList(TextComponent.fromLegacyText(ChatColor.GREEN + format(sender, get(sender, key), args))));
118118
map(sender, message, key);
119119

120120
message.add(0, prefix(sender));
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package us.teaminceptus.novaconomy.scheduler;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.Location;
5+
import org.bukkit.entity.Entity;
6+
import org.bukkit.plugin.Plugin;
7+
import org.bukkit.scheduler.BukkitRunnable;
8+
9+
import java.util.function.Consumer;
10+
11+
public final class BukkitScheduler implements NovaScheduler {
12+
13+
private Plugin plugin;
14+
15+
public BukkitScheduler(Plugin plugin) {
16+
this.plugin = plugin;
17+
plugin.getLogger().info("Using BukkitScheduler");
18+
}
19+
20+
@Override
21+
public void teleport(Entity en, Location l) {
22+
en.teleport(l);
23+
}
24+
25+
@Override
26+
public void syncContext(Consumer<NovaTask> consumer) {
27+
new BukkitRunnable() {
28+
@Override
29+
public void run() {
30+
consumer.accept(this::cancel);
31+
}
32+
}.runTask(plugin);
33+
}
34+
35+
@Override
36+
public void asyncContext(Consumer<NovaTask> consumer) {
37+
new BukkitRunnable() {
38+
@Override
39+
public void run() {
40+
consumer.accept(this::cancel);
41+
}
42+
}.runTaskAsynchronously(plugin);
43+
}
44+
45+
@Override
46+
public void syncLaterContext(Consumer<NovaTask> consumer, long delay) {
47+
new BukkitRunnable() {
48+
@Override
49+
public void run() {
50+
consumer.accept(this::cancel);
51+
}
52+
}.runTaskLater(plugin, delay);
53+
}
54+
55+
@Override
56+
public void asyncLaterContext(Consumer<NovaTask> consumer, long delay) {
57+
new BukkitRunnable() {
58+
@Override
59+
public void run() {
60+
consumer.accept(this::cancel);
61+
}
62+
}.runTaskLaterAsynchronously(plugin, delay);
63+
}
64+
65+
@Override
66+
public void syncRepeatingContext(Consumer<NovaTask> consumer, long delay, long period) {
67+
new BukkitRunnable() {
68+
@Override
69+
public void run() {
70+
consumer.accept(this::cancel);
71+
}
72+
}.runTaskTimer(plugin, delay, period);
73+
}
74+
75+
@Override
76+
public void asyncRepeatingContext(Consumer<NovaTask> consumer, long delay, long period) {
77+
new BukkitRunnable() {
78+
@Override
79+
public void run() {
80+
consumer.accept(this::cancel);
81+
}
82+
}.runTaskTimerAsynchronously(plugin, delay, period);
83+
}
84+
85+
@Override
86+
public void cancelAll() {
87+
Bukkit.getScheduler().cancelTasks(plugin);
88+
}
89+
}

0 commit comments

Comments
 (0)