diff options
author | CraivMan <gamemaster370.carver@gmail.com> | 2022-12-05 21:10:02 -0600 |
---|---|---|
committer | CraivMan <gamemaster370.carver@gmail.com> | 2022-12-05 21:10:02 -0600 |
commit | ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518 (patch) | |
tree | f96cf583c94b73a24360041568a60fae5c4c2148 | |
parent | cc6e428517da5fe6acd3659bfbe4ebd4fa3ea5a5 (diff) | |
parent | c4375578c74f13993209d7b3673e91ab3f9b81d2 (diff) | |
download | Tumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.tar.gz Tumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.tar.bz2 Tumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.zip |
Merge remote-tracking branch 'origin/alphatest' into alphatest
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/EventListener.java | 3 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/Game.java | 42 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/api/Generator.java | 1 | ||||
-rw-r--r-- | src/main/java/com/MylesAndMore/tumble/commands/StartGame.java | 4 |
5 files changed, 22 insertions, 32 deletions
@@ -11,7 +11,7 @@ once this list is complete and all bugs are fixed, we *should* be ready for rele ## game realism -- [ ] make the shovel in shovels mode not lose any durabilty +- [x] make the shovel in shovels mode not lose any durabilty - [ ] 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 @@ -21,7 +21,7 @@ once this list is complete and all bugs are fixed, we *should* be ready for rele ## game logic (fyi: very object-oriented) -- [ ] make a Game class and object that we can initialize a new instance of with a gameType +- [x] make a Game class and object that we can initialize a new instance of with a gameType - [ ] within this game object, while games are running: - [ ] prevent players from joining/autojoining during - [ ] keep track of when someone wins; start a new round when this happens diff --git a/src/main/java/com/MylesAndMore/tumble/EventListener.java b/src/main/java/com/MylesAndMore/tumble/EventListener.java index f870ed0..f40430d 100644 --- a/src/main/java/com/MylesAndMore/tumble/EventListener.java +++ b/src/main/java/com/MylesAndMore/tumble/EventListener.java @@ -7,7 +7,6 @@ import org.bukkit.entity.Projectile; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; @@ -18,8 +17,6 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.projectiles.ProjectileSource; -import java.util.Objects; - public class EventListener implements Listener{ @EventHandler public void PlayerJoinEvent(PlayerJoinEvent event) { diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index 53a167c..b08dfd3 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -3,11 +3,8 @@ package com.MylesAndMore.tumble; import com.MylesAndMore.tumble.api.Generator; import org.bukkit.*; import org.bukkit.entity.Player; -import org.bukkit.event.Event; -import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -52,8 +49,10 @@ public class Game { // Initialize a list to keep track of wins between rounds private List<Integer> gameWins; - // Creates a new Game - // This will return true if the game succeeds creation, and false if not + /** + * Creates a new Game + * @return true if the game succeeds creation, and false if not + */ public boolean startGame() { gameState = "starting"; if (Objects.equals(TumbleManager.getGameType(), "shovels")) { @@ -67,8 +66,6 @@ public class Game { giveItems(new ItemStack(Material.DIAMOND_SHOVEL)); // Send players to the game sendPlayers(); - - // Keep in mind that after this runs, this command will complete and return true } else { @@ -78,7 +75,6 @@ public class Game { else if (Objects.equals(TumbleManager.getGameType(), "snowballs")) { gameType = "snowballs"; if (generateLayers(gameType)) { - // Reminder: we need a way to make this snowball infinite! giveItems(new ItemStack(Material.SNOWBALL)); sendPlayers(); } @@ -117,7 +113,6 @@ public class Game { } private boolean generateLayers(String gameType) { - // Location layer = gameSpawn; Location layer = new Location(gameSpawn.getWorld(), gameSpawn.getX(), gameSpawn.getY(), gameSpawn.getZ(), gameSpawn.getYaw(), gameSpawn.getPitch()); if (Objects.equals(roundType, "shovels")) { layer.setY(layer.getY() - 1); @@ -152,7 +147,6 @@ public class Game { else { return false; } - // layer = null; return true; } @@ -189,6 +183,15 @@ public class Game { } } + private void setSurvival() { + for (List<Player> spectators = gamePlayers; spectators.size() > 0; spectators.remove(0)) { + // Get a singular player from the player list + Player spectatorPlayer = spectators.get(0); + // Set that player's gamemode to survival + spectatorPlayer.setGameMode(GameMode.SURVIVAL); + } + } + public void itemDamage(PlayerItemDamageEvent event) { // If the game type is shovels, if (Objects.equals(roundType, "shovels")) { @@ -217,32 +220,27 @@ public class Game { // Set the wins of the player to their current # of wins + 1 gameWins.set(gamePlayers.indexOf(winner), (gameWins.get(gamePlayers.indexOf(winner)) + 1)); Bukkit.getServer().broadcastMessage(ChatColor.GREEN + winner.getName() + " has won the round!"); + // Clear old layers (as a fill command, this would be /fill ~-20 ~-4 ~-20 ~20 ~ ~20 relative to spawn) + Generator.generateCuboid(new Location(gameSpawn.getWorld(), gameSpawn.getX() - 20, gameSpawn.getY() - 4, gameSpawn.getZ() - 20), new Location(gameSpawn.getWorld(), gameSpawn.getX() + 20, gameSpawn.getY(), gameSpawn.getZ() + 20), Material.AIR); + // If the player has three wins, they won the game, so initiate the gameEnd if (gameWins.get(gamePlayers.indexOf(winner)) == 3) { gameEnd(winner); } + // If that player doesn't have three wins, nobody else does, so we need another round else { - // Clear old layers - Location firstPos = new Location(gameSpawn.getWorld(), gameSpawn.getX() - 20, gameSpawn.getY() - 4, gameSpawn.getZ() - 20); - Location secondPos = new Location(gameSpawn.getWorld(), gameSpawn.getX() + 20, gameSpawn.getY(), gameSpawn.getZ() + 20); - Generator.generateCuboid(firstPos, secondPos, Material.AIR); - // Generate layers - // Debug - Bukkit.getServer().broadcastMessage(gameType); + // Re-generate layers generateLayers(gameType); // Teleport players // A new method will need to be written for this; current one only supports lobby // Set their gamemodes to survival - + setSurvival(); } } private void gameEnd(@NotNull Player winner) { Bukkit.getServer().broadcastMessage(ChatColor.GOLD + winner.getName() + " has won the game!"); - // Clear layers - Location firstPos = new Location(gameSpawn.getWorld(), gameSpawn.getX() - 20, gameSpawn.getY() - 4, gameSpawn.getZ() - 20); - Location secondPos = new Location(gameSpawn.getWorld(), gameSpawn.getX() + 20, gameSpawn.getY(), gameSpawn.getZ() + 20); - Generator.generateCuboid(firstPos, secondPos, Material.AIR); + // Send players back to lobby } diff --git a/src/main/java/com/MylesAndMore/tumble/api/Generator.java b/src/main/java/com/MylesAndMore/tumble/api/Generator.java index 5a1feba..1be071d 100644 --- a/src/main/java/com/MylesAndMore/tumble/api/Generator.java +++ b/src/main/java/com/MylesAndMore/tumble/api/Generator.java @@ -17,7 +17,6 @@ public class Generator { for (int x = Cx - radius; x <= Cx + radius; x++) { for (int z = Cz - radius; z <= Cz + radius; z++) { if ((Cx - x) * (Cx - x) + (Cz - z) * (Cz - z) <= rSq) { - Location block = new Location(world, x, y, z); world.getBlockAt(x, y, z).setType(material); } } diff --git a/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java b/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java index 85fd705..2e531ef 100644 --- a/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java +++ b/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java @@ -2,14 +2,10 @@ package com.MylesAndMore.tumble.commands; import com.MylesAndMore.tumble.Game; import com.MylesAndMore.tumble.TumbleManager; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.List; public class StartGame implements CommandExecutor { public void startGame(CommandSender sender, String[] args) { |