Skip to content
Open
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
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>simplexity</groupId>
<artifactId>SimpleFly</artifactId>
<version>0.0.1</version>
<version>1.0.0</version>
<packaging>jar</packaging>

<name>SimpleFly</name>
Expand Down Expand Up @@ -64,7 +64,7 @@
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.20.2-R0.1-SNAPSHOT</version>
<version>1.21.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand Down
65 changes: 0 additions & 65 deletions src/main/java/simplexity/simplefly/ConfigValues.java

This file was deleted.

18 changes: 18 additions & 0 deletions src/main/java/simplexity/simplefly/Constants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package simplexity.simplefly;

import org.bukkit.NamespacedKey;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;

public class Constants {



public static final NamespacedKey FLY_STATUS_KEY = new NamespacedKey(SimpleFly.getInstance(), "flystatus");
public static final Permission FLY_PERMISSION = new Permission("simplefly.fly", "Allows a player to toggle their own flight", PermissionDefault.OP);
public static final Permission FLY_SPEED_PERMISSION = new Permission("simplefly.flyspeed", "Allows a player to set their own flight speed", PermissionDefault.OP);
public static final Permission FLY_OTHERS_PERMISSION = new Permission("simplefly.others.fly", "Allows a player to toggle other players' flight", PermissionDefault.OP);
public static final Permission FLY_SPEED_OTHERS_PERMISSION = new Permission("simplefly.others.flyspeed", "Allows a player to set other players' flight speed", PermissionDefault.OP);
public static final Permission FLY_RELOAD_PERMISSION = new Permission("simplefly.reload", "Allows a player to reload the SimpleFly configuration", PermissionDefault.OP);

}
54 changes: 24 additions & 30 deletions src/main/java/simplexity/simplefly/FlyListeners.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package simplexity.simplefly;

import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
Expand All @@ -11,74 +12,67 @@
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import simplexity.simplefly.config.ConfigHandler;
import simplexity.simplefly.config.LocaleMessage;

public class FlyListeners implements Listener {
private static final NamespacedKey flyStatus = Util.flyStatus;

private static final NamespacedKey flyStatus = Constants.FLY_STATUS_KEY;

@EventHandler
public void onPlayerLogin(PlayerJoinEvent joinEvent) {
if (!ConfigValues.sessionPersistentFlight) {
if (!ConfigHandler.getInstance().isFlyPersistsSessions()) {
return;
}
Player player = joinEvent.getPlayer();
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
Bukkit.getScheduler().runTaskLater(SimpleFly.getInstance(), () -> {
boolean flyEnabled = playerPDC.getOrDefault(flyStatus, PersistentDataType.BOOLEAN, false);
if (flyEnabled && player.hasPermission(Util.flyPermission)) {
player.setAllowFlight(true);
if (player.getFallDistance() > 0f) {
player.setFlying(true);
}
Util.sendUserMessage(player, ConfigValues.flySetOwn, ConfigValues.enabled, null);
if (flyEnabled && player.hasPermission(Constants.FLY_PERMISSION)) {
FlyLogic.flyEnable(player);
player.sendRichMessage(LocaleMessage.FLY_SET_OWN.getMessage(),
Placeholder.parsed("value", LocaleMessage.ENABLED.getMessage()));
return;
}
if (flyEnabled && !player.hasPermission(Util.flyPermission)) {
playerPDC.set(flyStatus, PersistentDataType.BOOLEAN, false);
if (flyEnabled && !player.hasPermission(Constants.FLY_PERMISSION)) {
FlyLogic.disablePDC(player);
}
}, 10);
}

@EventHandler
public void onWorldChange(PlayerChangedWorldEvent worldEvent) {
if (!ConfigValues.worldChangePersistentFlight) return;
if (!ConfigHandler.getInstance().isFlyPersistsWorldChange()) return;
Player player = worldEvent.getPlayer();
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
Boolean flyEnabled = playerPDC.getOrDefault(flyStatus, PersistentDataType.BOOLEAN, false);
if (flyEnabled) {
player.setAllowFlight(true);
if (player.getFallDistance() > 0f) {
player.setFlying(true);
}
FlyLogic.flyEnable(player);
}
}

@EventHandler
public void onRespawn(PlayerRespawnEvent respawnEvent) {
if (!ConfigValues.respawnPersistentFlight) return;
if (!ConfigHandler.getInstance().isFlyPersistsRespawn()) return;
Player player = respawnEvent.getPlayer();
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
Boolean flyEnabled = playerPDC.getOrDefault(flyStatus, PersistentDataType.BOOLEAN, false);
if (flyEnabled) {
player.setAllowFlight(true);
FlyLogic.flyEnable(player);
}
}

@EventHandler
public void onGamemodeChange(PlayerGameModeChangeEvent gameModeChangeEvent) {
if (!ConfigValues.gamemodeChangePersistentFlight) return;
public void onGameModeChange(PlayerGameModeChangeEvent gameModeChangeEvent) {
if (!ConfigHandler.getInstance().isFlyPersistsGameMode()) return;
Player player = gameModeChangeEvent.getPlayer();
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
Bukkit.getScheduler().runTaskLater(SimpleFly.getInstance(), () -> {
Boolean flyEnabled = playerPDC.getOrDefault(flyStatus, PersistentDataType.BOOLEAN, false);
if (flyEnabled) {
player.setAllowFlight(true);
if (player.getFallDistance() > 0f) {
player.setFlying(true);
}
FlyLogic.flyEnable(player);
}
}, 10);
}



}
44 changes: 35 additions & 9 deletions src/main/java/simplexity/simplefly/FlyLogic.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,54 @@
package simplexity.simplefly;

import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;

public class FlyLogic {

private static final NamespacedKey flyStatus = Util.flyStatus;
private static final NamespacedKey flyStatus = Constants.FLY_STATUS_KEY;

public static boolean flyEnabled(Player player) {
public static boolean flyToggle(Player player) {
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
Boolean flyState = playerPDC.get(flyStatus, PersistentDataType.BOOLEAN);
//If they have no set flystate, or it's off, set true, set flying
if (flyState == null || !flyState) {
playerPDC.set(flyStatus, PersistentDataType.BOOLEAN, true);
player.setAllowFlight(true);
player.setFlying(true);
flyEnable(player);
return true;
}
//If their current flystate is on, set false
playerPDC.set(flyStatus, PersistentDataType.BOOLEAN, false);
flyDisable(player);
return false;
}

public static void setFlyStatus(Player player, boolean enable){
if (enable && willFall(player)) player.setFlying(true);
player.getPersistentDataContainer().set(flyStatus, PersistentDataType.BOOLEAN, enable);
player.setAllowFlight(enable);
}
public static void flyEnable(Player player) {
player.getPersistentDataContainer().set(flyStatus, PersistentDataType.BOOLEAN, true);
player.setAllowFlight(true);
if (willFall(player)) {
player.setFlying(true);
}
}

public static void flyDisable(Player player){
player.getPersistentDataContainer().set(flyStatus, PersistentDataType.BOOLEAN, false);
player.setAllowFlight(false);
player.setFlying(false);
return false;
}

public static void disablePDC(Player player){
player.getPersistentDataContainer().set(flyStatus, PersistentDataType.BOOLEAN, false);
}

private static boolean willFall(Player player){
Location location = player.getLocation();
Block blockBelow = location.clone().add(0, -1, 0).getBlock();
Block blockTwoBelow = location.clone().add(0, -2, 0).getBlock();
return blockBelow.isPassable() && blockTwoBelow.isPassable();
}
}
36 changes: 19 additions & 17 deletions src/main/java/simplexity/simplefly/SimpleFly.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,43 @@
package simplexity.simplefly;

import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Server;
import org.bukkit.plugin.java.JavaPlugin;
import simplexity.simplefly.commands.Fly;
import simplexity.simplefly.commands.FlyReload;
import simplexity.simplefly.commands.FlySpeed;
import simplexity.simplefly.config.ConfigHandler;

@SuppressWarnings("UnstableApiUsage")
public final class SimpleFly extends JavaPlugin {

private static final MiniMessage miniMessage = MiniMessage.miniMessage();
private static SimpleFly instance;
private static Server flyServer;


public static SimpleFly getInstance() {
return instance;
}

public static MiniMessage getMiniMessage() {
return miniMessage;
}

public static Server getFlyServer() {
return flyServer;
}



@Override
public void onEnable() {
instance = this;
flyServer = this.getServer();
this.saveDefaultConfig();
ConfigValues.reloadConfigValues();
ConfigHandler.getInstance().reloadConfigValues();
this.getServer().getPluginManager().registerEvents(new simplexity.simplefly.FlyListeners(), this);
this.getCommand("fly").setExecutor(new Fly());
this.getCommand("flyspeed").setExecutor(new FlySpeed());
this.getCommand("flyreload").setExecutor(new FlyReload());
this.getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, commands -> {
commands.registrar().register(Fly.createCommand().build());
commands.registrar().register(FlyReload.createCommand().build());
commands.registrar().register(FlySpeed.createCommand().build());
});
this.getServer().getPluginManager().addPermission(Constants.FLY_PERMISSION);
this.getServer().getPluginManager().addPermission(Constants.FLY_OTHERS_PERMISSION);
this.getServer().getPluginManager().addPermission(Constants.FLY_SPEED_PERMISSION);
this.getServer().getPluginManager().addPermission(Constants.FLY_SPEED_OTHERS_PERMISSION);
this.getServer().getPluginManager().addPermission(Constants.FLY_RELOAD_PERMISSION);
}

}
38 changes: 0 additions & 38 deletions src/main/java/simplexity/simplefly/Util.java

This file was deleted.

21 changes: 0 additions & 21 deletions src/main/java/simplexity/simplefly/commands/CommandUtils.java

This file was deleted.

Loading