aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMyles <43725835+MylesAndMore@users.noreply.github.com>2022-12-07 13:59:03 +0000
committerMyles <43725835+MylesAndMore@users.noreply.github.com>2022-12-07 13:59:03 +0000
commit8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2 (patch)
tree644d2d49eab65e669d4b680687ab37efac30a770
parent135a411985ba67f45951c90f67d6c3730f133b0d (diff)
parenteb95848cb47a86e8f21bdcce9afe552f8dc14707 (diff)
downloadTumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.tar.gz
Tumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.tar.bz2
Tumble-8a2c5b0c7c1dc6d1c13517c8bd8c5562dd9334f2.zip
Merge branch 'alphatest' of https://github.com/MylesAndMore/tumble into alphatest
-rw-r--r--README.md1
-rw-r--r--src/main/java/com/MylesAndMore/tumble/EventListener.java16
-rw-r--r--src/main/java/com/MylesAndMore/tumble/Game.java85
-rw-r--r--src/main/java/com/MylesAndMore/tumble/Main.java10
4 files changed, 63 insertions, 49 deletions
diff --git a/README.md b/README.md
index ea3c1d9..fd89174 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ once this list is complete and all bugs are fixed, we *should* be ready for rele
## game realism
- [x] make the shovel in shovels mode not lose any durabilty
+- [ ] make it so that you can't move until the game begins
- [ ] make the game blocks breakable very fast, but **not instantly--very important for balancing!!**
- [ ] add infinite snowballs in the gamemanager for tumble mode
- [ ] make it so that you can't remove any of the game items from your inventory
diff --git a/src/main/java/com/MylesAndMore/tumble/EventListener.java b/src/main/java/com/MylesAndMore/tumble/EventListener.java
index 86bf851..4c3d154 100644
--- a/src/main/java/com/MylesAndMore/tumble/EventListener.java
+++ b/src/main/java/com/MylesAndMore/tumble/EventListener.java
@@ -10,6 +10,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
+import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerItemDamageEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
@@ -78,12 +79,25 @@ public class EventListener implements Listener{
if (event.getEntity().getWorld() == Bukkit.getWorld(TumbleManager.getGameWorld())) {
if (event.getEntity() instanceof Snowball) {
if (event.getEntity().getShooter() instanceof Player player) {
- player.getInventory().addItem(new ItemStack(Material.SNOWBALL));
+ player.getInventory().addItem(new ItemStack(Material.SNOWBALL,1));
}
}
}
}
}
+
+
+ @EventHandler
+ public void PlayerDropItemEvent(PlayerDropItemEvent event) {
+ // When an item is dropped, make sure there is a defined gameWorld
+ if (TumbleManager.getGameWorld() != null) {
+ // Then check if the item was dropped in the game world
+ if (event.getPlayer().getWorld() == Bukkit.getWorld((TumbleManager.getGameWorld()))) {
+ event.setCancelled(true);
+
+ }
+ }
+ }
}
diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java
index d2097d6..ce27f66 100644
--- a/src/main/java/com/MylesAndMore/tumble/Game.java
+++ b/src/main/java/com/MylesAndMore/tumble/Game.java
@@ -5,6 +5,7 @@ import org.bukkit.*;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import javax.annotation.Nullable;
import java.util.*;
public class Game {
@@ -112,7 +113,14 @@ public class Game {
// Create a list that will later keep track of each player's wins
gameWins = new ArrayList<>();
gameWins.addAll(List.of(0,0,0,0,0,0,0,0));
- gameState = "running";
+ // Wait 5s (50t) for the clients to load in
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ // Display the "go!" title
+ displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1);
+ // Set gamemodes to survival
+ setGamemode(gamePlayers, GameMode.SURVIVAL);
+ gameState = "running";
+ }, 50);
return true;
}
@@ -221,42 +229,21 @@ public class Game {
}
}
- // THIS METHOD IS DEPRECATED!!
- // It has been replaced by teleportPlayers(), I'm just leaving this just in case teleportPlayers() doesn't work out
/**
- private void sendPlayers() {
- // Get the X, Y, and Z coords of that location
- double x = gameSpawn.getX();
- double y = gameSpawn.getY();
- double z = gameSpawn.getZ();
- // Create Locations to scatter players around the first layer
- // These are just edited off the original spawn location;
- // they assume that the first layer has a radius of 17 blocks (it always will w/ the current generator code)
- List<Location> scatterLocations = new ArrayList<>();
- scatterLocations.addAll(List.of(
- new Location(gameWorld, (x - 14.5), y, (z + 0.5) , -90, 0),
- new Location(gameWorld, (x + 0.5), y, (z - 14.5), 0, 0),
- new Location(gameWorld, (x + 15.5), y, (z + 0.5), 90, 0),
- new Location(gameWorld, (x + 0.5), y, (z + 15.5), 180, 0 ),
- new Location(gameWorld, (x - 10.5), y, (z - 10.5), -45, 0),
- new Location(gameWorld, (x - 10.5), y, (z + 11.5), -135, 0),
- new Location(gameWorld, (x + 11.5), y, (z - 10.5), 45, 0),
- new Location(gameWorld, (x + 11.5), y, (z + 11.5), 135, 0))
- );
- // Shuffle the location list so players don't always spawn in the same location (basically, actually scatter the locations)
- Collections.shuffle(scatterLocations);
- // While there are still players in the lobby, send them to the gameWorld
- // This is just a way of sending everybody in the lobby to the game
- for (Player aPlayer : TumbleManager.getPlayersInLobby()) {
- // Get a singular location from the scatter list
- Location aLocation = scatterLocations.get(0);
- // Teleport that player to that scatter location
- aPlayer.teleport(aLocation);
- // Remove that location from the list so that it cannot be used again
- scatterLocations.remove(0);
+ * Displays a customized title to a provided list of players
+ * @param players The player list for which to show the titles to
+ * @param title The top title text
+ * @param subtitle The bottom title subtext (nullable)
+ * @param fadeIn The fadeIn duration (in ticks)
+ * @param stay The stay duration (in ticks)
+ * @param fadeOut The fadeOut duration (in ticks)
+ */
+ private void displayTitles(List<Player> players, String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut) {
+ for (Player aPlayer : players) {
+ // Get a singular player from the player list and display them the specified title
+ aPlayer.sendTitle(title, subtitle, fadeIn, stay, fadeOut);
}
}
- */
/**
* Teleports a list of players to the specified scatter locations in the gameWorld
@@ -304,20 +291,32 @@ public class Game {
else {
// Re-generate layers
generateLayers(gameType);
- // Re-scatter players
- scatterPlayers(gamePlayers);
- // Set their gamemodes to survival
- setGamemode(gamePlayers, GameMode.SURVIVAL);
+ Bukkit.getServer().broadcastMessage(ChatColor.BLUE + "A new round will begin in ten seconds!");
+ // Wait 10s (100t) for tp method
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ // Re-scatter players
+ scatterPlayers(gamePlayers);
+ displayTitles(gamePlayers, ChatColor.GREEN + "Go!", null, 1, 5, 1);
+ // Set their gamemodes to survival
+ setGamemode(gamePlayers, GameMode.SURVIVAL);
+ }, 200);
}
}
private void gameEnd(Player winner) {
// Announce win
Bukkit.getServer().broadcastMessage(ChatColor.GOLD + winner.getName() + " has won the game!");
- // Send all players back to lobby (spawn)
- for (Player aPlayer : gamePlayers) {
- aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation());
- }
+ Bukkit.getServer().broadcastMessage(ChatColor.BLUE + "Teleporting back in five seconds...");
+ // Wait 5s (100t), then
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {
+ // Set their gamemodes to survival
+ setGamemode(gamePlayers, GameMode.SURVIVAL);
+ // Send all players back to lobby (spawn)
+ for (Player aPlayer : gamePlayers) {
+ aPlayer.teleport(Bukkit.getWorld(TumbleManager.getLobbyWorld()).getSpawnLocation());
+ }
+ }, 100);
+ gameState = "complete";
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/com/MylesAndMore/tumble/Main.java b/src/main/java/com/MylesAndMore/tumble/Main.java
index 862de47..5c08907 100644
--- a/src/main/java/com/MylesAndMore/tumble/Main.java
+++ b/src/main/java/com/MylesAndMore/tumble/Main.java
@@ -23,15 +23,15 @@ public class Main extends JavaPlugin{
// Check if worlds are null in config
if (TumbleManager.getGameWorld() == null) {
- Bukkit.getServer().getLogger().warning("[tumble] It appears you have not configured a game world for Tumble.");
- Bukkit.getServer().getLogger().info("[tumble] If this is your first time running the plugin, you may disregard this message.");
+ Bukkit.getServer().getLogger().warning("[Tumble] It appears you have not configured a game world for Tumble.");
+ Bukkit.getServer().getLogger().info("[Tumble] If this is your first time running the plugin, you may disregard this message.");
}
if (TumbleManager.getLobbyWorld() == null) {
- Bukkit.getServer().getLogger().warning("[tumble] It appears you have not configured a lobby world for Tumble.");
- Bukkit.getServer().getLogger().info("[tumble] If this is your first time running the plugin, you may disregard this message.");
+ Bukkit.getServer().getLogger().warning("[Tumble] It appears you have not configured a lobby world for Tumble.");
+ Bukkit.getServer().getLogger().info("[Tumble] If this is your first time running the plugin, you may disregard this message.");
}
// Init message
- Bukkit.getServer().getLogger().info("[tumble] Tumble initialization complete!");
+ Bukkit.getServer().getLogger().info("[Tumble] Tumble initialization complete!");
}
} \ No newline at end of file