Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -86,6 +86,7 @@
import net.ess3.provider.providers.ModernPlayerLocaleProvider;
import net.ess3.provider.providers.ModernPotionMetaProvider;
import net.ess3.provider.providers.ModernSignDataProvider;
import net.ess3.provider.providers.ModernSyncCommandsProvider;
import net.ess3.provider.providers.PaperBiomeKeyProvider;
import net.ess3.provider.providers.PaperContainerProvider;
import net.ess3.provider.providers.PaperKnownCommandsProvider;
Expand Down Expand Up @@ -393,7 +394,7 @@ public void onEnable() {
providerFactory.registerProvider(BukkitMaterialTagProvider.class, PaperMaterialTagProvider.class);

// Sync Commands Provider
providerFactory.registerProvider(ReflSyncCommandsProvider.class);
providerFactory.registerProvider(ReflSyncCommandsProvider.class, ModernSyncCommandsProvider.class);

// Persistent Data Provider
providerFactory.registerProvider(ReflPersistentDataProvider.class, ModernPersistentDataProvider.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -595,8 +595,12 @@ public void onPlayerTeleport(final PlayerTeleportEvent event) {
if (tickCountProvider != null && ess.getSettings().isWorldChangePreserveFlying() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_17_R01)) {
if (user.isAuthorized("essentials.fly")) {
//noinspection DataFlowIssue - not real
if (event.getFrom().getWorld() != event.getTo().getWorld() && player.isFlying()) {
user.setFlightTick(tickCountProvider.getTickCount());
if (event.getFrom().getWorld() != event.getTo().getWorld() && player.getAllowFlight()) {
// If the player is not flying but has the ability to fly, we set the sign of the tick count to -1
// Later on in the PlayerChangedWorldEvent, we will set the player's flying state to true if the tick count is positive.
// If the tick count is negative, we simply just set the player's flight ability to true.
final int tick = player.isFlying() ? tickCountProvider.getTickCount() : -tickCountProvider.getTickCount();
user.setFlightTick(tick);
}
}
}
Expand Down Expand Up @@ -778,9 +782,12 @@ public void onPlayerChangedWorldFlyReset(final PlayerChangedWorldEvent event) {
}

final TickCountProvider tickCountProvider = ess.provider(TickCountProvider.class);
if (tickCountProvider != null && user.getFlightTick() == tickCountProvider.getTickCount() && user.isAuthorized("essentials.fly")) {
final int flightTick = user.getFlightTick();
if (tickCountProvider != null && Math.abs(flightTick) == tickCountProvider.getTickCount() && user.isAuthorized("essentials.fly")) {
user.getBase().setAllowFlight(true);
user.getBase().setFlying(true);
if (flightTick > 0) {
user.getBase().setFlying(true);
}
}
user.setFlightTick(-1);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public void setMinSpawnDelay(final CreatureSpawner spawner, final int delay) {
@ProviderTest
public static boolean test() {
try {
CreatureSpawner.class.getDeclaredMethod("setMaxSpawnDelay", int.class);
CreatureSpawner.class.getMethod("setMaxSpawnDelay", int.class);
return true;
} catch (final NoSuchMethodException ignored) {
return false;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.ess3.provider.providers;

import net.ess3.provider.SyncCommandsProvider;
import net.essentialsx.providers.ProviderData;
import net.essentialsx.providers.ProviderTest;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

@ProviderData(description = "1.21.4+ Sync Commands Provider", weight = 1)
public class ModernSyncCommandsProvider implements SyncCommandsProvider {
@Override
public void syncCommands() {
for (final Player player : Bukkit.getOnlinePlayers()) {
player.updateCommands();
}
}

@ProviderTest
public static boolean test() {
try {
// There isn't a real good way to test this, but we can check if the Creaking class exists.
Class.forName("org.bukkit.entity.Creaking");
return true;
} catch (final Throwable ignored) {
return false;
}
}
}
Loading