Added floor caching and spawning, added boilerplate for changing floor color

This commit is contained in:
RangerMauve 2013-11-09 15:24:46 -05:00
parent b7361acb9b
commit bc082bb87d

View File

@ -15,6 +15,7 @@ import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep; import org.bukkit.entity.Sheep;
import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Builder; import org.bukkit.FireworkEffect.Builder;
import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -61,7 +62,6 @@ public class DiscoParty {
1.667f, 1.667f,
2.0f 2.0f
}; };
// Instance properties // Instance properties
private Random r = new Random(); private Random r = new Random();
private PartyEvents partyEvents; private PartyEvents partyEvents;
@ -117,6 +117,14 @@ public class DiscoParty {
return guestList; return guestList;
} }
ArrayList<BlockState> getFloorCache() {
return this.floorBlockCache;
}
ArrayList<Block> getFloorBlocks() {
return this.floorBlocks;
}
public static HashMap<String, Integer> getDefaultGuestNumbers() { public static HashMap<String, Integer> getDefaultGuestNumbers() {
return defaultGuestNumbers; return defaultGuestNumbers;
} }
@ -266,6 +274,9 @@ public class DiscoParty {
spawnGuest(world, loc, ent); spawnGuest(world, loc, ent);
} }
} }
loc = player.getLocation();
this.spawnFloor(world, new Location(world,loc.getBlockX(),loc.getBlockY()-1,loc.getBlockZ()));
} }
void spawnSheep(World world, Location loc) { void spawnSheep(World world, Location loc) {
@ -287,6 +298,18 @@ public class DiscoParty {
} }
} }
void spawnFloor(World world, Location loc) {
// First we'll save the floor state
for (int x = loc.getBlockX() - this.radius; x < loc.getX() + this.radius; ++x) {
for (int z = loc.getBlockZ() - this.radius; z < loc.getZ() + this.radius; ++z) {
Block block = world.getBlockAt(x, loc.getBlockY(), z);
this.getFloorCache().add(block.getState());
block.setType(Material.WOOL);
this.getFloorBlocks().add(block);
}
}
}
// Mark all guests for removal, then clear the array // Mark all guests for removal, then clear the array
void removeAll() { void removeAll() {
for (Sheep sheeple : getSheepList()) { for (Sheep sheeple : getSheepList()) {
@ -295,7 +318,7 @@ public class DiscoParty {
for (Entity guest : getGuestList()) { for (Entity guest : getGuestList()) {
guest.remove(); guest.remove();
} }
for(BlockState block : this.floorBlockCache){ for (BlockState block : this.floorBlockCache) {
block.update(true); block.update(true);
} }
getSheepList().clear(); getSheepList().clear();
@ -308,6 +331,10 @@ public class DiscoParty {
sheep.setColor(discoColours[(r.nextInt(discoColours.length))]); sheep.setColor(discoColours[(r.nextInt(discoColours.length))]);
} }
void randomizeFloorColor(Block block) {
// Randomize them colors, boi
}
void jump(Entity entity) { void jump(Entity entity) {
Vector orgVel = entity.getVelocity(); Vector orgVel = entity.getVelocity();
Vector newVel = (new Vector()).copy(orgVel); Vector newVel = (new Vector()).copy(orgVel);
@ -397,6 +424,11 @@ public class DiscoParty {
} }
} }
} }
for (Block block : this.floorBlocks) {
this.randomizeFloorColor(block);
}
} }
private float getPentatonicNote() { private float getPentatonicNote() {