aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraivMan <gamemaster370.carver@gmail.com>2022-12-05 21:10:02 -0600
committerCraivMan <gamemaster370.carver@gmail.com>2022-12-05 21:10:02 -0600
commitba8c012d76e1ef5a2bfe7a6fda91d804e8b36518 (patch)
treef96cf583c94b73a24360041568a60fae5c4c2148
parentcc6e428517da5fe6acd3659bfbe4ebd4fa3ea5a5 (diff)
parentc4375578c74f13993209d7b3673e91ab3f9b81d2 (diff)
downloadTumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.tar.gz
Tumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.tar.bz2
Tumble-ba8c012d76e1ef5a2bfe7a6fda91d804e8b36518.zip
Merge remote-tracking branch 'origin/alphatest' into alphatest
-rw-r--r--README.md4
-rw-r--r--src/main/java/com/MylesAndMore/tumble/EventListener.java3
-rw-r--r--src/main/java/com/MylesAndMore/tumble/Game.java42
-rw-r--r--src/main/java/com/MylesAndMore/tumble/api/Generator.java1
-rw-r--r--src/main/java/com/MylesAndMore/tumble/commands/StartGame.java4
5 files changed, 22 insertions, 32 deletions
diff --git a/README.md b/README.md
index bfe1a54..ea3c1d9 100644
--- a/README.md
+++ b/README.md
@@ -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) {