Fixed the spawnMonsters/difficulty change. Stable for 1185 and 1216 now.

This commit is contained in:
Garbage Mule
2011-09-26 17:50:37 +02:00
parent fd5be195a8
commit da8c98b119
5 changed files with 112 additions and 16 deletions
BIN
View File
Binary file not shown.
+33 -6
View File
@@ -1,6 +1,6 @@
name: MobArena
main: com.garbagemule.MobArena.MobArena
version: 0.94.3.4
version: 0.94.3.5
softdepend: [Spout,Permissions,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells]
commands:
ma:
@@ -18,7 +18,7 @@ commands:
/mobarena notready - List of players who aren't ready.
/mobarena spectate - Warp to the spectator area.
permissions:
mobarena.use.*:
mobarena.use:
description: Gives access to usage commands
default: true
children:
@@ -32,8 +32,8 @@ permissions:
mobarena.use.leave:
default: true
mobarena.admin.*:
description: Gives access to admin commands
mobarena.admin:
description: Gives access to all admin commands
default: op
children:
mobarena.admin.enable: true
@@ -43,20 +43,26 @@ permissions:
mobarena.admin.force.start: true
mobarena.admin.config.reload: true
mobarena.admin.enable:
description: Enable and disable MobArena and/or arenas.
default: false
mobarena.admin.kick:
description: Kick a player from an arena.
default: false
mobarena.admin.restore:
description: Restore a player's inventory.
default: false
mobarena.admin.force.end:
description: Force end an arena.
default: false
mobarena.admin.force.start:
description: Force start an arena.
default: false
mobarena.admin.config.reload:
description: Reload the config-file.
default: false
mobarena.setup.*:
description: Gives access to setup commands
mobarena.setup:
description: Gives access to all setup commands
default: op
children:
mobarena.setup.arena: true
@@ -81,44 +87,65 @@ permissions:
mobarena.setup.autogenerate: true
mobarena.setup.autodegenerate: true
mobarena.setup.arena:
description: Check which arena is the currently selected arena.
default: false
mobarena.setup.setarena:
description: Select a new arena.
default: false
mobarena.setup.addarena:
description: Add a new arena node.
default: false
mobarena.setup.delarena:
description: Delete an arena.
default: false
mobarena.setup.protect:
description: Turn arena protection on/off.
default: false
mobarena.setup.editarena:
description: Turn editmode on/off.
default: false
mobarena.setup.setregion:
description: Set region points p1/p2.
default: false
mobarena.setup.expandregion:
description: Expand arena region.
default: false
mobarena.setup.showregion:
description: Show arena region.
default: false
mobarena.setup.setlobbyregion:
description: Set lobby region points l1/l2.
default: false
mobarena.setup.expandlobbyregion:
description: Expand lobby region.
default: false
mobarena.setup.setwarp:
description: Set warp points arena/lobby/spectator.
default: false
mobarena.setup.spawnpoints:
description: List all spawnpoints.
default: false
mobarena.setup.addspawn:
description: Add a new spawnpoint.
default: false
mobarena.setup.delspawn:
description: Delete a spawnpoint.
default: false
mobarena.setup.containers:
description: List all containers.
default: false
mobarena.setup.addcontainer:
description: Add a new container.
default: false
mobarena.setup.delcontainer:
description: Delete a container.
default: false
mobarena.setup.checkdata:
description: Check which points need to be set up.
default: false
mobarena.setup.autogenerate:
description: Auto-generate an arena.
default: false
mobarena.setup.autodegenerate:
description: Auto-degenerate an arena.
default: false
+1 -1
View File
@@ -154,7 +154,7 @@ public class Arena
allowMonsters = world.getAllowMonsters();
allowAnimals = world.getAllowAnimals();
spawnMonsters = ((net.minecraft.server.World) ((CraftWorld) world).getHandle()).spawnMonsters;
spawnMonsters = MAUtils.getSpawnMonsters(world);
eventListener = new MAListener(this, plugin);
repairQueue = new PriorityBlockingQueue<Repairable>(100, new RepairableComparator());
+1 -1
View File
@@ -163,7 +163,7 @@ public class MAListener implements ArenaListener
LivingEntity entity = (LivingEntity) event.getEntity();
if (arena.running && entity instanceof Slime)
arena.monsters.add(entity);
else
// If running == true, setCancelled(false), and vice versa.
event.setCancelled(!arena.running);
}
+75 -6
View File
@@ -1,5 +1,6 @@
package com.garbagemule.MobArena;
import java.lang.reflect.Field;
import java.net.URI;
import java.net.HttpURLConnection;
import java.io.File;
@@ -18,8 +19,6 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.minecraft.server.WorldServer;
import org.bukkit.block.Sign;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.CraftWorld;
@@ -1331,16 +1330,86 @@ public class MAUtils
}
}
public static int getSpawnMonsters(World world)
{
try
{
Field f = getSpawnMonstersField(world);
net.minecraft.server.World w = (net.minecraft.server.World) ((CraftWorld) world).getHandle();
return f.getInt(w);
}
catch (Exception e)
{
e.printStackTrace();
return 0;
}
/*
Field f = null;
try
{
String[] parts = Bukkit.getVersion().split("-");
String version = parts[5].substring(1, 5);
int v = (version.matches("[0-9]+")) ? Integer.parseInt(version) : 0;
String fieldName = (v >= 1191) ? "difficulty" : "spawnMonsters";
f = net.minecraft.server.World.class.getDeclaredField(fieldName);
if (f != null)
return f.getInt(w);
}
catch (Exception e)
{
e.printStackTrace();
}
return 0;*/
}
private static Field getSpawnMonstersField(World world)
{
try
{
String[] parts = Bukkit.getVersion().split("-");
String version = parts[5].substring(1, 5);
int v = (version.matches("[0-9]+")) ? Integer.parseInt(version) : 0;
String fieldName = (v >= 1191) ? "difficulty" : "spawnMonsters";
return net.minecraft.server.World.class.getDeclaredField(fieldName);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public static void setSpawnFlags(MobArena plugin, World world, int spawnMonsters, boolean allowMonsters, boolean allowAnimals)
{
for (Arena arena : plugin.getAM().getArenasInWorld(world))
if (arena.running)
return;
WorldServer ws = ((CraftWorld) world).getHandle();
ws.spawnMonsters = spawnMonsters;
ws.allowMonsters = allowMonsters;
ws.allowAnimals = allowAnimals;
//WorldServer ws = ((CraftWorld) world).getHandle();
//ws.spawnMonsters = spawnMonsters;
//ws.allowMonsters = allowMonsters;
//ws.allowAnimals = allowAnimals;
try
{
net.minecraft.server.World w = (net.minecraft.server.World) ((CraftWorld) world).getHandle();
w.allowMonsters = allowMonsters;
w.allowAnimals = allowAnimals;
Field f = getSpawnMonstersField(world);
f.setInt(w, spawnMonsters);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static String getDuration(long duration)