Skip to content

Commit

Permalink
Merge branch 'WiIIiam278:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
MSCMDD authored Jun 26, 2024
2 parents 8e51176 + 052e9c3 commit 8ee169c
Show file tree
Hide file tree
Showing 105 changed files with 2,894 additions and 3,202 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ subprojects {
}

// API publishing
if (['common','bukkit'].contains(project.name)) {
if (['common', 'bukkit'].contains(project.name)) {
java {
withSourcesJar()
withJavadocJar()
Expand Down
6 changes: 3 additions & 3 deletions bukkit/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
dependencies {
implementation project(path: ':common')

implementation 'net.kyori:adventure-platform-bukkit:4.3.2'
implementation 'net.kyori:adventure-platform-bukkit:4.3.3'
implementation 'io.papermc:paperlib:1.0.8'
implementation 'space.arim.morepaperlib:morepaperlib:0.4.4'
implementation 'net.william278.cloplib:cloplib-bukkit:1.0.6'
Expand All @@ -12,7 +12,7 @@ dependencies {
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
compileOnly 'org.projectlombok:lombok:1.18.32'
compileOnly 'org.jetbrains:annotations:24.1.0'
compileOnly 'com.google.guava:guava:33.2.0-jre'
compileOnly 'com.google.guava:guava:33.2.1-jre'
compileOnly 'net.william278:minedown:1.8.2'
compileOnly 'commons-io:commons-io:2.16.1'
compileOnly 'net.william278:huskhomes:4.4.5'
Expand All @@ -24,7 +24,7 @@ dependencies {

testImplementation 'com.github.seeseemelk:MockBukkit-v1.17:1.13.0'
testImplementation 'net.william278:minedown:1.8.2'
testImplementation 'net.kyori:adventure-platform-bukkit:4.3.2'
testImplementation 'net.kyori:adventure-platform-bukkit:4.3.3'
testImplementation 'org.apache.commons:commons-text:1.12.0'
testImplementation "org.xerial:sqlite-jdbc:$sqlite_driver_version"
testImplementation "com.mysql:mysql-connector-j:$mysql_driver_version"
Expand Down
75 changes: 48 additions & 27 deletions bukkit/src/main/java/net/william278/husktowns/BukkitHuskTowns.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,10 @@
import org.jetbrains.annotations.TestOnly;
import space.arim.morepaperlib.MorePaperLib;
import space.arim.morepaperlib.commands.CommandRegistration;
import space.arim.morepaperlib.scheduling.AsynchronousScheduler;
import space.arim.morepaperlib.scheduling.AttachedScheduler;
import space.arim.morepaperlib.scheduling.GracefulScheduling;
import space.arim.morepaperlib.scheduling.RegionalScheduler;

import java.io.File;
import java.nio.file.Path;
Expand All @@ -85,11 +88,13 @@
@NoArgsConstructor
@Getter
public class BukkitHuskTowns extends JavaPlugin implements HuskTowns, BukkitTask.Supplier,
PluginMessageListener, BukkitEventDispatcher {
PluginMessageListener, BukkitEventDispatcher {


private AudienceProvider audiences;
private MorePaperLib paperLib;
private AsynchronousScheduler asyncScheduler;
private RegionalScheduler regionalScheduler;
private final Set<Town> towns = Sets.newConcurrentHashSet();
private final Map<String, ClaimWorld> claimWorlds = Maps.newConcurrentMap();
private final Map<UUID, Deque<Invite>> invites = Maps.newConcurrentMap();
Expand Down Expand Up @@ -141,9 +146,6 @@ private BukkitHuskTowns(@NotNull JavaPluginLoader loader, @NotNull PluginDescrip
public void onLoad() {
// Load configuration and subsystems
this.loadConfig();
if (this.settings.getGeneral().isDoAdvancements()) {
loadAdvancements();
}

// Register hooks
this.hookManager = new BukkitHookManager(this);
Expand Down Expand Up @@ -187,6 +189,11 @@ public void onEnable() {
this.paperLib = new MorePaperLib(this);
this.audiences = BukkitAudiences.create(this);

// Load advancements
if (this.settings.getGeneral().isDoAdvancements()) {
loadAdvancements();
}

// Prepare the database and networking system
this.database = this.loadDatabase();
if (!database.hasLoaded()) {
Expand All @@ -198,7 +205,6 @@ public void onEnable() {
// Load manager and broker
this.manager = new Manager(this);
this.broker = this.loadBroker();

hookManager.registerOnEnable();

// Load towns and claim worlds
Expand All @@ -217,8 +223,6 @@ public void onEnable() {
initializeMetrics();
log(Level.INFO, "Enabled HuskTowns v" + getVersion());
checkForUpdates();

runAsyncDelayed(hookManager::registerDelayed, 20L);
}

@Override
Expand Down Expand Up @@ -262,10 +266,10 @@ public Optional<Broker> getMessageBroker() {
@NotNull
public List<World> getWorlds() {
return Bukkit.getWorlds().stream()
.map(world -> World.of(
world.getUID(), world.getName(),
world.getEnvironment().name().toLowerCase())
).toList();
.map(world -> World.of(
world.getUID(), world.getName(),
world.getEnvironment().name().toLowerCase())
).toList();
}

@Override
Expand All @@ -284,8 +288,8 @@ public void registerCommands() {
@Override
public double getHighestBlockAt(@NotNull Position position) {
final org.bukkit.World world = Bukkit.getWorld(position.getWorld().getName()) == null
? Bukkit.getWorld(position.getWorld().getUuid())
: Bukkit.getWorld(position.getWorld().getName());
? Bukkit.getWorld(position.getWorld().getUuid())
: Bukkit.getWorld(position.getWorld().getName());
if (world == null) {
return 64;
}
Expand All @@ -308,14 +312,14 @@ public Version getVersion() {
@NotNull
public List<? extends OnlineUser> getOnlineUsers() {
return Bukkit.getOnlinePlayers().stream()
.map(p -> BukkitUser.adapt(p, this))
.toList();
.map(p -> BukkitUser.adapt(p, this))
.toList();
}

@Override
public double getHighestYAt(double x, double z, @NotNull World world) {
final org.bukkit.World bukkitWorld = Bukkit.getWorld(world.getName()) == null
? Bukkit.getWorld(world.getUuid()) : Bukkit.getWorld(world.getName());
? Bukkit.getWorld(world.getUuid()) : Bukkit.getWorld(world.getName());
if (bukkitWorld == null) {
return 64D;
}
Expand All @@ -334,19 +338,36 @@ public void dispatchCommand(@NotNull String command) {
@Override
public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] message) {
if (broker != null && broker instanceof PluginMessageBroker pluginMessenger
&& getSettings().getCrossServer().getBrokerType() == Broker.Type.PLUGIN_MESSAGE) {
&& getSettings().getCrossServer().getBrokerType() == Broker.Type.PLUGIN_MESSAGE) {
pluginMessenger.onReceive(channel, BukkitUser.adapt(player, this), message);
}
}

@NotNull
public CommandRegistration getCommandRegistrar() {
return paperLib.commandRegistration();
}

@NotNull
public GracefulScheduling getScheduler() {
return paperLib.scheduling();
}

@NotNull
public CommandRegistration getCommandRegistrar() {
return paperLib.commandRegistration();
public AsynchronousScheduler getAsyncScheduler() {
return asyncScheduler == null
? asyncScheduler = getScheduler().asyncScheduler() : asyncScheduler;
}

@NotNull
public RegionalScheduler getSyncScheduler() {
return regionalScheduler == null
? regionalScheduler = getScheduler().globalRegionalScheduler() : regionalScheduler;
}

@NotNull
public AttachedScheduler getUserSyncScheduler(@NotNull OnlineUser user) {
return getScheduler().entitySpecificScheduler(((BukkitUser) user).getPlayer());
}

@Override
Expand All @@ -365,19 +386,19 @@ private void initializeMetrics() {
try {
final Metrics metrics = new Metrics(this, BSTATS_PLUGIN_ID);
metrics.addCustomChart(new SimplePie("bungee_mode",
() -> settings.getCrossServer().isEnabled() ? "true" : "false"));
() -> settings.getCrossServer().isEnabled() ? "true" : "false"));
metrics.addCustomChart(new SimplePie("language",
() -> settings.getLanguage().toLowerCase()));
() -> settings.getLanguage().toLowerCase()));
metrics.addCustomChart(new SimplePie("database_type",
() -> settings.getDatabase().getType().name().toLowerCase()));
() -> settings.getDatabase().getType().name().toLowerCase()));
metrics.addCustomChart(new SimplePie("using_economy",
() -> getEconomyHook().isPresent() ? "true" : "false"));
() -> getEconomyHook().isPresent() ? "true" : "false"));
metrics.addCustomChart(new SimplePie("using_map",
() -> getMapHook().isPresent() ? "true" : "false"));
() -> getMapHook().isPresent() ? "true" : "false"));
getMapHook().ifPresent(hook -> metrics.addCustomChart(new SimplePie("map_type",
() -> hook.getHookInfo().id().toLowerCase())));
() -> hook.getHookInfo().id().toLowerCase())));
getMessageBroker().ifPresent(broker -> metrics.addCustomChart(new SimplePie("messenger_type",
() -> settings.getCrossServer().getBrokerType().name().toLowerCase())));
() -> settings.getCrossServer().getBrokerType().name().toLowerCase())));
} catch (Exception e) {
log(Level.WARNING, "Failed to initialize plugin metrics", e);
}
Expand All @@ -402,7 +423,7 @@ public void awardAdvancement(@NotNull Advancement advancement, @NotNull OnlineUs
if (progress.isDone()) {
return;
}
getPlugin().runSync(() -> bukkitAdvancement.getCriteria().forEach(progress::awardCriteria));
getPlugin().runSync(() -> bukkitAdvancement.getCriteria().forEach(progress::awardCriteria), user);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ public OnlineUser getOnlineUser(@NotNull Player player) {
public Position getPosition(@NotNull Location location) {
assert location.getWorld() != null;
return Position.at(location.getX(), location.getY(), location.getZ(),
getWorld(location.getWorld()), location.getYaw(), location.getPitch());
getWorld(location.getWorld()), location.getYaw(), location.getPitch());
}

/**
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

package net.william278.husktowns.command;

import me.lucko.commodore.CommodoreProvider;
import net.william278.husktowns.BukkitHuskTowns;
import net.william278.husktowns.user.BukkitUser;
import org.bukkit.command.CommandSender;
Expand Down Expand Up @@ -47,7 +46,7 @@ public BukkitCommand(@NotNull Command command, @NotNull BukkitHuskTowns plugin)
@Override
public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
this.command.execute(
sender instanceof Player player ? BukkitUser.adapt(player, plugin) : plugin.getConsole(), args
sender instanceof Player player ? BukkitUser.adapt(player, plugin) : plugin.getConsole(), args
);
return true;
}
Expand All @@ -57,7 +56,7 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
public List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias,
@NotNull String[] args) throws IllegalArgumentException {
return this.command.getSuggestions(
sender instanceof Player player ? BukkitUser.adapt(player, plugin) : plugin.getConsole(), args
sender instanceof Player player ? BukkitUser.adapt(player, plugin) : plugin.getConsole(), args
);
}

Expand All @@ -67,27 +66,22 @@ public void register() {

// Register permissions
this.registerPermissions(command, plugin);

// Register commodore TAB completion
if (CommodoreProvider.isSupported() && plugin.getSettings().getGeneral().isBrigadierTabCompletion()) {
BrigadierUtil.registerCommodore(plugin, this, command);
}
}

private void registerPermissions(@NotNull Command command, @NotNull BukkitHuskTowns plugin) {
// Register permissions
final PluginManager manager = plugin.getServer().getPluginManager();
command.getChildren()
.stream().map(child -> new Permission(child.getPermission(), child.getUsage(),
child.isOperatorCommand() ? PermissionDefault.OP : PermissionDefault.TRUE))
.forEach(manager::addPermission);
.stream().map(child -> new Permission(child.getPermission(), child.getUsage(),
child.isOperatorCommand() ? PermissionDefault.OP : PermissionDefault.TRUE))
.forEach(manager::addPermission);
manager.addPermission(new Permission(command.getPermission(), "/" + command.getName(),
command.isOperatorCommand() ? PermissionDefault.OP : PermissionDefault.TRUE));
command.isOperatorCommand() ? PermissionDefault.OP : PermissionDefault.TRUE));

// Register primary permission
final Map<String, Boolean> childNodes = new HashMap<>();
command.getChildren().forEach(child -> childNodes.put(child.getPermission(), true));
manager.addPermission(new Permission(command.getPermission() + ".*", command.getUsage(),
PermissionDefault.FALSE, childNodes));
PermissionDefault.FALSE, childNodes));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class ClaimEvent extends PlayerEvent implements IClaimEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class MemberJoinEvent extends PlayerEvent implements IMemberJoinEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class MemberLeaveEvent extends Event implements IMemberLeaveEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class MemberRoleChangeEvent extends Event implements IMemberRoleChangeEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class PlayerEnterTownEvent extends PlayerEvent implements IPlayerEnterTownEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;

/**
* {@inheritDoc}
*/
public class PlayerLeaveTownEvent extends PlayerEvent implements IPlayerLeaveTownEvent, Cancellable {

private static final HandlerList HANDLER_LIST = new HandlerList();
Expand Down
Loading

0 comments on commit 8ee169c

Please sign in to comment.