Public Access
1 parent
b6f321e6cb
commit
bff34b9341
6 files changed
+18
-11
No files matched your search
@@ -26,7 +26,7 @@ right-clicking with an empty hand. Sneak-right-click with an empty hand to take
|
||||
the book back and restore the vanilla lectern. Breaking a Book Stand drops both
|
||||
the stored book and a vanilla lectern.
|
||||
|
||||
Bound Linking Books request a server-validated 9-by-7-by-17 snapshot around
|
||||
Bound Linking Books request a server-validated 17-by-7-by-17 snapshot around
|
||||
their destination and render its blocks as a rotating Ponder scene on the left
|
||||
page, backed by the destination biome's sky color. The snapshot is visual only;
|
||||
the server independently validates every link.
|
||||
|
||||
+5
-3
@@ -123,10 +123,12 @@ component serialization, successful safe travel with restored orientation, and
|
||||
rejection of fully blocked destinations. The test suite uses a minimal bundled
|
||||
structure template and runs with `./gradlew runGameTestServer`.
|
||||
|
||||
Version 0.1.16 makes destination previews sample a centered 17-by-7-by-17
|
||||
volume. The Ponder scene uses a scale that keeps its full horizontal diagonal
|
||||
inside the panel, so the complete snapshot remains available during its orbit.
|
||||
|
||||
The preview code is separated behind a renderer interface and uses an isolated
|
||||
Ponder level. The first iteration supplies the animated loading boundary; the
|
||||
next iteration will add server-authoritative snapshot transport and populate
|
||||
that level with the destination blocks.
|
||||
Ponder level populated from server-authoritative destination snapshots.
|
||||
|
||||
## Version policy
|
||||
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ mod_name=Rivencraft
|
||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||
mod_license=LGPL-3.0-or-later
|
||||
# The mod version. See https://semver.org/
|
||||
mod_version=0.1.15
|
||||
mod_version=0.1.16
|
||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||
# This should match the base package used for the mod sources.
|
||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
|
||||
+5
-3
@@ -43,7 +43,7 @@ public final class PonderDestinationPreviewRenderer implements DestinationPrevie
|
||||
public PonderDestinationPreviewRenderer() {
|
||||
Minecraft minecraft = Minecraft.getInstance();
|
||||
previewLevel = new PonderLevel(BlockPos.ZERO, minecraft.level);
|
||||
selection = SelectionImpl.of(new BoundingBox(0, 0, 0, 8, 6, 16));
|
||||
selection = SelectionImpl.of(new BoundingBox(0, 0, 0, 16, 6, 16));
|
||||
section = new WorldSectionElementImpl(selection);
|
||||
}
|
||||
|
||||
@@ -105,8 +105,10 @@ public final class PonderDestinationPreviewRenderer implements DestinationPrevie
|
||||
poseStack.mulPose(Axis.XP.rotationDegrees(-28.0F));
|
||||
poseStack.mulPose(Axis.YP.rotationDegrees((ticks + partialTick) * 0.6F));
|
||||
UIRenderHelper.flipForGuiRender(poseStack);
|
||||
poseStack.scale(7.0F, 7.0F, 7.0F);
|
||||
poseStack.translate(-4.5F, -1.5F, -8.5F);
|
||||
// A 17×17 footprint has a 24-block diagonal. This scale fits that
|
||||
// diagonal in the panel, including at the 45° points of the orbit.
|
||||
poseStack.scale(4.6F, 4.6F, 4.6F);
|
||||
poseStack.translate(-8.5F, -1.5F, -8.5F);
|
||||
|
||||
SuperRenderTypeBuffer buffer = DefaultSuperRenderTypeBuffer.getInstance();
|
||||
section.renderFirst(previewLevel, buffer, graphics, partialTick);
|
||||
|
||||
@@ -12,7 +12,8 @@ import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public record LinkPreviewPayload(int skyColor, List<SnapshotBlock> blocks) implements CustomPacketPayload {
|
||||
private static final int MAX_BLOCKS = 9 * 7 * 17;
|
||||
/** A square footprint keeps every side of the scene available during a full orbit. */
|
||||
private static final int MAX_BLOCKS = 17 * 7 * 17;
|
||||
public static final Type<LinkPreviewPayload> TYPE = new Type<>(
|
||||
ResourceLocation.fromNamespaceAndPath(Rivencraft.MOD_ID, "link_preview")
|
||||
);
|
||||
|
||||
@@ -114,10 +114,12 @@ public final class ModNetworking {
|
||||
|
||||
BlockPos origin = target.location().pos();
|
||||
List<LinkPreviewPayload.SnapshotBlock> blocks = new ArrayList<>();
|
||||
for (BlockPos pos : BlockPos.betweenClosed(origin.offset(-4, -2, -8), origin.offset(4, 4, 8))) {
|
||||
// The preview rotates through a complete orbit. Use the same radius on
|
||||
// both horizontal axes so no side falls outside the snapshot at 90°.
|
||||
for (BlockPos pos : BlockPos.betweenClosed(origin.offset(-8, -2, -8), origin.offset(8, 4, 8))) {
|
||||
var state = level.getBlockState(pos);
|
||||
if (!state.isAir()) {
|
||||
blocks.add(new LinkPreviewPayload.SnapshotBlock(pos.subtract(origin).offset(4, 2, 8), state));
|
||||
blocks.add(new LinkPreviewPayload.SnapshotBlock(pos.subtract(origin).offset(8, 2, 8), state));
|
||||
}
|
||||
}
|
||||
int skyColor = level.getBiome(origin).value().getSkyColor();
|
||||
|
||||
Reference in new issue
Block a user