summaryrefslogtreecommitdiffstats
path: root/src/main/java/org
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-09-15 02:22:20 +0100
committerDinnerbone <dinnerbone@dinnerbone.com>2011-09-15 02:22:20 +0100
commita9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6 (patch)
tree39ad23fadd451fea751cc36a51136fdcdc13a732 /src/main/java/org
parent5b2c774edc069f70d1fa9940d96bb0b8705bef7a (diff)
downloadcraftbukkit-a9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6.tar
craftbukkit-a9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6.tar.gz
craftbukkit-a9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6.tar.lz
craftbukkit-a9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6.tar.xz
craftbukkit-a9b3a90dc93c6ae1b7cf12854c6e19ee1e113cc6.zip
Implemented gamemode methods
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java10
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java10
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java19
3 files changed, 35 insertions, 4 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 00381820..234eced6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -822,10 +822,16 @@ public final class CraftServer implements Server {
}
public GameMode getDefaultGameMode() {
- return GameMode.SURVIVAL;
+ return GameMode.getByValue(console.worlds.get(0).worldData.p);
}
public void setDefaultGameMode(GameMode mode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ if (mode == null) {
+ throw new IllegalArgumentException("Mode cannot be null");
+ }
+
+ for (World world : getWorlds()) {
+ ((CraftWorld)world).getHandle().worldData.p = mode.getValue();
+ }
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index 9a37697b..a46ec122 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -19,9 +19,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
private CraftInventoryPlayer inventory;
protected final PermissibleBase perm = new PermissibleBase(this);
private boolean op;
+ private GameMode mode;
public CraftHumanEntity(final CraftServer server, final EntityHuman entity) {
super(server, entity);
+ mode = server.getDefaultGameMode();
this.inventory = new CraftInventoryPlayer(entity.inventory);
}
@@ -119,10 +121,14 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
}
public GameMode getGameMode() {
- return GameMode.SURVIVAL;
+ return mode;
}
public void setGameMode(GameMode mode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ if (mode == null) {
+ throw new IllegalArgumentException("Mode cannot be null");
+ }
+
+ this.mode = mode;
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index fda5098b..9548234b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -12,9 +12,11 @@ import net.minecraft.server.Packet53BlockChange;
import net.minecraft.server.Packet54PlayNoteBlock;
import net.minecraft.server.Packet61;
import net.minecraft.server.Packet6SpawnPosition;
+import net.minecraft.server.Packet70Bed;
import net.minecraft.server.WorldServer;
import org.bukkit.Achievement;
import org.bukkit.Effect;
+import org.bukkit.GameMode;
import org.bukkit.Instrument;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -377,4 +379,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
server.getHandle().l(getName().toLowerCase());
}
}
+
+ @Override
+ public void setGameMode(GameMode mode) {
+ if (mode == null) {
+ throw new IllegalArgumentException("Mode cannot be null");
+ }
+
+ if (mode != getGameMode()) {
+ getHandle().itemInWorldManager.a(mode.getValue());
+ getHandle().netServerHandler.sendPacket(new Packet70Bed(3, mode.getValue()));
+ }
+ }
+
+ @Override
+ public GameMode getGameMode() {
+ return GameMode.getByValue(getHandle().itemInWorldManager.a());
+ }
}