Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-661 Escalate Ignore developer API #703

Merged
merged 29 commits into from
Jun 29, 2024
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
a7b42a8
Escalate Ignore developer API
Jakubk15 Feb 24, 2024
d0e5775
Add API example
Jakubk15 Feb 27, 2024
002e1de
Remove Action enum and split the events
Jakubk15 Mar 7, 2024
ad72bfb
See previous commit message
Jakubk15 Mar 7, 2024
b66caad
Remove useless javadocs, remove PurgeEvent
Jakubk15 Mar 21, 2024
5a4237f
Merge branch 'master' into add-ignore-api
Jakubk15 Mar 21, 2024
2b6203f
Move events to IgnoreService implementation.
Jakubk15 Mar 21, 2024
817ff22
Add API listener example
Jakubk15 Mar 21, 2024
a531702
Merge branch 'refs/heads/master' into add-ignore-api
Jakubk15 Apr 20, 2024
725e2c4
Merge remote-tracking branch 'refs/remotes/origin/master' into add-ig…
Jakubk15 May 26, 2024
5d69955
Create IgnoreService and IgnoreRepository, use IgnoreService for hand…
Jakubk15 Jun 10, 2024
c43b518
Update IgnoreRepositoryOrmLite.java
Jakubk15 Jun 10, 2024
9b9616a
Merge branch 'master' into add-ignore-api
Jakubk15 Jun 10, 2024
b59240d
Update eternalcore-core/src/main/java/com/eternalcode/core/feature/ig…
Jakubk15 Jun 10, 2024
a0a46bb
Use package-private access modifier for IgnoreRepository, mark purgeA…
Jakubk15 Jun 10, 2024
f62134a
Add more examples
Jakubk15 Jun 10, 2024
ce1fde5
Merge remote-tracking branch 'origin/add-ignore-api' into add-ignore-api
Jakubk15 Jun 10, 2024
5327f83
Update eternalcore-core/src/main/java/com/eternalcode/core/feature/ig…
Jakubk15 Jun 11, 2024
b24b492
Update eternalcore-core/src/main/java/com/eternalcode/core/feature/ig…
Jakubk15 Jun 11, 2024
d0a0a29
Update eternalcore-core/src/main/java/com/eternalcode/core/feature/ig…
Jakubk15 Jun 11, 2024
de25cc2
Merge branch 'master' into add-ignore-api
vLuckyyy Jun 20, 2024
16c73ea
Merge branch 'refs/heads/master' into add-ignore-api
Jakubk15 Jun 22, 2024
5aa9a99
Set events to be sync, simplify return statements. Add missing annota…
Jakubk15 Jun 22, 2024
ad30166
Merge branch 'master' into add-ignore-api
vLuckyyy Jun 23, 2024
d0b6efa
Add javadocs, limit class access
Jakubk15 Jun 23, 2024
f4a3824
by -> requester
Rollczi Jun 24, 2024
27a0403
Merge branch 'master' into add-ignore-api
vLuckyyy Jun 29, 2024
a77272b
Remove redundant spaces
vLuckyyy Jun 29, 2024
7f34c48
Remove redundant spaces
vLuckyyy Jun 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import com.eternalcode.example.feature.catboy.CatBoyListener;
import com.eternalcode.example.feature.home.ApiHomeCommand;
import com.eternalcode.example.feature.home.ApiHomeListener;
import com.eternalcode.example.feature.ignore.ApiIgnoreCommand;
import com.eternalcode.example.feature.ignore.ApiIgnoreListener;
import com.eternalcode.example.feature.jail.ApiJailCommand;
import com.eternalcode.example.feature.jail.ApiJailListener;
import com.eternalcode.example.feature.privatechat.ApiPrivateChatListener;
Expand Down Expand Up @@ -41,11 +43,12 @@ public void onEnable() {
.message(LiteMessages.MISSING_PERMISSIONS, input -> "You don't have permission to execute this command!")

.commands(
new ApiSpawnCommand(provide.getSpawnService()),
new ApiAfkCommand(provide.getAfkService()),
new ApiRandomTeleportCommand(provide.getRandomTeleportService()),
new ApiIgnoreCommand(provide.getIgnoreService()),
new ApiJailCommand(provide.getJailService()),
new ApiRandomTeleportCommand(provide.getRandomTeleportService()),
new ApiSpawnCommand(provide.getSpawnService()),
new ApiRandomTeleportCommand(provide.getRandomTeleportService()),
new ApiHomeCommand(provide.getHomeService())
)

Expand All @@ -57,8 +60,9 @@ public void onEnable() {
new ApiRandomTeleportListener(provide.getRandomTeleportService()),
new ApiPrivateChatListener(server),
new ApiRandomTeleportListener(provide.getRandomTeleportService()),
new ApiHomeListener(server),
new ApiJailListener(server),
new ApiHomeListener(server)
new ApiIgnoreListener()
).forEach(listener -> server.getPluginManager().registerEvents(listener, this));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.eternalcode.example.feature.ignore;

import com.eternalcode.core.feature.ignore.IgnoreService;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import org.bukkit.entity.Player;

@Command(name = "api ignore")
public class ApiIgnoreCommand {

private final IgnoreService ignoreService;

public ApiIgnoreCommand(IgnoreService ignoreService) {
this.ignoreService = ignoreService;
}

@Execute(name = "ignore")
void executeIgnore(@Context Player player, @Arg Player target) {
this.ignoreService.ignore(player.getUniqueId(), target.getUniqueId());
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
String message = "You have ignored %s via eternalcore api bridge!";
player.sendMessage(String.format(message, target.getName()));
}

@Execute(name = "unignore")
void executeUnignore(@Context Player player, @Arg Player target) {
this.ignoreService.unIgnore(player.getUniqueId(), target.getUniqueId());
String message = "You have unignored %s via eternalcore api bridge!";
player.sendMessage(String.format(message, target.getName()));
}

@Execute(name = "ignoreall")
void executeIgnoreAll(@Context Player player) {
this.ignoreService.ignoreAll(player.getUniqueId());
player.sendMessage("You have ignored all players via eternalcore api bridge!");
}

@Execute(name = "unignoreall")
void executeUnignoreAll(@Context Player player) {
this.ignoreService.unIgnoreAll(player.getUniqueId());
player.sendMessage("You have unignored all players via eternalcore api bridge!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package com.eternalcode.example.feature.ignore;

import com.eternalcode.core.feature.ignore.event.IgnoreAllEvent;
import com.eternalcode.core.feature.ignore.event.IgnoreEvent;
import com.eternalcode.core.feature.ignore.event.UnIgnoreAllEvent;
import com.eternalcode.core.feature.ignore.event.UnIgnoreEvent;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ApiIgnoreListener implements Listener {

/**
* This method is called when a player is ignored.
**/

@EventHandler
public void onIgnore(IgnoreEvent event) {
UUID requesterId = event.getRequester();
UUID targetId = event.getTarget();
Player requester = Bukkit.getPlayer(requesterId);
Player target = Bukkit.getPlayer(targetId);

if (requester == null || target == null) {
return;
}

requester.playSound(requester.getLocation(), Sound.BLOCK_PORTAL_TRAVEL, 1.0F, 1.0F);
target.getWorld().createExplosion(target.getLocation(), 2.0F);
}

/**
* This method is called when a player ignores all players
**/

@EventHandler
public void onIgnoreAll(IgnoreAllEvent event) {
UUID requesterId = event.getRequester();
Player requester = Bukkit.getPlayer(requesterId);

if (requester == null) {
return;
}

requester.playSound(requester.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0F, 1.0F);
requester.getWorld().strikeLightning(requester.getLocation());
}

/**
* This method is called when a player is unignored.
**/

@EventHandler
public void onUnIgnore(UnIgnoreEvent event) {
UUID requesterId = event.getRequester();
UUID targetId = event.getTarget();
Player requester = Bukkit.getPlayer(requesterId);
Player target = Bukkit.getPlayer(targetId);

if (requester == null || target == null) {
return;
}

requester.playSound(requester.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0F, 1.0F);
target.getWorld().strikeLightning(target.getLocation());
}

/**
* This method is called when a player unignores all players
**/

@EventHandler
public void onUnIgnoreAll(UnIgnoreAllEvent event) {
UUID requesterId = event.getRequester();
Player requester = Bukkit.getPlayer(requesterId);

if (requester == null) {
return;
}

requester.playSound(requester.getLocation(), Sound.BLOCK_PORTAL_TRIGGER, 1.0F, 1.0F);
requester.getWorld().createExplosion(requester.getLocation(), 2.0F);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.eternalcode.core.feature.jail.JailService;
import com.eternalcode.core.feature.language.LanguageService;
import com.eternalcode.core.feature.privatechat.PrivateChatService;
import com.eternalcode.core.feature.ignore.IgnoreService;
import com.eternalcode.core.feature.randomteleport.RandomTeleportService;
import com.eternalcode.core.feature.spawn.SpawnService;
import com.eternalcode.core.feature.teleport.TeleportService;
Expand All @@ -15,21 +16,23 @@ public interface EternalCoreApi {

AfkService getAfkService();

SpawnService getSpawnService();

CatboyService getCatboyService();

TeleportService getTeleportService();
IgnoreService getIgnoreService();

RandomTeleportService getRandomTeleportService();
HomeService getHomeService();

JailService getJailService();

LanguageService getLanguageService();

PrivateChatService getPrivateChatService();

WarpService getWarpService();
RandomTeleportService getRandomTeleportService();

HomeService getHomeService();
SpawnService getSpawnService();

JailService getJailService();
TeleportService getTeleportService();

LanguageService getLanguageService();
WarpService getWarpService();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.eternalcode.core.feature.ignore;

import java.util.UUID;
import java.util.concurrent.CompletableFuture;

public interface IgnoreService {

CompletableFuture<Boolean> isIgnored(UUID requester, UUID target);

CompletableFuture<Boolean> ignore(UUID requester, UUID target);

CompletableFuture<Boolean> ignoreAll(UUID requester);

CompletableFuture<Boolean> unIgnore(UUID requester, UUID target);

CompletableFuture<Boolean> unIgnoreAll(UUID requester);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.eternalcode.core.feature.ignore.event;

import java.util.UUID;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
* This event is called when a player wants to ignore all players.
*/
public class IgnoreAllEvent extends Event implements Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();

private final UUID requester;
private boolean cancelled;

public IgnoreAllEvent(UUID requester) {
super(false);
this.requester = requester;
}

/**
* @return the player executing the ignore all action.
*/
public UUID getRequester() {
return this.requester;
}

@Override
public boolean isCancelled() {
vLuckyyy marked this conversation as resolved.
Show resolved Hide resolved
return this.cancelled;
}

@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}

@NotNull
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}

public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.eternalcode.core.feature.ignore.event;

import java.util.UUID;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
* This event is called when a player wants to ignore another player.
*/
public class IgnoreEvent extends Event implements Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();

private final UUID requester;
private final UUID target;
private boolean cancelled;

public IgnoreEvent(UUID requester, UUID target) {
super(false);
this.requester = requester;
this.target = target;
}

/**
* @return the player who requested the ignore action.
*/
public UUID getRequester() {
return this.requester;
}

/**
* @return the player who is being ignored.
*/
public UUID getTarget() {
return this.target;
}

@Override
public boolean isCancelled() {
vLuckyyy marked this conversation as resolved.
Show resolved Hide resolved
return this.cancelled;
}

@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}

@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}

public static HandlerList getHandlerList() {
return HANDLER_LIST;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.eternalcode.core.feature.ignore.event;

import java.util.UUID;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
* This event is called when a player ignores all other players.
*/
public class UnIgnoreAllEvent extends Event implements Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();

private final UUID requester;
private boolean cancelled;

public UnIgnoreAllEvent(UUID requester) {
super(false);
this.requester = requester;
}

/**
* @return the player executing the unignore all action.
*/
public UUID getRequester() {
return this.requester;
}

@Override
public boolean isCancelled() {
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
return this.cancelled;
}

@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}

@NotNull
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}

public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}
Loading