Skip to content

Commit 7731d33

Browse files
committed
v3.1.2 - projectile hit message, 1.8.3 compat, api changes, and bug fixes
1 parent 7ef60d1 commit 7731d33

18 files changed

Lines changed: 180 additions & 57 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ buildscript {
1010

1111
allprojects {
1212
group 'me.realized'
13-
version '3.1.1'
13+
version '3.1.2'
1414
}
1515

1616
subprojects {

duels-api/src/main/java/me/realized/duels/api/Duels.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package me.realized.duels.api;
22

33
import javax.annotation.Nonnull;
4-
import lombok.NonNull;
54
import me.realized.duels.api.arena.ArenaManager;
65
import me.realized.duels.api.command.SubCommand;
76
import me.realized.duels.api.kit.KitManager;
87
import me.realized.duels.api.user.UserManager;
8+
import org.bukkit.event.Listener;
99
import org.bukkit.plugin.Plugin;
1010
import org.bukkit.scheduler.BukkitTask;
1111

@@ -31,6 +31,13 @@ public interface Duels extends Plugin {
3131
boolean registerSubCommand(@Nonnull final String command, @Nonnull final SubCommand subCommand);
3232

3333

34+
/**
35+
* @param listener Listener to register
36+
* @since 3.1.2
37+
*/
38+
void registerListener(@Nonnull final Listener listener);
39+
40+
3441
/**
3542
* Reloads the plugin.
3643
*
@@ -46,7 +53,7 @@ public interface Duels extends Plugin {
4653
* @return BukkitTask executed
4754
* @since 3.1.0
4855
*/
49-
BukkitTask doSync(@NonNull final Runnable task);
56+
BukkitTask doSync(@Nonnull final Runnable task);
5057

5158

5259
/**
@@ -57,7 +64,7 @@ public interface Duels extends Plugin {
5764
* @return BukkitTask executed
5865
* @since 3.1.0
5966
*/
60-
BukkitTask doSyncAfter(@NonNull final Runnable task, long delay);
67+
BukkitTask doSyncAfter(@Nonnull final Runnable task, long delay);
6168

6269

6370
/**
@@ -69,7 +76,7 @@ public interface Duels extends Plugin {
6976
* @return BukkitTask executed
7077
* @since 3.1.0
7178
*/
72-
BukkitTask doSyncRepeat(@NonNull final Runnable task, long delay, long interval);
79+
BukkitTask doSyncRepeat(@Nonnull final Runnable task, long delay, long interval);
7380

7481

7582
/**
@@ -79,7 +86,7 @@ public interface Duels extends Plugin {
7986
* @return BukkitTask executed
8087
* @since 3.1.0
8188
*/
82-
BukkitTask doAsync(@NonNull final Runnable task);
89+
BukkitTask doAsync(@Nonnull final Runnable task);
8390

8491

8592
/**
@@ -90,7 +97,7 @@ public interface Duels extends Plugin {
9097
* @return BukkitTask executed
9198
* @since 3.1.0
9299
*/
93-
BukkitTask doAsyncAfter(@NonNull final Runnable task, long delay);
100+
BukkitTask doAsyncAfter(@Nonnull final Runnable task, long delay);
94101

95102

96103
/**
@@ -102,31 +109,35 @@ public interface Duels extends Plugin {
102109
* @return BukkitTask executed
103110
* @since 3.1.0
104111
*/
105-
BukkitTask doAsyncRepeat(@NonNull final Runnable task, long delay, long interval);
112+
BukkitTask doAsyncRepeat(@Nonnull final Runnable task, long delay, long interval);
106113

107114

108115
/**
109116
* @param message message to log
117+
* @since 3.1.0
110118
*/
111-
void info(@NonNull final String message);
119+
void info(@Nonnull final String message);
112120

113121

114122
/**
115123
* @param message message to log
124+
* @since 3.1.0
116125
*/
117-
void warn(@NonNull final String message);
126+
void warn(@Nonnull final String message);
118127

119128

120129
/**
121130
* @param message message to log
131+
* @since 3.1.0
122132
*/
123-
void error(@NonNull final String message);
133+
void error(@Nonnull final String message);
124134

125135

126136
/**
127137
* @param message message to log
138+
* @since 3.1.0
128139
*/
129-
void error(@NonNull final String message, @NonNull Throwable thrown);
140+
void error(@Nonnull final String message, @Nonnull Throwable thrown);
130141

131142

132143
/**

duels-api/src/main/java/me/realized/duels/api/extension/DuelsExtension.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
import java.net.URL;
99
import java.net.URLConnection;
1010
import java.util.Objects;
11-
import java.util.logging.Level;
11+
import javax.annotation.Nonnull;
1212
import javax.annotation.Nullable;
1313
import lombok.Getter;
14-
import lombok.NonNull;
1514
import me.realized.duels.api.Duels;
1615
import org.bukkit.configuration.file.FileConfiguration;
1716
import org.bukkit.configuration.file.YamlConfiguration;
@@ -43,7 +42,7 @@ final void init(final Duels api, final String name, final File folder, final Fil
4342
this.configFile = new File(dataFolder, "config.yml");
4443
}
4544

46-
@NonNull
45+
@Nonnull
4746
public final String getName() {
4847
return name;
4948
}
@@ -62,7 +61,7 @@ public final void setEnabled(final boolean enabled) {
6261
this.enabled = enabled;
6362
}
6463

65-
public void saveResource(@NonNull String resourcePath) {
64+
public void saveResource(@Nonnull String resourcePath) {
6665
Objects.requireNonNull(resourcePath, "resourcePath");
6766
resourcePath = resourcePath.replace('\\', '/');
6867

@@ -97,7 +96,7 @@ public void saveResource(@NonNull String resourcePath) {
9796
}
9897

9998
@Nullable
100-
public InputStream getResource(@NonNull final String filename) {
99+
public InputStream getResource(@Nonnull final String filename) {
101100
Objects.requireNonNull(filename, "filename");
102101

103102
try {

duels-plugin/src/main/java/me/realized/duels/DuelsPlugin.java

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.util.stream.Collectors;
1414
import javax.annotation.Nonnull;
1515
import lombok.Getter;
16-
import lombok.NonNull;
1716
import me.realized.duels.api.Duels;
1817
import me.realized.duels.api.command.SubCommand;
1918
import me.realized.duels.arena.ArenaManager;
@@ -25,10 +24,12 @@
2524
import me.realized.duels.config.Lang;
2625
import me.realized.duels.data.UserManager;
2726
import me.realized.duels.duel.DuelManager;
27+
import me.realized.duels.extension.ExtensionClassLoader;
2828
import me.realized.duels.extension.ExtensionManager;
2929
import me.realized.duels.extra.DamageListener;
3030
import me.realized.duels.extra.KitItemListener;
3131
import me.realized.duels.extra.PotionListener;
32+
import me.realized.duels.extra.ProjectileHitListener;
3233
import me.realized.duels.extra.SoupListener;
3334
import me.realized.duels.extra.Teleport;
3435
import me.realized.duels.extra.TeleportListener;
@@ -50,6 +51,8 @@
5051
import me.realized.duels.util.command.AbstractCommand;
5152
import me.realized.duels.util.gui.GuiListener;
5253
import org.bukkit.command.CommandSender;
54+
import org.bukkit.event.HandlerList;
55+
import org.bukkit.event.Listener;
5356
import org.bukkit.plugin.java.JavaPlugin;
5457
import org.bukkit.scheduler.BukkitTask;
5558
import org.inventivetalent.update.spiget.SpigetUpdate;
@@ -106,6 +109,7 @@ public class DuelsPlugin extends JavaPlugin implements Duels, LogSource {
106109
@Getter
107110
private ExtensionManager extensionManager;
108111
private final Map<String, AbstractCommand<DuelsPlugin>> commands = new HashMap<>();
112+
private final List<Listener> registeredListeners = new ArrayList<>();
109113

110114
@Getter
111115
private volatile boolean updateAvailable;
@@ -147,12 +151,6 @@ public void onEnable() {
147151
loadables.add(teleport = new Teleport(this));
148152
loadables.add(extensionManager = new ExtensionManager(this));
149153

150-
registerCommands(
151-
new DuelCommand(this),
152-
new SpectateCommand(this),
153-
new DuelsCommand(this)
154-
);
155-
156154
if (!load()) {
157155
getPluginLoader().disablePlugin(this);
158156
return;
@@ -163,6 +161,7 @@ public void onEnable() {
163161
new PotionListener(this);
164162
new TeleportListener(this);
165163
new SoupListener(this);
164+
new ProjectileHitListener(this);
166165

167166
new Metrics(this);
168167

@@ -202,6 +201,12 @@ public void onDisable() {
202201
* @return true if load was successful, otherwise false
203202
*/
204203
private boolean load() {
204+
registerCommands(
205+
new DuelCommand(this),
206+
new SpectateCommand(this),
207+
new DuelsCommand(this)
208+
);
209+
205210
for (final Loadable loadable : loadables) {
206211
try {
207212
loadable.handleLoad();
@@ -220,6 +225,15 @@ private boolean load() {
220225
* @return true if unload was successful, otherwise false
221226
*/
222227
private boolean unload() {
228+
registeredListeners.forEach(HandlerList::unregisterAll);
229+
registeredListeners.clear();
230+
// Unregister all extension listeners that isn't using the method Duels#registerListener
231+
HandlerList.getRegisteredListeners(this)
232+
.stream()
233+
.filter(listener -> listener.getListener().getClass().getClassLoader().getClass().isAssignableFrom(ExtensionClassLoader.class))
234+
.forEach(listener -> HandlerList.unregisterAll(listener.getListener()));
235+
commands.clear();
236+
223237
for (final Loadable loadable : Lists.reverse(loadables)) {
224238
try {
225239
if (loadables.indexOf(loadable) > lastLoad) {
@@ -265,6 +279,13 @@ protected void execute(final CommandSender sender, final String label, final Str
265279
return true;
266280
}
267281

282+
@Override
283+
public void registerListener(@Nonnull final Listener listener) {
284+
Objects.requireNonNull(listener, "listener");
285+
registeredListeners.add(listener);
286+
getServer().getPluginManager().registerEvents(listener, this);
287+
}
288+
268289
@Override
269290
public boolean reload() {
270291
if (!(unload() && load())) {
@@ -296,61 +317,61 @@ public boolean reload(final Loadable loadable) {
296317
}
297318

298319
@Override
299-
public BukkitTask doSync(@NonNull final Runnable task) {
320+
public BukkitTask doSync(@Nonnull final Runnable task) {
300321
Objects.requireNonNull(task, "task");
301322
return getServer().getScheduler().runTask(this, task);
302323
}
303324

304325
@Override
305-
public BukkitTask doSyncAfter(@NonNull final Runnable task, final long delay) {
326+
public BukkitTask doSyncAfter(@Nonnull final Runnable task, final long delay) {
306327
Objects.requireNonNull(task, "task");
307328
return getServer().getScheduler().runTaskLater(this, task, delay);
308329
}
309330

310331
@Override
311-
public BukkitTask doSyncRepeat(@NonNull final Runnable task, final long delay, final long period) {
332+
public BukkitTask doSyncRepeat(@Nonnull final Runnable task, final long delay, final long period) {
312333
Objects.requireNonNull(task, "task");
313334
return getServer().getScheduler().runTaskTimer(this, task, delay, period);
314335
}
315336

316337
@Override
317-
public BukkitTask doAsync(@NonNull final Runnable task) {
338+
public BukkitTask doAsync(@Nonnull final Runnable task) {
318339
Objects.requireNonNull(task, "task");
319340
return getServer().getScheduler().runTaskAsynchronously(this, task);
320341
}
321342

322343
@Override
323-
public BukkitTask doAsyncAfter(@NonNull final Runnable task, final long delay) {
344+
public BukkitTask doAsyncAfter(@Nonnull final Runnable task, final long delay) {
324345
Objects.requireNonNull(task, "task");
325346
return getServer().getScheduler().runTaskLaterAsynchronously(this, task, delay);
326347
}
327348

328349
@Override
329-
public BukkitTask doAsyncRepeat(@NonNull final Runnable task, final long delay, final long period) {
350+
public BukkitTask doAsyncRepeat(@Nonnull final Runnable task, final long delay, final long period) {
330351
Objects.requireNonNull(task, "task");
331352
return getServer().getScheduler().runTaskTimerAsynchronously(this, task, delay, period);
332353
}
333354

334355
@Override
335-
public void info(@NonNull final String message) {
356+
public void info(@Nonnull final String message) {
336357
Objects.requireNonNull(message, "message");
337358
Log.info(message);
338359
}
339360

340361
@Override
341-
public void warn(@NonNull final String message) {
362+
public void warn(@Nonnull final String message) {
342363
Objects.requireNonNull(message, "message");
343364
Log.warn(message);
344365
}
345366

346367
@Override
347-
public void error(@NonNull final String message) {
368+
public void error(@Nonnull final String message) {
348369
Objects.requireNonNull(message, "message");
349370
Log.error(message);
350371
}
351372

352373
@Override
353-
public void error(@NonNull final String message, @NonNull final Throwable thrown) {
374+
public void error(@Nonnull final String message, @Nonnull final Throwable thrown) {
354375
Objects.requireNonNull(message, "message");
355376
Objects.requireNonNull(thrown, "thrown");
356377
Log.error(message, thrown);

duels-plugin/src/main/java/me/realized/duels/config/Config.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ public class Config extends AbstractConfiguration<DuelsPlugin> {
8383
@Getter
8484
private List<String> endCommands;
8585
@Getter
86+
private boolean projectileHitMessageEnabled;
87+
@Getter
88+
private List<String> projectileHitMessageTypes;
89+
@Getter
8690
private boolean preventInventoryOpen;
8791
@Getter
8892
private boolean removeEmptyBottle;
@@ -224,6 +228,8 @@ protected void loadValues(FileConfiguration configuration) throws Exception {
224228
startCommands = configuration.getStringList("duel.match.start-commands.commands");
225229
endCommandsEnabled = configuration.getBoolean("duel.match.end-commands.enabled", false);
226230
endCommands = configuration.getStringList("duel.match.end-commands.commands");
231+
projectileHitMessageEnabled = configuration.getBoolean("duel.projectile-hit-message.enabled", true);
232+
projectileHitMessageTypes = configuration.getStringList("duel.projectile-hit-message.types");
227233
preventInventoryOpen = configuration.getBoolean("duel.prevent-inventory-open", true);
228234
removeEmptyBottle = configuration.getBoolean("duel.remove-empty-bottle", true);
229235
preventTpToMatchPlayers = configuration.getBoolean("duel.prevent-teleport-to-match-players", true);

duels-plugin/src/main/java/me/realized/duels/data/ItemData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public ItemData(final ItemStack item) {
112112
lore = StringUtil.reverseColor(meta.getLore());
113113
}
114114

115-
if (!CompatUtil.isPre1_8() && !meta.getItemFlags().isEmpty()) {
115+
if (CompatUtil.hasItemFlag() && !meta.getItemFlags().isEmpty()) {
116116
this.flags = new ArrayList<>();
117117

118118
for (final ItemFlag flag : meta.getItemFlags()) {
@@ -216,7 +216,7 @@ public ItemStack toItemStack() {
216216
meta.setLore(StringUtil.color(lore));
217217
}
218218

219-
if (!CompatUtil.isPre1_8() && flags != null && !flags.isEmpty()) {
219+
if (CompatUtil.hasItemFlag() && flags != null && !flags.isEmpty()) {
220220
for (final String flag : flags) {
221221
meta.addItemFlags(ItemFlag.valueOf(flag));
222222
}

duels-plugin/src/main/java/me/realized/duels/extension/ExtensionClassLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import me.realized.duels.api.extension.DuelsExtension;
1919
import sun.misc.CompoundEnumeration;
2020

21-
class ExtensionClassLoader extends URLClassLoader {
21+
public class ExtensionClassLoader extends URLClassLoader {
2222

2323
private final JarFile jar;
2424
private final Manifest manifest;

0 commit comments

Comments
 (0)