6 Commits

Author SHA1 Message Date
tkrmagid
52fbcd1861 render: restore textured quad on new 26.1.2 BlockEntityRenderer pipeline
Some checks failed
build / build (push) Has been cancelled
VideoPlayback now allocates a DynamicTexture per active anchor under a unique
Identifier (registered on Minecraft.getTextureManager()) and pumps RGBA frames
into it via NativeImage.setPixelABGR + DynamicTexture.upload() during the
client tick. Until the backend (JavaCV) produces a first frame, the texture
shows a dark gray placeholder with a thin border so the anchor screen is
visibly present.

VideoAnchorRenderer.submit() now uses SubmitNodeCollector.submitCustomGeometry
with RenderTypes.entityCutout(textureId), drawing a two-sided width×height
quad oriented by Direction.toYRot() + Axis.YP.rotationDegrees. Vertex
attributes use the new VertexConsumer fluent API (addVertex(Matrix4f, ...)
.setColor.setUv.setOverlay(NO_OVERLAY).setLight.setNormal).

JavaCvBackend / WatermediaBackend / WatermediaProbe / VideoBackend are
unchanged — JavaCV is referenced entirely via reflection so the mod jar
remains loadable when the bytedeco classifier jars aren't on the runtime
classpath, in which case the anchor renders its placeholder surface.
v0.3.0
2026-05-15 19:38:23 +09:00
tkrmagid
27a3f34bfa port: migrate all sources from Yarn 1.21.x to Mojmap 26.1.2
Some checks failed
build / build (push) Has been cancelled
- Block/BE/Item: BaseEntityBlock + useItemOn(InteractionResult), useOn(UseOnContext),
  setChanged(), loadAdditional(ValueInput) / saveAdditional(ValueOutput) with
  getStringOr/getIntOr/getBooleanOr/getFloatOr defaults
- Registries: BuiltInRegistries + ResourceKey + Properties.setId(ResourceKey)
- Networking: CustomPacketPayload.Type + StreamCodec.composite + RegistryFriendlyByteBuf
  (note: clientboundPlay/serverboundPlay names in fabric-networking-api-v1 6.3.1)
- Commands: Commands.literal/argument, CommandSourceStack.sendSuccess/sendFailure,
  PermissionSet.hasPermission(Permissions.COMMANDS_GAMEMASTER) (level-2 equivalent)
- Client GUI: EditBox / Button / Checkbox / AbstractSliderButton + addRenderableWidget
  (no render override; widgets render themselves under the new pipeline)
- Renderer: rewritten as stub against new BlockEntityRenderer<T, S extends BlockEntityRenderState>
  pattern (createRenderState / extractRenderState / submit). Stub does not draw a quad yet
  — frame upload and dynamic texture surface deferred until Watermedia/JavaCV are
  re-audited for Java 25
- Playback: stripped to bookkeeping-only stub (tracks active anchors, no frame pump)
- Client entrypoint: ClientTickEvents.END_LEVEL_TICK (was END_WORLD_TICK), Minecraft.level,
  LocalPlayer, Vec3, InteractionResult

./gradlew build passes against MC 26.1.2 + Fabric Loader 0.19.2 + fabric-api 0.149.0+26.1.2.
Block placement, anchor BE, payloads, commands, and GUI are functional; the anchor renders
as the plain block until the new render-state pipeline is wired with a texture.
2026-05-15 19:27:12 +09:00
tkrmagid
8f69814cb2 build: switch toolchain to MC 26.1.2 (intermediary retired)
Some checks failed
build / build (push) Has been cancelled
- net.fabricmc.fabric-loom 1.16-SNAPSHOT (no remap; MC 26.1+ ships unobfuscated)
- gradle.properties: minecraft_version=26.1.2, loader=0.19.2, fabric-api=0.149.0+26.1.2
- Java 25 toolchain
- fabric.mod.json: fabricloader>=0.19.0, java>=25
- Drop multi-version build script + matrix CI (single-target now)
- Backup of 1.21.6/7/8 working tree preserved on mc-1.21.x branch

Source migration to Mojmap names is in progress on follow-up commits;
this commit alone will not build until source files are ported.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 19:09:59 +09:00
tkrmagid
ddc16f3d90 M2-M8: renderer, playback backends, GUI/network, commands, multi-version build
Some checks failed
build-matrix / build (0.120.1+1.21.6, 1.21.6, 1.21.6+build.1) (push) Has been cancelled
build-matrix / build (0.129.0+1.21.7, 1.21.7, 1.21.7+build.8) (push) Has been cancelled
build-matrix / build (0.136.1+1.21.8, 1.21.8, 1.21.8+build.1) (push) Has been cancelled
- M2: VideoAnchorRenderer draws width\u00d7height quad oriented by facing
- M3: VideoBackend interface + JavaCV (reflection) and WaterMedia (probe) backends
- M4: VideoConfigScreen GUI + 4 typed payloads + NBT persistence via ReadView/WriteView
- M5: stick item useOnBlock place/edit, AttackBlockCallback delete, /videoPlace /videoDelete /videoMute
- M6: per-tick distance attenuation gain = volume * clamp(1 - d/16, 0, 1), mute zeroes gain
- M7: WatermediaProbe (reflection-only; reports unavailable until v2 supports 1.21.6+)
- M8: multi-version build script (1.21.6/1.21.7/1.21.8) + Gitea Actions matrix workflow
v0.2.0
2026-05-15 10:45:28 +09:00
tkrmagid
4094e492b9 feat(M1): Fabric scaffold for MC 1.21.6 with /videoStick
- video_player mod id, 영상재생모드 display name
- VideoAnchorBlock + VideoAnchorBlockEntity (placeholder)
- VideoStickItem
- /videoStick (+ /videostick alias) command gives the stick
- gradle 9.5.1 wrapper, fabric-loom 1.16.2, Java 21 toolchain
- works in both singleplayer and dedicated server (environment: *)
v0.1.0-M1
2026-05-15 00:56:35 +09:00
tkrmagid
0d46208f01 Add README with title 2026-05-15 00:39:27 +09:00