extend event for future use

This commit is contained in:
xGinko 2023-10-04 14:45:55 +02:00
parent 9e284c3edb
commit 7e69efa877
14 changed files with 76 additions and 24 deletions

View File

@ -88,7 +88,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
WrappedVillager wVillager = villagerCache.getOrAdd(villager); WrappedVillager wVillager = villagerCache.getOrAdd(villager);
if (player_has_cooldown_bypass || wVillager.canOptimize(cooldown)) { if (player_has_cooldown_bypass || wVillager.canOptimize(cooldown)) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.COMMAND); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.COMMAND, player);
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (!optimizeEvent.isCancelled()) { if (!optimizeEvent.isCancelled()) {
wVillager.setOptimization(optimizeEvent.getOptimizationType()); wVillager.setOptimization(optimizeEvent.getOptimizationType());

View File

@ -80,7 +80,7 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
WrappedVillager wVillager = villagerCache.getOrAdd(villager); WrappedVillager wVillager = villagerCache.getOrAdd(villager);
if (wVillager.isOptimized()) { if (wVillager.isOptimized()) {
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, player, OptimizationType.COMMAND);
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (!unOptimizeEvent.isCancelled()) { if (!unOptimizeEvent.isCancelled()) {
wVillager.setOptimization(OptimizationType.NONE); wVillager.setOptimization(OptimizationType.NONE);

View File

@ -2,21 +2,25 @@ package me.xginko.villageroptimizer.events;
import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.WrappedVillager;
import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.OptimizationType;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class VillagerOptimizeEvent extends Event implements Cancellable { public class VillagerOptimizeEvent extends Event implements Cancellable {
private static final @NotNull HandlerList handlers = new HandlerList(); private static final @NotNull HandlerList handlers = new HandlerList();
private final @NotNull WrappedVillager wrappedVillager; private final @NotNull WrappedVillager wrappedVillager;
private @NotNull OptimizationType type; private @NotNull OptimizationType type;
private final @Nullable Player whoOptimised;
private boolean isCancelled = false; private boolean isCancelled = false;
public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, boolean isAsync) throws IllegalArgumentException { public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, @Nullable Player whoOptimised, boolean isAsync) throws IllegalArgumentException {
super(isAsync); super(isAsync);
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoOptimised = whoOptimised;
if (type.equals(OptimizationType.NONE)) { if (type.equals(OptimizationType.NONE)) {
throw new IllegalArgumentException("OptimizationType can't be NONE."); throw new IllegalArgumentException("OptimizationType can't be NONE.");
} else { } else {
@ -24,8 +28,9 @@ public class VillagerOptimizeEvent extends Event implements Cancellable {
} }
} }
public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type) throws IllegalArgumentException { public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, @Nullable Player whoOptimised) throws IllegalArgumentException {
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoOptimised = whoOptimised;
if (type.equals(OptimizationType.NONE)) { if (type.equals(OptimizationType.NONE)) {
throw new IllegalArgumentException("OptimizationType can't be NONE."); throw new IllegalArgumentException("OptimizationType can't be NONE.");
} else { } else {
@ -49,6 +54,10 @@ public class VillagerOptimizeEvent extends Event implements Cancellable {
} }
} }
public @Nullable Player getWhoOptimised() {
return whoOptimised;
}
@Override @Override
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
isCancelled = cancel; isCancelled = cancel;

View File

@ -1,30 +1,47 @@
package me.xginko.villageroptimizer.events; package me.xginko.villageroptimizer.events;
import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.WrappedVillager;
import me.xginko.villageroptimizer.enums.OptimizationType;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class VillagerUnoptimizeEvent extends Event implements Cancellable { public class VillagerUnoptimizeEvent extends Event implements Cancellable {
private static final @NotNull HandlerList handlers = new HandlerList(); private static final @NotNull HandlerList handlers = new HandlerList();
private final @NotNull WrappedVillager wrappedVillager; private final @NotNull WrappedVillager wrappedVillager;
private final @NotNull OptimizationType unoptimizeType;
private final @Nullable Player whoUnoptimized;
private boolean isCancelled = false; private boolean isCancelled = false;
public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, boolean isAsync) { public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, @Nullable Player whoUnoptimized, @NotNull OptimizationType unoptimizeType, boolean isAsync) {
super(isAsync); super(isAsync);
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoUnoptimized = whoUnoptimized;
this.unoptimizeType = unoptimizeType;
} }
public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager) { public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, @Nullable Player whoUnoptimized, @NotNull OptimizationType unoptimizeType) {
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoUnoptimized = whoUnoptimized;
this.unoptimizeType = unoptimizeType;
} }
public @NotNull WrappedVillager getWrappedVillager() { public @NotNull WrappedVillager getWrappedVillager() {
return wrappedVillager; return wrappedVillager;
} }
public @Nullable Player getWhoUnoptimized() {
return whoUnoptimized;
}
public @NotNull OptimizationType getWhichTypeUnoptimized() {
return unoptimizeType;
}
@Override @Override
public boolean isCancelled() { public boolean isCancelled() {
return isCancelled; return isCancelled;

View File

@ -108,7 +108,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
if (closestOptimizableVillager == null) return; if (closestOptimizableVillager == null) return;
if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.BLOCK_COOLDOWN.get())) { if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.BLOCK_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.BLOCK, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.BLOCK, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -169,7 +169,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
if (closestOptimizedVillager == null) return; if (closestOptimizedVillager == null) return;
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, player, OptimizationType.BLOCK, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;

View File

@ -84,7 +84,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
if (nametags.contains(name.toLowerCase())) { if (nametags.contains(name.toLowerCase())) {
if (wVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.NAMETAG_COOLDOWN.get())) { if (wVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.NAMETAG_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.NAMETAG, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.NAMETAG, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -112,7 +112,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
} }
} else { } else {
if (wVillager.isOptimized()) { if (wVillager.isOptimized()) {
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, player, OptimizationType.NAMETAG, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;

View File

@ -92,7 +92,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
if (closestOptimizableVillager == null) return; if (closestOptimizableVillager == null) return;
if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.WORKSTATION_COOLDOWN.get())) { if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.WORKSTATION_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.WORKSTATION, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.WORKSTATION, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -157,7 +157,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
if (closestOptimizedVillager == null) return; if (closestOptimizedVillager == null) return;
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, player, OptimizationType.WORKSTATION, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;

View File

@ -88,7 +88,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
WrappedVillager wVillager = villagerCache.getOrAdd(villager); WrappedVillager wVillager = villagerCache.getOrAdd(villager);
if (player_has_cooldown_bypass || wVillager.canOptimize(cooldown)) { if (player_has_cooldown_bypass || wVillager.canOptimize(cooldown)) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.COMMAND); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.COMMAND, player);
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (!optimizeEvent.isCancelled()) { if (!optimizeEvent.isCancelled()) {
wVillager.setOptimization(optimizeEvent.getOptimizationType()); wVillager.setOptimization(optimizeEvent.getOptimizationType());

View File

@ -80,7 +80,7 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
WrappedVillager wVillager = villagerCache.getOrAdd(villager); WrappedVillager wVillager = villagerCache.getOrAdd(villager);
if (wVillager.isOptimized()) { if (wVillager.isOptimized()) {
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, player, OptimizationType.COMMAND);
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (!unOptimizeEvent.isCancelled()) { if (!unOptimizeEvent.isCancelled()) {
wVillager.setOptimization(OptimizationType.NONE); wVillager.setOptimization(OptimizationType.NONE);

View File

@ -2,21 +2,25 @@ package me.xginko.villageroptimizer.events;
import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.WrappedVillager;
import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.OptimizationType;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class VillagerOptimizeEvent extends Event implements Cancellable { public class VillagerOptimizeEvent extends Event implements Cancellable {
private static final @NotNull HandlerList handlers = new HandlerList(); private static final @NotNull HandlerList handlers = new HandlerList();
private final @NotNull WrappedVillager wrappedVillager; private final @NotNull WrappedVillager wrappedVillager;
private @NotNull OptimizationType type; private @NotNull OptimizationType type;
private final @Nullable Player whoOptimised;
private boolean isCancelled = false; private boolean isCancelled = false;
public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, boolean isAsync) throws IllegalArgumentException { public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, @Nullable Player whoOptimised, boolean isAsync) throws IllegalArgumentException {
super(isAsync); super(isAsync);
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoOptimised = whoOptimised;
if (type.equals(OptimizationType.NONE)) { if (type.equals(OptimizationType.NONE)) {
throw new IllegalArgumentException("OptimizationType can't be NONE."); throw new IllegalArgumentException("OptimizationType can't be NONE.");
} else { } else {
@ -24,8 +28,9 @@ public class VillagerOptimizeEvent extends Event implements Cancellable {
} }
} }
public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type) throws IllegalArgumentException { public VillagerOptimizeEvent(@NotNull WrappedVillager wrappedVillager, @NotNull OptimizationType type, @Nullable Player whoOptimised) throws IllegalArgumentException {
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoOptimised = whoOptimised;
if (type.equals(OptimizationType.NONE)) { if (type.equals(OptimizationType.NONE)) {
throw new IllegalArgumentException("OptimizationType can't be NONE."); throw new IllegalArgumentException("OptimizationType can't be NONE.");
} else { } else {
@ -49,6 +54,10 @@ public class VillagerOptimizeEvent extends Event implements Cancellable {
} }
} }
public @Nullable Player getWhoOptimised() {
return whoOptimised;
}
@Override @Override
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
isCancelled = cancel; isCancelled = cancel;

View File

@ -1,30 +1,47 @@
package me.xginko.villageroptimizer.events; package me.xginko.villageroptimizer.events;
import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.WrappedVillager;
import me.xginko.villageroptimizer.enums.OptimizationType;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class VillagerUnoptimizeEvent extends Event implements Cancellable { public class VillagerUnoptimizeEvent extends Event implements Cancellable {
private static final @NotNull HandlerList handlers = new HandlerList(); private static final @NotNull HandlerList handlers = new HandlerList();
private final @NotNull WrappedVillager wrappedVillager; private final @NotNull WrappedVillager wrappedVillager;
private final @NotNull OptimizationType unoptimizeType;
private final @Nullable Player whoUnoptimized;
private boolean isCancelled = false; private boolean isCancelled = false;
public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, boolean isAsync) { public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, @Nullable Player whoUnoptimized, @NotNull OptimizationType unoptimizeType, boolean isAsync) {
super(isAsync); super(isAsync);
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoUnoptimized = whoUnoptimized;
this.unoptimizeType = unoptimizeType;
} }
public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager) { public VillagerUnoptimizeEvent(@NotNull WrappedVillager wrappedVillager, @Nullable Player whoUnoptimized, @NotNull OptimizationType unoptimizeType) {
this.wrappedVillager = wrappedVillager; this.wrappedVillager = wrappedVillager;
this.whoUnoptimized = whoUnoptimized;
this.unoptimizeType = unoptimizeType;
} }
public @NotNull WrappedVillager getWrappedVillager() { public @NotNull WrappedVillager getWrappedVillager() {
return wrappedVillager; return wrappedVillager;
} }
public @Nullable Player getWhoUnoptimized() {
return whoUnoptimized;
}
public @NotNull OptimizationType getWhichTypeUnoptimized() {
return unoptimizeType;
}
@Override @Override
public boolean isCancelled() { public boolean isCancelled() {
return isCancelled; return isCancelled;

View File

@ -114,7 +114,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
if (closestOptimizableVillager == null) return; if (closestOptimizableVillager == null) return;
if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.BLOCK_COOLDOWN.get())) { if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.BLOCK_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.BLOCK, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.BLOCK, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -176,7 +176,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
if (closestOptimizedVillager == null) return; if (closestOptimizedVillager == null) return;
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, player, OptimizationType.BLOCK, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;

View File

@ -90,7 +90,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
if (nametags.contains(name.toLowerCase())) { if (nametags.contains(name.toLowerCase())) {
if (wVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.NAMETAG_COOLDOWN.get())) { if (wVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.NAMETAG_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.NAMETAG, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(wVillager, OptimizationType.NAMETAG, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -119,7 +119,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
} }
} else { } else {
if (wVillager.isOptimized()) { if (wVillager.isOptimized()) {
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(wVillager, player, OptimizationType.NAMETAG, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;

View File

@ -98,7 +98,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
if (closestOptimizableVillager == null) return; if (closestOptimizableVillager == null) return;
if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.WORKSTATION_COOLDOWN.get())) { if (closestOptimizableVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.WORKSTATION_COOLDOWN.get())) {
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.WORKSTATION, event.isAsynchronous()); VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(closestOptimizableVillager, OptimizationType.WORKSTATION, player, event.isAsynchronous());
VillagerOptimizer.callEvent(optimizeEvent); VillagerOptimizer.callEvent(optimizeEvent);
if (optimizeEvent.isCancelled()) return; if (optimizeEvent.isCancelled()) return;
@ -164,7 +164,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
if (closestOptimizedVillager == null) return; if (closestOptimizedVillager == null) return;
VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, event.isAsynchronous()); VillagerUnoptimizeEvent unOptimizeEvent = new VillagerUnoptimizeEvent(closestOptimizedVillager, player, OptimizationType.WORKSTATION, event.isAsynchronous());
VillagerOptimizer.callEvent(unOptimizeEvent); VillagerOptimizer.callEvent(unOptimizeEvent);
if (unOptimizeEvent.isCancelled()) return; if (unOptimizeEvent.isCancelled()) return;