diff --git a/src/main/java/ru/windcorp/progressia/server/world/context/impl/DefaultServerContextImpl.java b/src/main/java/ru/windcorp/progressia/server/world/context/impl/DefaultServerContextImpl.java index 7d4f6cf..b4dfedc 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/context/impl/DefaultServerContextImpl.java +++ b/src/main/java/ru/windcorp/progressia/server/world/context/impl/DefaultServerContextImpl.java @@ -364,19 +364,19 @@ class DefaultServerContextImpl extends DefaultServerContext @Override public TileData getTile(Vec3i location, RelFace face, int layer) { assert requireContextRole(Role.WORLD); - return world.getTile(location, face, layer); + return world.getTile(location, face.resolve(AbsFace.POS_Z), layer); } @Override public boolean hasTile(Vec3i location, RelFace face, int layer) { assert requireContextRole(Role.WORLD); - return world.hasTile(location, face, layer); + return world.hasTile(location, face.resolve(AbsFace.POS_Z), layer); } @Override public TileData getTileByTag(Vec3i location, RelFace face, int tag) { assert requireContextRole(Role.WORLD); - TileDataStack stack = world.getTilesOrNull(location, face); + TileDataStack stack = world.getTilesOrNull(location, face.resolve(AbsFace.POS_Z)); if (stack == null) return null; int layer = stack.getIndexByTag(tag); @@ -388,7 +388,7 @@ class DefaultServerContextImpl extends DefaultServerContext @Override public boolean isTagValid(Vec3i location, RelFace face, int tag) { assert requireContextRole(Role.WORLD); - TileDataStack stack = world.getTilesOrNull(location, face); + TileDataStack stack = world.getTilesOrNull(location, face.resolve(AbsFace.POS_Z)); if (stack == null) return false; return stack.getIndexByTag(tag) != -1; @@ -397,7 +397,7 @@ class DefaultServerContextImpl extends DefaultServerContext @Override public int getTag() { assert requireContextRole(Role.TILE); - TileDataStack stack = world.getTilesOrNull(frame.location, frame.face); + TileDataStack stack = world.getTilesOrNull(frame.location, frame.face.resolve(AbsFace.POS_Z)); if (stack == null) return -1; return stack.getTagByIndex(frame.layer); @@ -406,7 +406,7 @@ class DefaultServerContextImpl extends DefaultServerContext @Override public int getTileCount(Vec3i location, RelFace face) { assert requireContextRole(Role.TILE_STACK); - TileDataStack stack = world.getTilesOrNull(frame.location, frame.face); + TileDataStack stack = world.getTilesOrNull(location, face.resolve(AbsFace.POS_Z)); if (stack == null) return 0; return stack.size(); @@ -455,13 +455,13 @@ class DefaultServerContextImpl extends DefaultServerContext @Override public void addTile(Vec3i location, RelFace face, TileData tile) { assert requireContextRole(Role.WORLD); - world.getTiles(location, face).addFarthest(tile); + world.getTiles(location, face.resolve(AbsFace.POS_Z)).addFarthest(tile); } @Override public void removeTile(Vec3i location, RelFace face, int tag) { assert requireContextRole(Role.WORLD); - TileDataStack stack = world.getTilesOrNull(location, face); + TileDataStack stack = world.getTilesOrNull(location, face.resolve(AbsFace.POS_Z)); if (stack == null) return; int layer = stack.getIndexByTag(tag); diff --git a/src/main/java/ru/windcorp/progressia/server/world/context/impl/ReportingServerContext.java b/src/main/java/ru/windcorp/progressia/server/world/context/impl/ReportingServerContext.java index 732b2a0..57ff66c 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/context/impl/ReportingServerContext.java +++ b/src/main/java/ru/windcorp/progressia/server/world/context/impl/ReportingServerContext.java @@ -23,7 +23,6 @@ import ru.windcorp.progressia.common.state.StatefulObject; import ru.windcorp.progressia.common.world.block.BlockData; import ru.windcorp.progressia.common.world.entity.EntityData; import ru.windcorp.progressia.common.world.generic.EntityGeneric; -import ru.windcorp.progressia.common.world.rels.BlockFace; import ru.windcorp.progressia.common.world.rels.RelFace; import ru.windcorp.progressia.common.world.tile.TileData; import ru.windcorp.progressia.server.world.context.ServerTileContext; @@ -34,9 +33,9 @@ public class ReportingServerContext extends FilterServerContext { void onBlockSet(Vec3i location, BlockData block); - void onTileAdded(Vec3i location, BlockFace face, TileData tile); + void onTileAdded(Vec3i location, RelFace face, TileData tile); - void onTileRemoved(Vec3i location, BlockFace face, int tag); + void onTileRemoved(Vec3i location, RelFace face, int tag); void onEntityAdded(EntityData entity); diff --git a/src/main/java/ru/windcorp/progressia/server/world/tasks/WorldAccessor.java b/src/main/java/ru/windcorp/progressia/server/world/tasks/WorldAccessor.java index cb95063..76ab835 100644 --- a/src/main/java/ru/windcorp/progressia/server/world/tasks/WorldAccessor.java +++ b/src/main/java/ru/windcorp/progressia/server/world/tasks/WorldAccessor.java @@ -27,7 +27,9 @@ import ru.windcorp.progressia.common.util.MultiLOC; import ru.windcorp.progressia.common.world.block.BlockData; import ru.windcorp.progressia.common.world.entity.EntityData; import ru.windcorp.progressia.common.world.generic.EntityGeneric; +import ru.windcorp.progressia.common.world.rels.AbsFace; import ru.windcorp.progressia.common.world.rels.BlockFace; +import ru.windcorp.progressia.common.world.rels.RelFace; import ru.windcorp.progressia.common.world.tile.TileData; import ru.windcorp.progressia.server.Server; import ru.windcorp.progressia.server.world.context.impl.ReportingServerContext; @@ -64,16 +66,16 @@ public class WorldAccessor implements ReportingServerContext.ChangeListener { } @Override - public void onTileAdded(Vec3i blockInWorld, BlockFace face, TileData tile) { + public void onTileAdded(Vec3i blockInWorld, RelFace face, TileData tile) { AddTile change = cache.grab(AddTile.class); - change.getPacket().set(tile, blockInWorld, face.resolve(server.getWorld().getUp(blockInWorld))); + change.getPacket().set(tile, blockInWorld, face.resolve(AbsFace.POS_Z)); server.requestChange(change); } @Override - public void onTileRemoved(Vec3i blockInWorld, BlockFace face, int tag) { + public void onTileRemoved(Vec3i blockInWorld, RelFace face, int tag) { RemoveTile change = cache.grab(RemoveTile.class); - change.getPacket().set(blockInWorld, face.resolve(server.getWorld().getUp(blockInWorld)), tag); + change.getPacket().set(blockInWorld, face.resolve(AbsFace.POS_Z), tag); server.requestChange(change); } @@ -131,7 +133,7 @@ public class WorldAccessor implements ReportingServerContext.ChangeListener { // TODO rename to something meaningful public void triggerUpdates(Vec3i blockInWorld, BlockFace face) { TileTriggeredUpdate evaluation = cache.grab(TileTriggeredUpdate.class); - evaluation.init(blockInWorld, face.resolve(server.getWorld().getUp(blockInWorld))); + evaluation.init(blockInWorld, face.resolve(AbsFace.POS_Z)); server.requestEvaluation(evaluation); }