From 7a34bd0690179f10b33e8f04bf0d77a09e47790d Mon Sep 17 00:00:00 2001 From: Garbage Mule Date: Wed, 1 Jun 2011 02:38:40 +0200 Subject: [PATCH] v0.81 Fixed a few bugs, added DoooooItHippieMonster(), unlimited durability on swords --- MobArena.jar | Bin 26190 -> 29596 bytes bin/plugin.yml | 2 +- .../garbagemule/MobArena/ArenaManager.java | 3 + .../garbagemule/MobArena/EntityPosition.java | 88 ++++++++ src/com/garbagemule/MobArena/MACommands.java | 42 ++++ .../MobArena/MADamageListener.java | 1 + .../MobArena/MAMonsterListener.java | 9 +- .../garbagemule/MobArena/MASpawnThread.java | 25 +-- src/com/garbagemule/MobArena/MAUtils.java | 195 ++++++++++++++++++ 9 files changed, 349 insertions(+), 16 deletions(-) create mode 100644 src/com/garbagemule/MobArena/EntityPosition.java diff --git a/MobArena.jar b/MobArena.jar index 2794e4c41ee0c2a71eb2db3b90b14570a0472670..cb17fa28c2172854b767e0c2e03f3b0fe09773c3 100644 GIT binary patch delta 21526 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 z�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 J0VvDB00456V5 10) + { + ArenaManager.tellPlayer(p, "If you want a bigger arena, build it yourself >:O"); + return true; + } + */ + if (args[1].equals("it") && args[2].equals("hippie") && args[3].equals("monster")) + { + MAUtils.DoooooItHippieMonster(p.getLocation(), 10); + ArenaManager.tellPlayer(p, "Auto-generated a working MobArena!"); + return true; + } + } + + if (cmd.equals("undo")) + { + if (args.length != 4) + return false; + + if (args[1].equals("it") && args[2].equals("hippie") && args[3].equals("monster")) + { + MAUtils.UnDoooooItHippieMonster(); + ArenaManager.tellPlayer(p, "Restored your precious little patch >_>"); + return true; + } + } + return false; } } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/MADamageListener.java b/src/com/garbagemule/MobArena/MADamageListener.java index 06e17da..bb2b2fa 100644 --- a/src/com/garbagemule/MobArena/MADamageListener.java +++ b/src/com/garbagemule/MobArena/MADamageListener.java @@ -39,6 +39,7 @@ public class MADamageListener extends EntityListener return; event.setCancelled(true); + p.setFireTicks(0); ArenaManager.playerDeath(p); } } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/MAMonsterListener.java b/src/com/garbagemule/MobArena/MAMonsterListener.java index b4b878d..3b71af3 100644 --- a/src/com/garbagemule/MobArena/MAMonsterListener.java +++ b/src/com/garbagemule/MobArena/MAMonsterListener.java @@ -1,8 +1,8 @@ package com.garbagemule.MobArena; import java.util.HashMap; +import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.entity.Spider; import org.bukkit.event.entity.EntityListener; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityCombustEvent; @@ -37,7 +37,10 @@ public class MAMonsterListener extends EntityListener final HashMap blockMap = new HashMap(); for (Block b : event.blockList()) { - blockMap.put(b, b.getTypeId()); + if (b.getType() == Material.CAKE_BLOCK) + blockMap.put(b, 0); + else + blockMap.put(b, b.getTypeId()); } // Wait a couple of ticks, then rebuild the blocks. @@ -51,7 +54,7 @@ public class MAMonsterListener extends EntityListener b.getLocation().getBlock().setTypeId(blockMap.get(b)); } } - }, 3); + }, 5); } } diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index 58f3947..58c32c5 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -9,6 +9,8 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Creature; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.CreatureType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; /** * Core class for handling wave spawning. @@ -47,8 +49,7 @@ public class MASpawnThread implements Runnable } public void run() - { - long start = System.nanoTime(); + { // Check if we need to grant more rewards with the recurrent waves. for (Integer i : ArenaManager.everyWaveMap.keySet()) { @@ -56,7 +57,7 @@ public class MASpawnThread implements Runnable continue; for (Player p : ArenaManager.playerSet) - { + { currentRewards = ArenaManager.rewardMap.get(p); reward = MAUtils.getRandomReward(ArenaManager.everyWaveMap.get(i)); currentRewards += reward + ","; @@ -92,7 +93,6 @@ public class MASpawnThread implements Runnable } wave++; - System.out.println("Spawns and rewards took " + (System.nanoTime() - start) + " ns"); } /** @@ -124,9 +124,10 @@ public class MASpawnThread implements Runnable ArenaManager.monsterSet.add(e); // Grab a random target. - ran = random.nextInt(noOfPlayers); - Creature c = (Creature) e; - c.setTarget(MAUtils.getRandomPlayer()); + // TO-DO: Find a different solution to this. + //ran = random.nextInt(noOfPlayers); + //Creature c = (Creature) e; + //c.setTarget(MAUtils.getRandomPlayer()); //c.setTarget((Player)playerArray[ran]); // This is faster, but unstable } } @@ -189,13 +190,13 @@ public class MASpawnThread implements Runnable if (wolf) ((Wolf)e).setAngry(true); // Slimes can't have targets, apparently. - if (!(e instanceof Creature)) - continue; + //if (!(e instanceof Creature)) + // continue; // Grab a random target. - ran = random.nextInt(noOfPlayers); - Creature c = (Creature) e; - c.setTarget(MAUtils.getRandomPlayer()); + //ran = random.nextInt(noOfPlayers); + //Creature c = (Creature) e; + //c.setTarget(MAUtils.getRandomPlayer()); //c.setTarget((Player)playerArray[ran]); // This is faster, but unstable } diff --git a/src/com/garbagemule/MobArena/MAUtils.java b/src/com/garbagemule/MobArena/MAUtils.java index 18ef44d..bd1ea93 100644 --- a/src/com/garbagemule/MobArena/MAUtils.java +++ b/src/com/garbagemule/MobArena/MAUtils.java @@ -5,11 +5,14 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.util.Arrays; import java.util.List; import java.util.LinkedList; import java.util.Map; import java.util.HashMap; import java.util.Random; +import org.bukkit.block.Sign; +import org.bukkit.block.BlockFace; import org.bukkit.World; import org.bukkit.Material; import org.bukkit.Location; @@ -20,6 +23,13 @@ import org.bukkit.util.config.Configuration; public class MAUtils { + public static final int[] SWORDS_ID = {267,268,272,276,283}; + public static final Material[] SWORDS_TYPE = {Material.WOOD_SWORD, + Material.STONE_SWORD, + Material.GOLD_SWORD, + Material.IRON_SWORD, + Material.DIAMOND_SWORD}; + /* ///////////////////////////////////////////////////////////////////// // INVENTORY AND REWARD METHODS @@ -90,11 +100,15 @@ public class MAUtils { id = Integer.parseInt(item[0]); stack = new ItemStack(id, amount); + if (Arrays.asList(SWORDS_ID).contains(id)) + stack.setDurability((short)-3276); } else { stack = makeItemStack(item[0], amount); if (stack == null) continue; + if (Arrays.asList(SWORDS_TYPE).contains(stack.getType())) + stack.setDurability((short)-3276); } // Put the item in the first empty inventory slot. @@ -504,4 +518,185 @@ public class MAUtils Object[] array = ArenaManager.playerSet.toArray(); return (Player) array[random.nextInt(array.length)]; } + + /** + * Stand back, I'm going to try science! + */ + public static void DoooooItHippieMonster(Location loc, int radius) + { + // Get the hippie bounds. + int x1 = (int)loc.getX() - radius; + int x2 = (int)loc.getX() + radius; + int y1 = (int)loc.getY() - 8; + int y2 = (int)loc.getY() - 1; + int z1 = (int)loc.getZ() - radius; + int z2 = (int)loc.getZ() + radius; + + int lx1 = x1; + int lx2 = x1 + ArenaManager.classes.size() + 3; + int ly1 = y1-5; + int ly2 = y1-1; + int lz1 = z1; + int lz2 = z1 + 6; + + // Save the precious patch + HashMap preciousPatch = new HashMap(); + Location lo; + int id; + for (int i = x1; i <= x2; i++) + { + for (int j = ly1; j <= y2; j++) + { + for (int k = z1; k <= z2; k++) + { + lo = ArenaManager.world.getBlockAt(i,j,k).getLocation(); + id = ArenaManager.world.getBlockAt(i,j,k).getTypeId(); + preciousPatch.put(new EntityPosition(lo),id); + } + } + } + try + { + FileOutputStream fos = new FileOutputStream("plugins/MobArena/precious.tmp"); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(preciousPatch); + oos.close(); + } + catch (Exception e) + { + System.out.println("Couldn't create backup file. Aborting..."); + e.printStackTrace(); + return; + } + + // Build some monster walls. + for (int i = x1; i <= x2; i++) + { + for (int j = y1; j <= y2; j++) + { + ArenaManager.world.getBlockAt(i,j,z1).setTypeId(5); + ArenaManager.world.getBlockAt(i,j,z2).setTypeId(5); + } + } + for (int k = z1; k <= z2; k++) + { + for (int j = y1; j <= y2; j++) + { + ArenaManager.world.getBlockAt(x1,j,k).setTypeId(5); + ArenaManager.world.getBlockAt(x2,j,k).setTypeId(5); + } + } + + // Add some hippie light. + for (int i = x1; i <= x2; i++) + { + ArenaManager.world.getBlockAt(i,y1+2,z1).setTypeId(89); + ArenaManager.world.getBlockAt(i,y1+2,z2).setTypeId(89); + } + for (int k = z1; k <= z2; k++) + { + ArenaManager.world.getBlockAt(x1,y1+2,k).setTypeId(89); + ArenaManager.world.getBlockAt(x2,y1+2,k).setTypeId(89); + } + + // Build a monster floor. + for (int i = x1; i <= x2; i++) + { + for (int k = z1; k <= z2; k++) + ArenaManager.world.getBlockAt(i,y1,k).setTypeId(5); + } + + // Make a hippie roof. + for (int i = x1; i <= x2; i++) + { + for (int k = z1; k <= z2; k++) + ArenaManager.world.getBlockAt(i,y2,k).setTypeId(20); + } + + // Monster bulldoze + for (int i = x1+1; i < x2; i++) + for (int j = y1+1; j < y2; j++) + for (int k = z1+1; k < z2; k++) + ArenaManager.world.getBlockAt(i,j,k).setTypeId(0); + + // Build a hippie lobby + for (int i = lx1; i <= lx2; i++) // Walls + { + for (int j = ly1; j <= ly2; j++) + { + ArenaManager.world.getBlockAt(i,j,lz1).setTypeId(24); + ArenaManager.world.getBlockAt(i,j,lz2).setTypeId(24); + } + } + for (int k = lz1; k <= lz2; k++) // Walls + { + for (int j = ly1; j <= ly2; j++) + { + ArenaManager.world.getBlockAt(lx1,j,k).setTypeId(24); + ArenaManager.world.getBlockAt(lx2,j,k).setTypeId(24); + } + } + for (int k = lz1; k <= lz2; k++) // Lights + { + ArenaManager.world.getBlockAt(lx1,ly1+2,k).setTypeId(89); + ArenaManager.world.getBlockAt(lx2,ly1+2,k).setTypeId(89); + ArenaManager.world.getBlockAt(lx1,ly1+3,k).setTypeId(89); + ArenaManager.world.getBlockAt(lx2,ly1+3,k).setTypeId(89); + } + for (int i = lx1; i <= lx2; i++) // Floor + { + for (int k = lz1; k <= lz2; k++) + ArenaManager.world.getBlockAt(i,ly1,k).setTypeId(24); + } + for (int i = x1+1; i < lx2; i++) // Bulldoze + for (int j = ly1+1; j <= ly2; j++) + for (int k = lz1+1; k < lz2; k++) + ArenaManager.world.getBlockAt(i,j,k).setTypeId(0); + + // Place the hippie signs + java.util.Iterator iterator = ArenaManager.classes.iterator(); + for (int i = lx1+2; i <= lx2-2; i++) // Signs + { + ArenaManager.world.getBlockAt(i,ly1+1,lz2-1).setTypeIdAndData(63, (byte)0x8, false); + Sign sign = (Sign) ArenaManager.world.getBlockAt(i,ly1+1,lz2-1).getState(); + sign.setLine(0, (String)iterator.next()); + } + ArenaManager.world.getBlockAt(lx2-2,ly1+1,lz1+2).setType(Material.IRON_BLOCK); + + // Set up the monster points. + setCoords("arena", new Location(ArenaManager.world, loc.getX(), y1+1, loc.getZ())); + setCoords("lobby", new Location(ArenaManager.world, x1+2, y1-3, z1+2)); + setCoords("spectator", new Location(ArenaManager.world, loc.getX(), y2+1, loc.getZ())); + setCoords("p1", new Location(ArenaManager.world, x1, y1-4, z1)); + setCoords("p2", new Location(ArenaManager.world, x2, y2, z2)); + setCoords("spawnpoints.s1", new Location(ArenaManager.world, x1+3, y1+2, z1+3)); + setCoords("spawnpoints.s2", new Location(ArenaManager.world, x1+3, y1+2, z2-3)); + setCoords("spawnpoints.s3", new Location(ArenaManager.world, x2-3, y1+2, z1+3)); + setCoords("spawnpoints.s4", new Location(ArenaManager.world, x2-3, y1+2, z2-3)); + } + + public static void UnDoooooItHippieMonster() + { + HashMap preciousPatch; + try + { + FileInputStream fis = new FileInputStream("plugins/MobArena/precious.tmp"); + ObjectInputStream ois = new ObjectInputStream(fis); + preciousPatch = (HashMap) ois.readObject(); + ois.close(); + } + catch (Exception e) + { + System.out.println("Couldn't find backup file..."); + e.printStackTrace(); + return; + } + + for (EntityPosition ep : preciousPatch.keySet()) + { + ArenaManager.world.getBlockAt(ep.getLocation(ArenaManager.world)).setTypeId(preciousPatch.get(ep)); + } + + delCoords("coords"); + } } \ No newline at end of file