Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-26 16:12:42 +01:00
fix fence connections to stairs, remove waterlogged blocks from stair data
Dieser Commit ist enthalten in:
Ursprung
b129ef04f3
Commit
605e63e1df
@ -15,15 +15,17 @@ public abstract class AbstractFenceConnectionHandler extends ConnectionHandler {
|
|||||||
@Getter
|
@Getter
|
||||||
private Set<Integer> blockStates = new HashSet<>();
|
private Set<Integer> blockStates = new HashSet<>();
|
||||||
private Map<Byte, Integer> connectedBlockStates = new HashMap<>();
|
private Map<Byte, Integer> connectedBlockStates = new HashMap<>();
|
||||||
|
private static final StairConnectionHandler STAIR_CONNECTION_HANDLER = new StairConnectionHandler();
|
||||||
|
|
||||||
public AbstractFenceConnectionHandler(String blockConnections, String key) {
|
public AbstractFenceConnectionHandler(String blockConnections, String key) {
|
||||||
this.blockConnections = blockConnections;
|
this.blockConnections = blockConnections;
|
||||||
|
|
||||||
for (Map.Entry<String, Integer> blockState : ConnectionData.keyToId.entrySet()) {
|
for (Map.Entry<String, Integer> blockState : ConnectionData.keyToId.entrySet()) {
|
||||||
if (key.equals(blockState.getKey().split("\\[")[0])) {
|
if (key.equals(blockState.getKey().split("\\[")[0])) {
|
||||||
|
WrappedBlockData blockData = WrappedBlockData.fromString(blockState.getKey());
|
||||||
|
if (blockData.hasData("waterlogged") && blockData.getValue("waterlogged").equals("true")) continue;
|
||||||
blockStates.add(blockState.getValue());
|
blockStates.add(blockState.getValue());
|
||||||
ConnectionData.connectionHandlerMap.put(blockState.getValue(), this);
|
ConnectionData.connectionHandlerMap.put(blockState.getValue(), this);
|
||||||
WrappedBlockData blockData = WrappedBlockData.fromString(blockState.getKey());
|
|
||||||
connectedBlockStates.put(getStates(blockData), blockState.getValue());
|
connectedBlockStates.put(getStates(blockData), blockState.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,7 +37,6 @@ public abstract class AbstractFenceConnectionHandler extends ConnectionHandler {
|
|||||||
if (blockData.getValue("north").equals("true")) states |= 2;
|
if (blockData.getValue("north").equals("true")) states |= 2;
|
||||||
if (blockData.getValue("south").equals("true")) states |= 4;
|
if (blockData.getValue("south").equals("true")) states |= 4;
|
||||||
if (blockData.getValue("west").equals("true")) states |= 8;
|
if (blockData.getValue("west").equals("true")) states |= 8;
|
||||||
if (blockData.hasData("waterlogged") && blockData.getValue("waterlogged").equals("true")) states |= 16;
|
|
||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,6 +49,11 @@ public abstract class AbstractFenceConnectionHandler extends ConnectionHandler {
|
|||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getBlockData(UserConnection user, Position position) {
|
||||||
|
return STAIR_CONNECTION_HANDLER.connect(user, position, super.getBlockData(user, position));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int connect(UserConnection user, Position position, int blockState) {
|
public int connect(UserConnection user, Position position, int blockState) {
|
||||||
final Integer newBlockState = connectedBlockStates.get(getStates(user, position, blockState));
|
final Integer newBlockState = connectedBlockStates.get(getStates(user, position, blockState));
|
||||||
|
@ -21,13 +21,13 @@ public class WallConnectionHandler extends AbstractFenceConnectionHandler {
|
|||||||
@Override
|
@Override
|
||||||
protected byte getStates(WrappedBlockData blockData) {
|
protected byte getStates(WrappedBlockData blockData) {
|
||||||
byte states = super.getStates(blockData);
|
byte states = super.getStates(blockData);
|
||||||
if (blockData.getValue("up").equals("true")) states |= 32;
|
if (blockData.getValue("up").equals("true")) states |= 16;
|
||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected byte getStates(UserConnection user, Position position, int blockState) {
|
protected byte getStates(UserConnection user, Position position, int blockState) {
|
||||||
byte states = super.getStates(user, position, blockState);
|
byte states = super.getStates(user, position, blockState);
|
||||||
if (up(user, position)) states |= 32;
|
if (up(user, position)) states |= 16;
|
||||||
return states;
|
return states;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren