[personal profile] fardell24
Digital and Interactive Games 2015 – Term 3, Session 17
Today: - Ready Minecraft Plugin for submission

FullGameTutorialFour.java




package org.fardell24.fullgametutorialfour;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class FullGameTutorialFour extends JavaPlugin {
private boolean running;
// gameState
private int gameState;
private long currentGameTime;
List gamePlayerList = new ArrayList<>();

public void onEnable() {

// Register command
getCommand("fullgame").setExecutor(new FullGameCommand(this));
getCommand("fullgameplayer").setExecutor(new FullGamePlayerCommand(this));

getServer().getPluginManager()
.registerEvents(new BlockBreakListener(this), this);

Bukkit.getScheduler().scheduleSyncRepeatingTask(this,new Runnable() {
public void run() {
if(isRunning()) {
updateGameTime();
}
}
}, 60, 10
); // Bukkit.getScheduler


}

public boolean isRunning() {return running;}

public void initializeVariables() {
running = false;
gameState = 0;
currentGameTime = 0;
gamePlayerList.clear();
}

public void setRunning(boolean b) {
running = b;
}

public void setGameState(int i) {
gameState = i;
if(gameState==2) {
clearMobs();
populatePlayerList();
teleportPlayers();
spawnMobs();
} else if(gameState==3) {
HalfMaxHealth();
spawnMoreMobs();
} else if(gameState!=0) {
for(Player p : Bukkit.getOnlinePlayers()) {
p.setGameMode(GameMode.SPECTATOR);
}
}
System.out.println("gameState = " + gameState);
}

public void clearGameTime() {
currentGameTime = 0;
}

public void updateGameTime() {
if(gameState==4 || gameState==5) return;
currentGameTime++;
if(currentGameTime == 240) {
setGameState(5);
} else if(currentGameTime == 178) {
setGameState(3);
} else if(currentGameTime == 70) {
setGameState(2);
}
}

public int getGameState() {
return gameState;
}

private void populatePlayerList() {
gamePlayerList.clear();
System.out.println(Bukkit.getOnlinePlayers().toString());
gamePlayerList.addAll(Bukkit.getOnlinePlayers());
}

private void teleportPlayers() {
for(Player p : gamePlayerList) {
p.teleport(new Location(p.getWorld(),193,63,-205));
p.setGameMode(GameMode.SURVIVAL);
p.setHealth(p.getMaxHealth());
}
}

private void clearMobs() {
World world = getServer().getWorld("world");
Location loc = new Location(world,193,63,-205);

double radius = 50D;
List near = loc.getWorld().getEntities();
for(Entity e : near) {
if(e.getLocation().distance(loc) <= radius) {
if(!(e instanceof Player)) {
if(e instanceof Creature) {
Creature c = (Creature) e;
c.setHealth(0);
}
}
}
}
}

private void spawnMobs() {
World world = getServer().getWorld("world");
Location loc = new Location(world,193,63,-205);

BlockFace bf = TomUtilities.yawToFace(loc.getYaw(),false);
BlockFace bf1 = null;
BlockFace bf2 = null;

if(bf==BlockFace.SOUTH) {
bf1 = BlockFace.NORTH;
bf2 = BlockFace.EAST;
} else if(bf==BlockFace.WEST) {
bf1 = BlockFace.EAST;
bf2 = BlockFace.SOUTH;
} else if(bf==BlockFace.NORTH) {
bf1 = BlockFace.SOUTH;
bf2 = BlockFace.WEST;
} else if(bf==BlockFace.EAST) {
bf1 = BlockFace.WEST;
bf2 = BlockFace.NORTH;
}

Block block = loc.getBlock();
for(int i=0;i<40;i++) {
// world.spawnEntity(block.getRelative(bf1,i+1).getLocation(), EntityType.SKELETON);
world.spawnEntity(block.getRelative(bf1,i+9).getRelative(bf2,i-22).getLocation(), EntityType.CREEPER);
// world.spawnEntity(block.getRelative(bf2,i+1).getLocation(), EntityType.ZOMBIE);
// world.spawnEntity(block.getRelative(bf2,-i).getLocation(), EntityType.WITHER_SKULL);
}

for (int i =-36; i < 16; i++) {
for (int j = -22; j < 21; j++) {
for (int k = -1; k < 11; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.AIR);
}
}
block.getRelative(bf1, 20).getRelative(bf2, i).getRelative(BlockFace.DOWN, 1).setType(Material.STONE);
}
for (int i =-35; i < 15; i++) {
for (int j = -21; j < 20; j++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.DOWN, 1).setType(Material.STONE);
}
}
for (int i =-35; i < 15; i++) {
for (int k = 0; k < 9; k++) {
block.getRelative(bf1, -21).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
block.getRelative(bf1, 19).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
for (int i = -11; i < -9; i++) {
for (int k = 0; k < 2; k++) {
block.getRelative(bf1, -21).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.AIR);
}
block.getRelative(bf1, -22).getRelative(bf2, i).getRelative(BlockFace.DOWN, 2).setType(Material.STONE);
}
for (int j = -21; j < 20; j++) {
for (int k = 0; k < 9; k++) {
block.getRelative(bf1, j).getRelative(bf2, -35).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
for (int j = -21; j < 20; j++) {
for (int k = -10; k < 9; k++) {
block.getRelative(bf1, j).getRelative(bf2, 14).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
for (int i = -13; i < -7; i++) {
for (int j = -6; j < -20; j++) {
for (int k = -4; k < 3; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
}
for (int i = -13; i < -7; i++) {
for (int j = -7; j < -1; j++) {
for (int k = 0; k < 2; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
}
for (int i = -14; i < -6; i++) {
for (int j = -6; j < -0; j++) {
for (int k = 0; k < 2; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
}
for (int i = -14; i < -6; i++) {
for (int j = -8; j < 2; j++) {
for (int k = 0; k < 1; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
}
for (int i = -15; i < -5; i++) {
for (int j = -7; j < -1; j++) {
for (int k = 0; k < 1; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
}
for (int i = -12; i < -8; i++) {
for (int j = -5; j < 1; j++) {
for (int k = -3; k < 3; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.LAVA);
}
}
}
for (int i = -13; i < -7; i++) {
for (int j = -6; j < 0; j++) {
for (int k = 3; k < 4; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.LAVA);
}
}
}
for (int i = -15; i < -5; i++) {
block.getRelative(bf1, 3).getRelative(bf2, i).getRelative(BlockFace.UP, 0).setType(Material.OBSIDIAN);
block.getRelative(bf1, 3).getRelative(bf2, i).getRelative(BlockFace.UP, 10).setType(Material.OBSIDIAN);
}
for (int k = 1; k < 10; k++) {
block.getRelative(bf1, 3).getRelative(bf2, -15).getRelative(BlockFace.UP, k).setType(Material.OBSIDIAN);
block.getRelative(bf1, 3).getRelative(bf2, -6).getRelative(BlockFace.UP, k).setType(Material.OBSIDIAN);
}
for (int i = 4; i < 14; i++) {
for (int j = -1; j < 9; j++) {
for (int k = -10; k < -1; k++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.AIR);
}
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, -11).setType(Material.STONE);
}
}
for (int j = -1; j < 9; j++) {
for (int k = -10; k < 0; k++) {
block.getRelative(bf1, j).getRelative(bf2, 3).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
for (int i = 4; i < 14; i++) {
for (int k = -10; k < 0; k++) {
block.getRelative(bf1, 9).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
block.getRelative(bf1, -2).getRelative(bf2, i).getRelative(BlockFace.UP, k).setType(Material.STONE);
}
}
for (int i = 3; i < 7; i++) {
for (int j = 4; j < 9; j++) {
block.getRelative(bf1, j).getRelative(bf2, i).getRelative(BlockFace.UP, -1).setType(Material.AIR);
}
}
block.getRelative(bf1, 7).getRelative(bf2, 4).getRelative(BlockFace.UP, -3).setType(Material.STONE);
block.getRelative(bf1, 0).getRelative(bf2, 13).getRelative(BlockFace.UP, -10).setType(Material.STONE);
for (int j = 5; j < 7; j++) {
block.getRelative(bf1, j).getRelative(bf2, 4).getRelative(BlockFace.UP, -4).setType(Material.STONE);
}
for (int j = 3; j < 5; j++) {
block.getRelative(bf1, j).getRelative(bf2, 4).getRelative(BlockFace.UP, -5).setType(Material.STONE);
}
for (int j = 0; j < 3; j++) {
block.getRelative(bf1, j).getRelative(bf2, 4).getRelative(BlockFace.UP, -6).setType(Material.STONE);
}
for (int i = 4; i < 7; i++) {
block.getRelative(bf1, -1).getRelative(bf2, i).getRelative(BlockFace.UP, -7).setType(Material.STONE);
}
for (int i = 7; i < 10; i++) {
block.getRelative(bf1, -1).getRelative(bf2, i).getRelative(BlockFace.UP, -8).setType(Material.STONE);
}
for (int i = 10; i < 14; i++) {
block.getRelative(bf1, -1).getRelative(bf2, i).getRelative(BlockFace.UP, -9).setType(Material.STONE);
}
}

private void spawnMoreMobs() {
World world = getServer().getWorld("world");

for(Player p : gamePlayerList) {
Location loc = p.getLocation();

BlockFace bf = TomUtilities.yawToFace(loc.getYaw(),false);
BlockFace bf1 = null;
BlockFace bf2 = null;

if(bf==BlockFace.SOUTH) {
bf1 = BlockFace.NORTH;
bf2 = BlockFace.EAST;
} else if(bf==BlockFace.WEST) {
bf1 = BlockFace.EAST;
bf2 = BlockFace.SOUTH;
} else if(bf==BlockFace.NORTH) {
bf1 = BlockFace.SOUTH;
bf2 = BlockFace.WEST;
} else if(bf==BlockFace.EAST) {
bf1 = BlockFace.WEST;
bf2 = BlockFace.NORTH;
}

Block block = loc.getBlock();
for(int i=0;i<5;i++) {
world.spawnEntity(block.getRelative(bf1,i+10).getLocation(), EntityType.SKELETON);
//world.spawnEntity(block.getRelative(bf1,-i).getLocation(), EntityType.CREEPER);
world.spawnEntity(block.getRelative(bf2,i+10).getLocation(), EntityType.ZOMBIE);
//world.spawnEntity(block.getRelative(bf2,-i).getLocation(), EntityType.WITHER_SKULL);
}
}
}

private void HalfMaxHealth() {
for(Player p : gamePlayerList) {
p.setHealth(p.getMaxHealth()/2.0);
}
}
}


This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

May 2025

S M T W T F S
     1 23
45 6 78910
11 12 13 141516 17
1819 2021 222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 05:43 am
Powered by Dreamwidth Studios