diff --git a/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java index 1a2f14d5..d924831f 100644 --- a/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java @@ -56,30 +56,17 @@ public class Doors { } public boolean handleDoor(Player player, int id, int x, int y, int z) { - Doors d = getDoor(id, x, y, z); if (d == null) { - if (DoubleDoors.getSingleton().handleDoor(player, id, x, y, z)) { - return true; - } - return false; + return DoubleDoors.getSingleton().handleDoor(player, id, x, y, z); } //todo: improvment: if player manage to get to door then open the door. if(player.distanceToPoint(x, y) > 1) return false; - /** - * Here we shall remove the clipping from the door - * We can't add the clipping back when it is closed, because we apparently never update the d.open value.... - */ - if(d != null) { - if(d.open == 0) { - Region.removeClipping(x, y, z); - } else { - //Region.addClipping(x, y, z, 0); - } - } + //Remove clipping for old door (gets added back in placeObject) + Region.removeClipping(x, y, z); int xAdjustment = 0, yAdjustment = 0; if (d.type == 0) { diff --git a/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java index 4de452fd..32decf3a 100644 --- a/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java @@ -10,6 +10,7 @@ import java.util.Scanner; import com.rebotted.GameEngine; import com.rebotted.game.objects.Objects; import com.rebotted.game.players.Player; +import com.rebotted.world.clip.Region; /** * @@ -47,8 +48,8 @@ public class DoubleDoors { } public boolean handleDoor(Player player, int id, int x, int y, int z) { - DoubleDoors doorClicked = getDoor(id, x, y, z); - + DoubleDoors doorClicked = getDoor(id, x, y, z); + if (doorClicked == null) { //GameEngine.objectHandler.placeObject(new Objects(-1, x, y, z, 0, 0, 0)); return true; @@ -56,6 +57,9 @@ public class DoubleDoors { if (doorClicked.doorId > 12000) { return true; //nearly all of these are not opened } + + Region.removeClipping(x, y, z); + if (doorClicked.open == 0) { if (doorClicked.originalFace == 0) { DoubleDoors lowerDoor = getDoor(id - 3, x, y -1, z); diff --git a/2006Redone Server/src/com/rebotted/world/ObjectHandler.java b/2006Redone Server/src/com/rebotted/world/ObjectHandler.java index 38f72b5b..66789202 100644 --- a/2006Redone Server/src/com/rebotted/world/ObjectHandler.java +++ b/2006Redone Server/src/com/rebotted/world/ObjectHandler.java @@ -15,6 +15,7 @@ import com.rebotted.game.players.Client; import com.rebotted.game.players.Player; import com.rebotted.game.players.PlayerHandler; import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; /** * @author Sanity @@ -135,6 +136,7 @@ public class ObjectHandler { * Creates the object for anyone who is within 60 squares of the object **/ public void placeObject(Objects o) { + Region.addClipping(o.getObjectX(), o.getObjectY(), o.getObjectHeight(), 0); for (Player p : PlayerHandler.players) { if (p != null) { Client person = (Client) p; diff --git a/2006Redone Server/src/com/rebotted/world/clip/Region.java b/2006Redone Server/src/com/rebotted/world/clip/Region.java index f3ca988e..ae4d8a04 100644 --- a/2006Redone Server/src/com/rebotted/world/clip/Region.java +++ b/2006Redone Server/src/com/rebotted/world/clip/Region.java @@ -289,7 +289,7 @@ public class Region { return projectileClips[height][x - regionAbsX][y - regionAbsY]; } - private static void addClipping(int x, int y, int height, int shift) { + public static void addClipping(int x, int y, int height, int shift) { int regionX = x >> 3; int regionY = y >> 3; int regionId = (regionX / 8 << 8) + regionY / 8; diff --git a/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/Doors.class b/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/Doors.class index 41e4ec2e..392f3c31 100644 Binary files a/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/Doors.class and b/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/Doors.class differ diff --git a/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/DoubleDoors.class b/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/DoubleDoors.class index 43c81377..967bf87d 100644 Binary files a/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/DoubleDoors.class and b/CompiledServer/production/2006rebotted/com/rebotted/game/globalworldobjects/DoubleDoors.class differ diff --git a/CompiledServer/production/2006rebotted/com/rebotted/world/ObjectHandler.class b/CompiledServer/production/2006rebotted/com/rebotted/world/ObjectHandler.class index 0d73d549..4bd04582 100644 Binary files a/CompiledServer/production/2006rebotted/com/rebotted/world/ObjectHandler.class and b/CompiledServer/production/2006rebotted/com/rebotted/world/ObjectHandler.class differ diff --git a/CompiledServer/production/2006rebotted/com/rebotted/world/clip/Region.class b/CompiledServer/production/2006rebotted/com/rebotted/world/clip/Region.class index 081593a8..13d63f91 100644 Binary files a/CompiledServer/production/2006rebotted/com/rebotted/world/clip/Region.class and b/CompiledServer/production/2006rebotted/com/rebotted/world/clip/Region.class differ