Skip to content

Commit 9fd3032

Browse files
committed
waytone generate fix
1 parent f5c5846 commit 9fd3032

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package_group=gollorum.signpost
99
mc_version=1.19.2
1010
forge_version=43.1.43
1111

12-
mod_version=2.00.5
12+
mod_version=2.01.0
1313

1414
balm_project_id=531761
1515
balm_file_id=3914527

src/main/java/gollorum/signpost/minecraft/block/WaystoneGeneratorBlock.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,14 @@ private static boolean tryPlace(BlockState state, BlockPos pos, ServerLevel serv
9494
return false;
9595
}
9696
String name = optionalName.get();
97-
serverLevel.setBlock(pos, waystone.defaultBlockState().setValue(WaystoneBlock.FACING, facing), 18);
97+
boolean isWater = serverLevel.isWaterAt(pos.above());
98+
serverLevel.setBlock(
99+
pos,
100+
waystone.defaultBlockState()
101+
.setValue(WaystoneBlock.FACING, facing)
102+
.setValue(ModelWaystone.Waterlogged, isWater),
103+
18
104+
);
98105
WaystoneLibrary.getInstance().update(
99106
name,
100107
locationDataFor(pos, serverLevel, facing),
@@ -132,18 +139,22 @@ private static Vector3 spawnPosFor(ServerLevel world, BlockPos waystonePos, Dire
132139
BlockPos spawnBlockPos = waystonePos.relative(facing, -2);
133140
int maxOffset = 10;
134141
int offset = 0;
135-
while(world.getBlockState(spawnBlockPos).isAir() && offset <= maxOffset) {
142+
while(isFree(world.getBlockState(spawnBlockPos), world, spawnBlockPos) && offset <= maxOffset) {
136143
spawnBlockPos = spawnBlockPos.below();
137144
offset++;
138145
}
139146
offset = 0;
140-
while(!world.getBlockState(spawnBlockPos).isAir() && offset <= maxOffset) {
147+
while(!isFree(world.getBlockState(spawnBlockPos), world, spawnBlockPos) && offset <= maxOffset) {
141148
spawnBlockPos = spawnBlockPos.above();
142149
offset++;
143150
}
144151
return Vector3.fromBlockPos(spawnBlockPos).add(0.5f, 0, 0.5f);
145152
}
146153

154+
private static boolean isFree(BlockState state, ServerLevel world, BlockPos waystonePos) {
155+
return state.getCollisionShape(world, waystonePos).isEmpty();
156+
}
157+
147158
private static ModelWaystone getWaystoneType(Random random, List<ModelWaystone> allowedWaystones) {
148159
return allowedWaystones.get(random.nextInt(allowedWaystones.size()));
149160
}

src/main/java/gollorum/signpost/minecraft/worldgen/VillageSignpost.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public static boolean populate(PostTile tile, SignBlockPart<?> generatorPart, UU
4747

4848
Collection<WaystoneHandle.Vanilla> freshlyUsedWaystones = populateSignPostGeneration(
4949
tile, generatorPart, height,
50-
tile.getBlockState().getValue(PostBlock.Facing), pieceLocation, level, random, possibleTargets
50+
tile.getBlockState().getValue(PostBlock.Facing).getOpposite(), pieceLocation, level, random, possibleTargets
5151
);
5252
waystonesTargetedByVillage.computeIfAbsent(villageLocation, k -> new ArrayList<>())
5353
.addAll(freshlyUsedWaystones);

0 commit comments

Comments
 (0)