Contexts now only accept RelFace; fixed tile placement crash
This commit is contained in:
parent
82872c7cf3
commit
a6fd81ba1e
@ -21,8 +21,8 @@ import glm.vec._3.i.Vec3i;
|
|||||||
import ru.windcorp.progressia.common.world.block.BlockData;
|
import ru.windcorp.progressia.common.world.block.BlockData;
|
||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextWO;
|
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextWO;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
import ru.windcorp.progressia.common.world.tile.TileData;
|
import ru.windcorp.progressia.common.world.tile.TileData;
|
||||||
|
|
||||||
public interface BlockDataContext
|
public interface BlockDataContext
|
||||||
@ -45,8 +45,8 @@ public interface BlockDataContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockDataContext pushRelative(AbsRelation direction) {
|
default BlockDataContext pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -21,8 +21,8 @@ import glm.vec._3.i.Vec3i;
|
|||||||
import ru.windcorp.progressia.common.world.block.BlockData;
|
import ru.windcorp.progressia.common.world.block.BlockData;
|
||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextRO;
|
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextRO;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
import ru.windcorp.progressia.common.world.tile.TileData;
|
import ru.windcorp.progressia.common.world.tile.TileData;
|
||||||
|
|
||||||
public interface BlockDataContextRO
|
public interface BlockDataContextRO
|
||||||
@ -44,8 +44,8 @@ public interface BlockDataContextRO
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockDataContextRO pushRelative(AbsRelation direction) {
|
default BlockDataContextRO pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,9 +20,8 @@ package ru.windcorp.progressia.common.world.generic.context;
|
|||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.context.Context;
|
import ru.windcorp.progressia.common.world.context.Context;
|
||||||
import ru.windcorp.progressia.common.world.generic.*;
|
import ru.windcorp.progressia.common.world.generic.*;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link Context} referencing a world with a block location specified. The
|
* A {@link Context} referencing a world with a block location specified. The
|
||||||
@ -68,7 +67,7 @@ public interface BlockGenericContextRO<
|
|||||||
* @param layer the layer of the tile
|
* @param layer the layer of the tile
|
||||||
* @return {@code true} iff the tile exists
|
* @return {@code true} iff the tile exists
|
||||||
*/
|
*/
|
||||||
default boolean hasTile(BlockFace face, int layer) {
|
default boolean hasTile(RelFace face, int layer) {
|
||||||
return hasTile(getLocation(), face, layer);
|
return hasTile(getLocation(), face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +79,7 @@ public interface BlockGenericContextRO<
|
|||||||
* @param tag the tag of the tile
|
* @param tag the tag of the tile
|
||||||
* @return {@code true} iff the tile exists
|
* @return {@code true} iff the tile exists
|
||||||
*/
|
*/
|
||||||
default boolean isTagValid(BlockFace face, int tag) {
|
default boolean isTagValid(RelFace face, int tag) {
|
||||||
return isTagValid(getLocation(), face, tag);
|
return isTagValid(getLocation(), face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +96,7 @@ public interface BlockGenericContextRO<
|
|||||||
* @param layer the layer of the tile stack that the tile occupies
|
* @param layer the layer of the tile stack that the tile occupies
|
||||||
* @return the tile or {@code null} if the position does not contain a tile
|
* @return the tile or {@code null} if the position does not contain a tile
|
||||||
*/
|
*/
|
||||||
default T getTile(BlockFace face, int layer) {
|
default T getTile(RelFace face, int layer) {
|
||||||
return getTile(getLocation(), face, layer);
|
return getTile(getLocation(), face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +114,7 @@ public interface BlockGenericContextRO<
|
|||||||
* @param tag the tag of the tile
|
* @param tag the tag of the tile
|
||||||
* @return the tile or {@code null} if the position does not contain a tile
|
* @return the tile or {@code null} if the position does not contain a tile
|
||||||
*/
|
*/
|
||||||
default T getTileByTag(BlockFace face, int tag) {
|
default T getTileByTag(RelFace face, int tag) {
|
||||||
return getTileByTag(getLocation(), face, tag);
|
return getTileByTag(getLocation(), face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +128,7 @@ public interface BlockGenericContextRO<
|
|||||||
* @return the count of tiles in the tile stack or {@code -1} if the tile
|
* @return the count of tiles in the tile stack or {@code -1} if the tile
|
||||||
* stack could not exist
|
* stack could not exist
|
||||||
*/
|
*/
|
||||||
default int getTileCount(BlockFace face) {
|
default int getTileCount(RelFace face) {
|
||||||
return getTileCount(face);
|
return getTileCount(face);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,8 +147,8 @@ public interface BlockGenericContextRO<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockGenericContextRO<B, T, E> pushRelative(AbsRelation direction) {
|
default BlockGenericContextRO<B, T, E> pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,9 +20,8 @@ package ru.windcorp.progressia.common.world.generic.context;
|
|||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.context.Context;
|
import ru.windcorp.progressia.common.world.context.Context;
|
||||||
import ru.windcorp.progressia.common.world.generic.*;
|
import ru.windcorp.progressia.common.world.generic.*;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A writable {@link Context} referencing a world with a block location
|
* A writable {@link Context} referencing a world with a block location
|
||||||
@ -59,7 +58,7 @@ public interface BlockGenericContextWO<
|
|||||||
* @param face the face of the block to add the tile to
|
* @param face the face of the block to add the tile to
|
||||||
* @param tile the tile to add
|
* @param tile the tile to add
|
||||||
*/
|
*/
|
||||||
default void addTile(BlockFace face, T tile) {
|
default void addTile(RelFace face, T tile) {
|
||||||
addTile(getLocation(), face, tile);
|
addTile(getLocation(), face, tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +71,7 @@ public interface BlockGenericContextWO<
|
|||||||
* @param face the of the block to remove the tile from
|
* @param face the of the block to remove the tile from
|
||||||
* @param tag the tag of the tile to remove
|
* @param tag the tag of the tile to remove
|
||||||
*/
|
*/
|
||||||
default void removeTile(BlockFace face, int tag) {
|
default void removeTile(RelFace face, int tag) {
|
||||||
removeTile(getLocation(), face, tag);
|
removeTile(getLocation(), face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,8 +90,8 @@ public interface BlockGenericContextWO<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockGenericContextWO<B, T, E> pushRelative(AbsRelation direction) {
|
default BlockGenericContextWO<B, T, E> pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -21,9 +21,9 @@ package ru.windcorp.progressia.common.world.generic.context;
|
|||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.context.Context;
|
import ru.windcorp.progressia.common.world.context.Context;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class defines several {@link Context} subinterfaces that are further
|
* This class defines several {@link Context} subinterfaces that are further
|
||||||
@ -139,7 +139,7 @@ class WorldContexts {
|
|||||||
* system
|
* system
|
||||||
* @return the face expressed in absolute coordinate system
|
* @return the face expressed in absolute coordinate system
|
||||||
*/
|
*/
|
||||||
AbsFace toAbsolute(BlockFace contextFace);
|
AbsFace toAbsolute(RelFace contextFace);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts the provided face given in the absolute coordinate
|
* Converts the provided face given in the absolute coordinate
|
||||||
@ -221,8 +221,8 @@ class WorldContexts {
|
|||||||
* @return this object
|
* @return this object
|
||||||
* @see #pop()
|
* @see #pop()
|
||||||
*/
|
*/
|
||||||
default Block pushRelative(AbsRelation direction) {
|
default Block pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,11 +20,9 @@ package ru.windcorp.progressia.common.world.generic.context;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import glm.vec._3.Vec3;
|
|
||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.context.Context;
|
import ru.windcorp.progressia.common.world.context.Context;
|
||||||
import ru.windcorp.progressia.common.world.generic.*;
|
import ru.windcorp.progressia.common.world.generic.*;
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -76,7 +74,7 @@ public interface WorldGenericContextRO<
|
|||||||
* @param layer the layer of the tile stack that the tile occupies
|
* @param layer the layer of the tile stack that the tile occupies
|
||||||
* @return the tile or {@code null} if the position does not contain a tile
|
* @return the tile or {@code null} if the position does not contain a tile
|
||||||
*/
|
*/
|
||||||
T getTile(Vec3i location, BlockFace face, int layer);
|
T getTile(Vec3i location, RelFace face, int layer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the tile at the specified position and the tile's tag. This
|
* Retrieves the tile at the specified position and the tile's tag. This
|
||||||
@ -92,7 +90,7 @@ public interface WorldGenericContextRO<
|
|||||||
* @param tag the tag of the tile
|
* @param tag the tag of the tile
|
||||||
* @return the tile or {@code null} if the position does not contain a tile
|
* @return the tile or {@code null} if the position does not contain a tile
|
||||||
*/
|
*/
|
||||||
T getTileByTag(Vec3i location, BlockFace face, int tag);
|
T getTileByTag(Vec3i location, RelFace face, int tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether the specified position has a tile.
|
* Determines whether the specified position has a tile.
|
||||||
@ -102,7 +100,7 @@ public interface WorldGenericContextRO<
|
|||||||
* @param layer the layer of the tile
|
* @param layer the layer of the tile
|
||||||
* @return {@code true} iff the tile exists
|
* @return {@code true} iff the tile exists
|
||||||
*/
|
*/
|
||||||
boolean hasTile(Vec3i location, BlockFace face, int layer);
|
boolean hasTile(Vec3i location, RelFace face, int layer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether the specified position has a tile with the given tag.
|
* Determines whether the specified position has a tile with the given tag.
|
||||||
@ -112,7 +110,7 @@ public interface WorldGenericContextRO<
|
|||||||
* @param tag the tag of the tile
|
* @param tag the tag of the tile
|
||||||
* @return {@code true} iff the tile exists
|
* @return {@code true} iff the tile exists
|
||||||
*/
|
*/
|
||||||
boolean isTagValid(Vec3i location, BlockFace face, int tag);
|
boolean isTagValid(Vec3i location, RelFace face, int tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Counts the amount of tiles in the specified tile stack.
|
* Counts the amount of tiles in the specified tile stack.
|
||||||
@ -124,7 +122,7 @@ public interface WorldGenericContextRO<
|
|||||||
* @return the count of tiles in the tile stack or {@code -1} if the tile
|
* @return the count of tiles in the tile stack or {@code -1} if the tile
|
||||||
* stack could not exist
|
* stack could not exist
|
||||||
*/
|
*/
|
||||||
int getTileCount(Vec3i location, BlockFace face);
|
int getTileCount(Vec3i location, RelFace face);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a listing of all entities. {@link #forEachEntity(Consumer)}
|
* Retrieves a listing of all entities. {@link #forEachEntity(Consumer)}
|
||||||
@ -143,52 +141,6 @@ public interface WorldGenericContextRO<
|
|||||||
*/
|
*/
|
||||||
E getEntity(long entityId);
|
E getEntity(long entityId);
|
||||||
|
|
||||||
/*
|
|
||||||
* Convenience methods
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterates all entities safely
|
|
||||||
*/
|
|
||||||
default void forEachEntity(Consumer<? super E> action) {
|
|
||||||
getEntities().forEach(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterates all entities in cuboid safely
|
|
||||||
*/
|
|
||||||
default void forEachEntityIn(Vec3i min, Vec3i max, Consumer<? super E> action) {
|
|
||||||
forEachEntity(e -> {
|
|
||||||
Vec3 pos = e.getPosition();
|
|
||||||
if (pos.x < min.x || pos.y < min.y || pos.z < min.z || pos.x > max.x || pos.y > max.y || pos.z > max.z) {
|
|
||||||
action.accept(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterates all entities in cuboid safely
|
|
||||||
*/
|
|
||||||
default void forEachEntityIn(Vec3 min, Vec3 max, Consumer<? super E> action) {
|
|
||||||
forEachEntity(e -> {
|
|
||||||
Vec3 pos = e.getPosition();
|
|
||||||
if (pos.x < min.x || pos.y < min.y || pos.z < min.z || pos.x > max.x || pos.y > max.y || pos.z > max.z) {
|
|
||||||
action.accept(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterates all entities with ID safely
|
|
||||||
*/
|
|
||||||
default void forEachEntityWithId(String id, Consumer<? super E> action) {
|
|
||||||
forEachEntity(e -> {
|
|
||||||
if (id.equals(e.getId())) {
|
|
||||||
action.accept(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Subcontexting
|
* Subcontexting
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,6 @@ import ru.windcorp.progressia.common.state.StateChange;
|
|||||||
import ru.windcorp.progressia.common.state.StatefulObject;
|
import ru.windcorp.progressia.common.state.StatefulObject;
|
||||||
import ru.windcorp.progressia.common.world.context.Context;
|
import ru.windcorp.progressia.common.world.context.Context;
|
||||||
import ru.windcorp.progressia.common.world.generic.*;
|
import ru.windcorp.progressia.common.world.generic.*;
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -76,7 +75,7 @@ public interface WorldGenericContextWO<
|
|||||||
* @param face the face of the block to add the tile to
|
* @param face the face of the block to add the tile to
|
||||||
* @param tile the tile to add
|
* @param tile the tile to add
|
||||||
*/
|
*/
|
||||||
void addTile(Vec3i location, BlockFace face, T tile);
|
void addTile(Vec3i location, RelFace face, T tile);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests that a tile identified by its tag is removed from the specified
|
* Requests that a tile identified by its tag is removed from the specified
|
||||||
@ -88,7 +87,7 @@ public interface WorldGenericContextWO<
|
|||||||
* @param face the of the block to remove the tile from
|
* @param face the of the block to remove the tile from
|
||||||
* @param tag the tag of the tile to remove
|
* @param tag the tag of the tile to remove
|
||||||
*/
|
*/
|
||||||
void removeTile(Vec3i location, BlockFace face, int tag);
|
void removeTile(Vec3i location, RelFace face, int tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests that the referenced tile is removed from its tile stack. If the
|
* Requests that the referenced tile is removed from its tile stack. If the
|
||||||
|
@ -44,7 +44,7 @@ public class PacketAddTile extends PacketAffectTile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set(TileData tile, Vec3i blockInWorld, AbsFace face) {
|
public void set(TileData tile, Vec3i blockInWorld, AbsFace face) {
|
||||||
super.set(blockInWorld, face, -1);
|
super.set(blockInWorld, face, TAG_NOT_APPLICABLE);
|
||||||
this.tileId = tile.getId();
|
this.tileId = tile.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ru.windcorp.progressia.common.world.tile;
|
package ru.windcorp.progressia.common.world.tile;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
@ -34,6 +34,12 @@ public abstract class PacketAffectTile extends PacketAffectChunk {
|
|||||||
private AbsFace face;
|
private AbsFace face;
|
||||||
private int tag;
|
private int tag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates to the safeguards in {@link #set(Vec3i, AbsFace, int)} that the
|
||||||
|
* concept of a tile tag is not applicable to this action.
|
||||||
|
*/
|
||||||
|
protected static final int TAG_NOT_APPLICABLE = -2;
|
||||||
|
|
||||||
public PacketAffectTile(String id) {
|
public PacketAffectTile(String id) {
|
||||||
super(id);
|
super(id);
|
||||||
}
|
}
|
||||||
@ -51,10 +57,10 @@ public abstract class PacketAffectTile extends PacketAffectChunk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set(Vec3i blockInWorld, AbsFace face, int tag) {
|
public void set(Vec3i blockInWorld, AbsFace face, int tag) {
|
||||||
if (tag < 0) {
|
if (tag < 0 && tag != TAG_NOT_APPLICABLE) {
|
||||||
throw new IllegalArgumentException("Cannot affect tile with tag -1");
|
throw new IllegalArgumentException("Cannot affect tile with tag " + tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.blockInWorld.set(blockInWorld.x, blockInWorld.y, blockInWorld.z);
|
this.blockInWorld.set(blockInWorld.x, blockInWorld.y, blockInWorld.z);
|
||||||
this.face = face;
|
this.face = face;
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
|
@ -19,8 +19,8 @@ package ru.windcorp.progressia.server.world.context;
|
|||||||
|
|
||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.context.BlockDataContext;
|
import ru.windcorp.progressia.common.world.context.BlockDataContext;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
|
|
||||||
public interface ServerBlockContext extends BlockDataContext, ServerWorldContext, ServerBlockContextRO {
|
public interface ServerBlockContext extends BlockDataContext, ServerWorldContext, ServerBlockContextRO {
|
||||||
|
|
||||||
@ -40,8 +40,8 @@ public interface ServerBlockContext extends BlockDataContext, ServerWorldContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default ServerBlockContext.Logic pushRelative(AbsRelation direction) {
|
default ServerBlockContext.Logic pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -70,8 +70,8 @@ public interface ServerBlockContext extends BlockDataContext, ServerWorldContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default ServerBlockContext pushRelative(AbsRelation direction) {
|
default ServerBlockContext pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -21,8 +21,8 @@ import glm.vec._3.i.Vec3i;
|
|||||||
import ru.windcorp.progressia.common.world.context.BlockDataContextRO;
|
import ru.windcorp.progressia.common.world.context.BlockDataContextRO;
|
||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextRO;
|
import ru.windcorp.progressia.common.world.generic.context.BlockGenericContextRO;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsRelation;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
|
import ru.windcorp.progressia.common.world.rels.RelRelation;
|
||||||
import ru.windcorp.progressia.server.world.block.BlockLogic;
|
import ru.windcorp.progressia.server.world.block.BlockLogic;
|
||||||
import ru.windcorp.progressia.server.world.tile.TileLogic;
|
import ru.windcorp.progressia.server.world.tile.TileLogic;
|
||||||
|
|
||||||
@ -45,8 +45,8 @@ public interface ServerBlockContextRO extends ServerWorldContextRO, BlockDataCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default ServerBlockContextRO.Logic pushRelative(AbsRelation direction) {
|
default ServerBlockContextRO.Logic pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -75,8 +75,8 @@ public interface ServerBlockContextRO extends ServerWorldContextRO, BlockDataCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default ServerBlockContextRO pushRelative(AbsRelation direction) {
|
default ServerBlockContextRO pushRelative(RelRelation direction) {
|
||||||
return push(getLocation().add_(direction.getVector()));
|
return push(getLocation().add_(direction.getRelVector()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -318,7 +318,7 @@ class DefaultServerContextImpl extends DefaultServerContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AbsFace toAbsolute(BlockFace contextFace) {
|
public AbsFace toAbsolute(RelFace contextFace) {
|
||||||
return contextFace.resolve(AbsFace.POS_Z);
|
return contextFace.resolve(AbsFace.POS_Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,19 +362,19 @@ class DefaultServerContextImpl extends DefaultServerContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTile(Vec3i location, BlockFace face, int layer) {
|
public TileData getTile(Vec3i location, RelFace face, int layer) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
return world.getTile(location, face, layer);
|
return world.getTile(location, face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasTile(Vec3i location, BlockFace face, int layer) {
|
public boolean hasTile(Vec3i location, RelFace face, int layer) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
return world.hasTile(location, face, layer);
|
return world.hasTile(location, face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTileByTag(Vec3i location, BlockFace face, int tag) {
|
public TileData getTileByTag(Vec3i location, RelFace face, int tag) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
TileDataStack stack = world.getTilesOrNull(location, face);
|
TileDataStack stack = world.getTilesOrNull(location, face);
|
||||||
if (stack == null)
|
if (stack == null)
|
||||||
@ -386,7 +386,7 @@ class DefaultServerContextImpl extends DefaultServerContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTagValid(Vec3i location, BlockFace face, int tag) {
|
public boolean isTagValid(Vec3i location, RelFace face, int tag) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
TileDataStack stack = world.getTilesOrNull(location, face);
|
TileDataStack stack = world.getTilesOrNull(location, face);
|
||||||
if (stack == null)
|
if (stack == null)
|
||||||
@ -404,7 +404,7 @@ class DefaultServerContextImpl extends DefaultServerContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTileCount(Vec3i location, BlockFace face) {
|
public int getTileCount(Vec3i location, RelFace face) {
|
||||||
assert requireContextRole(Role.TILE_STACK);
|
assert requireContextRole(Role.TILE_STACK);
|
||||||
TileDataStack stack = world.getTilesOrNull(frame.location, frame.face);
|
TileDataStack stack = world.getTilesOrNull(frame.location, frame.face);
|
||||||
if (stack == null)
|
if (stack == null)
|
||||||
@ -453,13 +453,13 @@ class DefaultServerContextImpl extends DefaultServerContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTile(Vec3i location, BlockFace face, TileData tile) {
|
public void addTile(Vec3i location, RelFace face, TileData tile) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
world.getTiles(location, face).addFarthest(tile);
|
world.getTiles(location, face).addFarthest(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeTile(Vec3i location, BlockFace face, int tag) {
|
public void removeTile(Vec3i location, RelFace face, int tag) {
|
||||||
assert requireContextRole(Role.WORLD);
|
assert requireContextRole(Role.WORLD);
|
||||||
TileDataStack stack = world.getTilesOrNull(location, face);
|
TileDataStack stack = world.getTilesOrNull(location, face);
|
||||||
if (stack == null)
|
if (stack == null)
|
||||||
|
@ -24,7 +24,6 @@ import glm.vec._3.i.Vec3i;
|
|||||||
import ru.windcorp.progressia.common.world.block.BlockData;
|
import ru.windcorp.progressia.common.world.block.BlockData;
|
||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
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.rels.RelFace;
|
||||||
import ru.windcorp.progressia.common.world.tile.TileData;
|
import ru.windcorp.progressia.common.world.tile.TileData;
|
||||||
import ru.windcorp.progressia.server.Server;
|
import ru.windcorp.progressia.server.Server;
|
||||||
@ -97,7 +96,7 @@ public class DefaultServerContextLogic implements ServerTileContext.Logic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AbsFace toAbsolute(BlockFace contextFace) {
|
public AbsFace toAbsolute(RelFace contextFace) {
|
||||||
return parent.toAbsolute(contextFace);
|
return parent.toAbsolute(contextFace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,13 +111,13 @@ public class DefaultServerContextLogic implements ServerTileContext.Logic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileLogic getTile(Vec3i location, BlockFace face, int layer) {
|
public TileLogic getTile(Vec3i location, RelFace face, int layer) {
|
||||||
TileData data = parent.getTile(location, face, layer);
|
TileData data = parent.getTile(location, face, layer);
|
||||||
return data == null ? null : TileLogicRegistry.getInstance().get(data.getId());
|
return data == null ? null : TileLogicRegistry.getInstance().get(data.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileLogic getTileByTag(Vec3i location, BlockFace face, int tag) {
|
public TileLogic getTileByTag(Vec3i location, RelFace face, int tag) {
|
||||||
TileData data = parent.getTileByTag(location, face, tag);
|
TileData data = parent.getTileByTag(location, face, tag);
|
||||||
return data == null ? null : TileLogicRegistry.getInstance().get(data.getId());
|
return data == null ? null : TileLogicRegistry.getInstance().get(data.getId());
|
||||||
}
|
}
|
||||||
@ -129,12 +128,12 @@ public class DefaultServerContextLogic implements ServerTileContext.Logic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasTile(Vec3i location, BlockFace face, int layer) {
|
public boolean hasTile(Vec3i location, RelFace face, int layer) {
|
||||||
return parent.hasTile(location, face, layer);
|
return parent.hasTile(location, face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTagValid(Vec3i location, BlockFace face, int tag) {
|
public boolean isTagValid(Vec3i location, RelFace face, int tag) {
|
||||||
return parent.isTagValid(location, face, tag);
|
return parent.isTagValid(location, face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +143,7 @@ public class DefaultServerContextLogic implements ServerTileContext.Logic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTileCount(Vec3i location, BlockFace face) {
|
public int getTileCount(Vec3i location, RelFace face) {
|
||||||
return parent.getTileCount(location, face);
|
return parent.getTileCount(location, face);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ import ru.windcorp.progressia.common.world.block.BlockData;
|
|||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.generic.EntityGeneric;
|
import ru.windcorp.progressia.common.world.generic.EntityGeneric;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
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.rels.RelFace;
|
||||||
import ru.windcorp.progressia.common.world.tile.TileData;
|
import ru.windcorp.progressia.common.world.tile.TileData;
|
||||||
import ru.windcorp.progressia.server.Server;
|
import ru.windcorp.progressia.server.Server;
|
||||||
@ -99,12 +98,12 @@ public abstract class FilterServerContext implements ServerTileContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTile(Vec3i location, BlockFace face, TileData tile) {
|
public void addTile(Vec3i location, RelFace face, TileData tile) {
|
||||||
parent.addTile(location, face, tile);
|
parent.addTile(location, face, tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeTile(Vec3i location, BlockFace face, int tag) {
|
public void removeTile(Vec3i location, RelFace face, int tag) {
|
||||||
parent.removeTile(location, face, tag);
|
parent.removeTile(location, face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,27 +148,27 @@ public abstract class FilterServerContext implements ServerTileContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTile(Vec3i location, BlockFace face, int layer) {
|
public TileData getTile(Vec3i location, RelFace face, int layer) {
|
||||||
return parent.getTile(location, face, layer);
|
return parent.getTile(location, face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTileByTag(Vec3i location, BlockFace face, int tag) {
|
public TileData getTileByTag(Vec3i location, RelFace face, int tag) {
|
||||||
return parent.getTileByTag(location, face, tag);
|
return parent.getTileByTag(location, face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasTile(Vec3i location, BlockFace face, int layer) {
|
public boolean hasTile(Vec3i location, RelFace face, int layer) {
|
||||||
return parent.hasTile(location, face, layer);
|
return parent.hasTile(location, face, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTagValid(Vec3i location, BlockFace face, int tag) {
|
public boolean isTagValid(Vec3i location, RelFace face, int tag) {
|
||||||
return parent.isTagValid(location, face, tag);
|
return parent.isTagValid(location, face, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTileCount(Vec3i location, BlockFace face) {
|
public int getTileCount(Vec3i location, RelFace face) {
|
||||||
return parent.getTileCount(location, face);
|
return parent.getTileCount(location, face);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +211,7 @@ public abstract class FilterServerContext implements ServerTileContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AbsFace toAbsolute(BlockFace contextFace) {
|
public AbsFace toAbsolute(RelFace contextFace) {
|
||||||
return parent.toAbsolute(contextFace);
|
return parent.toAbsolute(contextFace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import ru.windcorp.progressia.common.world.block.BlockData;
|
|||||||
import ru.windcorp.progressia.common.world.entity.EntityData;
|
import ru.windcorp.progressia.common.world.entity.EntityData;
|
||||||
import ru.windcorp.progressia.common.world.generic.EntityGeneric;
|
import ru.windcorp.progressia.common.world.generic.EntityGeneric;
|
||||||
import ru.windcorp.progressia.common.world.rels.BlockFace;
|
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.common.world.tile.TileData;
|
||||||
import ru.windcorp.progressia.server.world.context.ServerTileContext;
|
import ru.windcorp.progressia.server.world.context.ServerTileContext;
|
||||||
|
|
||||||
@ -83,7 +84,7 @@ public class ReportingServerContext extends FilterServerContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTile(Vec3i location, BlockFace face, TileData tile) {
|
public void addTile(Vec3i location, RelFace face, TileData tile) {
|
||||||
if (passToParent) {
|
if (passToParent) {
|
||||||
super.addTile(location, face, tile);
|
super.addTile(location, face, tile);
|
||||||
}
|
}
|
||||||
@ -93,7 +94,7 @@ public class ReportingServerContext extends FilterServerContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeTile(Vec3i location, BlockFace face, int tag) {
|
public void removeTile(Vec3i location, RelFace face, int tag) {
|
||||||
if (passToParent) {
|
if (passToParent) {
|
||||||
super.removeTile(location, face, tag);
|
super.removeTile(location, face, tag);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@ import java.util.List;
|
|||||||
import glm.vec._3.i.Vec3i;
|
import glm.vec._3.i.Vec3i;
|
||||||
import ru.windcorp.progressia.common.world.block.BlockData;
|
import ru.windcorp.progressia.common.world.block.BlockData;
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
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.rels.RelFace;
|
||||||
import ru.windcorp.progressia.common.world.tile.TileData;
|
import ru.windcorp.progressia.common.world.tile.TileData;
|
||||||
import ru.windcorp.progressia.server.world.context.ServerBlockContext;
|
import ru.windcorp.progressia.server.world.context.ServerBlockContext;
|
||||||
@ -163,8 +162,8 @@ public abstract class TransformingServerContext extends FilterServerContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AbsFace toAbsolute(BlockFace contextFace) {
|
public AbsFace toAbsolute(RelFace contextFace) {
|
||||||
return super.toAbsolute(transform(contextFace.relativize(AbsFace.POS_Z)));
|
return super.toAbsolute(transform(contextFace));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -206,77 +205,77 @@ public abstract class TransformingServerContext extends FilterServerContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasTile(Vec3i userLocation, BlockFace userFace, int layer) {
|
public boolean hasTile(Vec3i userLocation, RelFace userFace, int layer) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return super.hasTile(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), layer);
|
return super.hasTile(parentLocation, transform(userFace), layer);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTile(Vec3i userLocation, BlockFace userFace, int layer) {
|
public TileData getTile(Vec3i userLocation, RelFace userFace, int layer) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return super.getTile(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), layer);
|
return super.getTile(parentLocation, transform(userFace), layer);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTagValid(Vec3i userLocation, BlockFace userFace, int tag) {
|
public boolean isTagValid(Vec3i userLocation, RelFace userFace, int tag) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return super.isTagValid(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), tag);
|
return super.isTagValid(parentLocation, transform(userFace), tag);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileData getTileByTag(Vec3i userLocation, BlockFace userFace, int tag) {
|
public TileData getTileByTag(Vec3i userLocation, RelFace userFace, int tag) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return super.getTileByTag(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), tag);
|
return super.getTileByTag(parentLocation, transform(userFace), tag);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTileCount(Vec3i userLocation, BlockFace userFace) {
|
public int getTileCount(Vec3i userLocation, RelFace userFace) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return super.getTileCount(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)));
|
return super.getTileCount(parentLocation, transform(userFace));
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTile(Vec3i userLocation, BlockFace userFace, TileData tile) {
|
public void addTile(Vec3i userLocation, RelFace userFace, TileData tile) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
super.addTile(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), tile);
|
super.addTile(parentLocation, transform(userFace), tile);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeTile(Vec3i userLocation, BlockFace userFace, int tag) {
|
public void removeTile(Vec3i userLocation, RelFace userFace, int tag) {
|
||||||
Vec3i parentLocation = grabVector(userLocation);
|
Vec3i parentLocation = grabVector(userLocation);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
super.removeTile(parentLocation, transform(userFace.relativize(AbsFace.POS_Z)), tag);
|
super.removeTile(parentLocation, transform(userFace), tag);
|
||||||
} finally {
|
} finally {
|
||||||
releaseVector(parentLocation);
|
releaseVector(parentLocation);
|
||||||
}
|
}
|
||||||
|
@ -428,7 +428,7 @@ public class TestContent {
|
|||||||
return;
|
return;
|
||||||
if (server.getWorld().getData().getTiles(blockInWorld, face).isFull())
|
if (server.getWorld().getData().getTiles(blockInWorld, face).isFull())
|
||||||
return;
|
return;
|
||||||
server.createAbsoluteContext().addTile(blockInWorld, face, tile);
|
server.createAbsoluteContext().addTile(blockInWorld, face.relativize(AbsFace.POS_Z), tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerMisc() {
|
private static void registerMisc() {
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package ru.windcorp.progressia.test;
|
package ru.windcorp.progressia.test;
|
||||||
|
|
||||||
import ru.windcorp.progressia.common.world.rels.AbsFace;
|
|
||||||
import ru.windcorp.progressia.common.world.rels.RelFace;
|
import ru.windcorp.progressia.common.world.rels.RelFace;
|
||||||
import ru.windcorp.progressia.server.world.block.BlockLogic;
|
import ru.windcorp.progressia.server.world.block.BlockLogic;
|
||||||
import ru.windcorp.progressia.server.world.context.ServerTileContext;
|
import ru.windcorp.progressia.server.world.context.ServerTileContext;
|
||||||
@ -65,8 +64,7 @@ public class TestTileLogicGrass extends HangingTileLogic implements TickableTile
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBlockAboveTransparent(ServerTileContextRO context) {
|
private boolean isBlockAboveTransparent(ServerTileContextRO context) {
|
||||||
// TODO rework
|
context.pushRelative(RelFace.UP);
|
||||||
context.pushRelative(RelFace.UP.resolve(AbsFace.POS_Z));
|
|
||||||
BlockLogic block = context.logic().getBlock();
|
BlockLogic block = context.logic().getBlock();
|
||||||
return context.popAndReturn(block == null || block.isTransparent(context));
|
return context.popAndReturn(block == null || block.isTransparent(context));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user