diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 59cede28..cd7f4aee 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,10 +8,20 @@ jobs: runs-on: ubuntu-latest steps: + # Java 11 Builds - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Build with Maven run: mvn -B package --file pom.xml + + # Java 16 Builds + - uses: actions/checkout@v1 + - name: Set up JDK 16 + uses: actions/setup-java@v1 + with: + java-version: 16 + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 141c7052..00000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: java -jdk: - - oraclejdk11 - - openjdk11 -notifications: - email: false -addons: - apt: - packages: - - sshpass -script: mvn clean install -after_success: - - ./travis-upload.sh diff --git a/pom.xml b/pom.xml index 83483900..01cfb186 100644 --- a/pom.xml +++ b/pom.xml @@ -163,9 +163,9 @@ - com.github.TotalFreedomMC + com.github.AtlasMediaGroup TF-LibsDisguises - 48f01cf2fe + 5a340341b0 provided diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java new file mode 100644 index 00000000..ff489582 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java @@ -0,0 +1,97 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.rank.Rank; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.TranslatableComponent; +import net.md_5.bungee.api.chat.hover.content.Text; +import org.bukkit.ChatColor; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) +@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]") +public class Command_seed extends FreedomCommand +{ + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + World world; + + if (args.length > 0) + { + world = server.getWorld(args[0]); + if (world == null) + { + msg("That world could not be found", ChatColor.RED); + return true; + } + } + else + { + // If the sender is a Player, use that world. Otherwise, use the overworld as a fallback. + if (!senderIsConsole) + { + world = playerSender.getWorld(); + } + else + { + world = server.getWorlds().get(0); + } + } + + // If the sender is not a Player, use the usual msg method to + if (senderIsConsole) + { + msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE); + } + else + { + // Gets the seed for later uses + String seed = String.valueOf(world.getSeed()); + + // This is a really stupid hack to get things to play nicely, but it works so I don't give a damn + BaseComponent[] components = {new TranslatableComponent("chat.copy.click")}; + TextComponent seedAsComponent = new TextComponent(seed); + + // Style the message like in vanilla Minecraft. + seedAsComponent.setColor(ChatColor.GREEN.asBungee()); + seedAsComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, seed)); + seedAsComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(components))); + + // Enclose the seed with brackets + TextComponent seedString = new TextComponent("["); + seedString.addExtra(seedAsComponent); + seedString.addExtra("]"); + + // Send the message to the player. + TranslatableComponent response = new TranslatableComponent("commands.seed.success", seedString); + playerSender.spigot().sendMessage(response); + } + return true; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) + { + if (args.length == 1) + { + // Returns a list of worlds on the server and returns it + List worlds = new ArrayList<>(); + for (World world : server.getWorlds()) + { + worlds.add(world.getName()); + } + return worlds; + } + + return null; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index b0ea8bc1..03e0c075 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -1,7 +1,5 @@ package me.totalfreedom.totalfreedommod.player; -import java.util.ArrayList; -import java.util.List; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.caging.CageData; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -16,8 +14,12 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import java.util.ArrayList; +import java.util.List; + public class FPlayer { + public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L; @@ -247,7 +249,7 @@ public class FPlayer public void startArrowShooter(TotalFreedomMod plugin) { this.stopArrowShooter(); - this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L); + this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L); this.mp44Firing = true; } @@ -709,8 +711,11 @@ public class FPlayer @Override public void run() { - Arrow shot = player.launchProjectile(Arrow.class); - shot.setVelocity(shot.getVelocity().multiply(2.0)); + if (player != null) + { + Arrow shot = player.launchProjectile(Arrow.class); + shot.setVelocity(shot.getVelocity().multiply(2.0)); + } } } } \ No newline at end of file