Rework travel api to be POI instead #1173
No reviewers
Labels
No labels
Area-Assets
Area-Backend
Area-Conduits
Area-Datapacks
Area-Lang
Area-Mod Compat
Area-Parity
Area-Rendering
Good first issue
MC-1.19.2
MC-1.20.1
MC-1.20.4
MC-1.20.6
MC-1.21
MC-1.21.1
Modtoberfest
P-0-High
P-1-Medium
P-2-Low
Status-Awaiting Response
Status-Behind-Flag
Status-Blocked
Status-Cannot Reproduce
Status-Duplicate
Status-Help Wanted
Status-Incomplete Report
Status-Invalid
Status-Needs LTS Backport
Status-Needs Updating
Status-Stale
Status-To Implement
Status-Triage
Status-Wontfix
Status-Wontmerge
Type-Backport
Type-Bug
Type-Documentation
Type-Enhancement
Type-Question
Type-RFC
Type-Suggestion
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Team-EnderIO/EnderIO#1173
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ferriarnus/feat/enderface"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Change the current travel target api to accept POI instead to generalize the api for the travel anchors and "the enderio".
TODO
Breaking Changes
List any breaking changes in this section, such as: changed/removed APIs, changed or removed items/blocks or modifications to recipes and gameplay mechanics.
Checklist
Summary by CodeRabbit
New Features
Improvements
UI
Refactor
Walkthrough
Replaces the TravelTarget API with a new EnderPOI API across the codebase. Introduces EnderPOI interfaces, serializers, types, renderers, events, storage, networking, and service loading. Migrates client and server flows to EnderPOI.onActivation. Updates registries and packets. Removes legacy travel API and related render/event classes.
Changes
enderio/.../api/poi/EnderPOI.java,enderio/.../api/poi/EnderPOIApi.java,enderio/.../api/poi/EnderPOISerializer.java,enderio/.../api/poi/EnderPOIType.java,enderio/.../api/poi/POIRenderer.java,enderio/.../api/poi/RegisterEnderPOIRenderersEvent.java,enderio/.../api/poi/package-info.javaenderio/.../api/travel/TravelTarget.java,enderio/.../api/travel/TravelTargetApi.java,enderio/.../api/travel/TravelTargetType.java,enderio/.../api/travel/TravelRenderer.java,enderio/.../api/travel/RegisterTravelRenderersEvent.javaenderio/.../client/EnderIOClient.java,enderio/.../client/content/travel/TravelTargetRendering.java,enderio/.../client/content/travel/TravelAnchorRenderer.java,enderio/.../client/content/travel/TravelAnchorHud.java,enderio/.../client/content/enderface/EnderfaceRenderer.java,enderio/.../client/content/enderface/package-info.java,enderio/.../client/content/machines/gui/screen/EnderfaceScreen.java,enderio/.../client/content/travel/TravelClientEventHandler.javaenderio/.../content/enderface/EnderfaceBlock.java,enderio/.../content/enderface/EnderfaceBlockEntity.java,enderio/.../content/enderface/EnderfaceTravelTarget.javaenderio/.../content/travel/travel_anchor/AnchorTravelTarget.java,enderio/.../content/travel/travel_anchor/TravelAnchorBlock.java,enderio/.../content/travel/travel_anchor/TravelAnchorBlockEntity.javaenderio/.../content/travel/TravelHandler.java,enderio/.../content/travel/TravelTargetSavedData.java,enderio/.../foundation/network/ClientPayloadHandler.java,enderio/.../foundation/network/ServerPayloadHandler.java,enderio/.../foundation/network/EIONetwork.java,enderio/.../foundation/network/packets/ClientboundEnderPOIUpdatedPacket.javaenderio/.../api/EnderIORegistries.java,enderio/.../init/EIOTravelTargets.javaenderio/.../resources/META-INF/services/com.enderio.enderio.api.poi.EnderPOIApi,enderio/.../resources/META-INF/services/com.enderio.enderio.api.travel.TravelTargetApienderio-armory/.../darksteel/upgrades/travel/TravelUpgrade.javaSequence Diagram(s)
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~75 minutes
Suggested labels
Area-Backend,Type-Enhancement,MC-1.21.1Poem
Pre-merge checks and finishing touches
❌ Failed checks (2 warnings)
@coderabbitai generate docstringsto improve docstring coverage.✅ Passed checks (1 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
Comment
@coderabbitai helpto get the list of available commands and usage tips.Implicit narrowing conversion in compound assignment
Implicit cast of source type double to narrower destination type float.
Show more details
Actionable comments posted: 7
🧹 Nitpick comments (12)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between
12354a353cand6014fab4db.📒 Files selected for processing (39)
enderio-armory/src/main/java/com/enderio/armory/common/item/darksteel/upgrades/travel/TravelUpgrade.java(2 hunks)enderio/src/main/java/com/enderio/enderio/api/EnderIORegistries.java(2 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOI.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOIApi.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOISerializer.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOIType.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/POIRenderer.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/RegisterEnderPOIRenderersEvent.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/poi/package-info.java(1 hunks)enderio/src/main/java/com/enderio/enderio/api/travel/RegisterTravelRenderersEvent.java(0 hunks)enderio/src/main/java/com/enderio/enderio/api/travel/TravelRenderer.java(0 hunks)enderio/src/main/java/com/enderio/enderio/api/travel/TravelTarget.java(0 hunks)enderio/src/main/java/com/enderio/enderio/api/travel/TravelTargetApi.java(0 hunks)enderio/src/main/java/com/enderio/enderio/api/travel/TravelTargetType.java(0 hunks)enderio/src/main/java/com/enderio/enderio/client/EnderIOClient.java(2 hunks)enderio/src/main/java/com/enderio/enderio/client/content/enderface/EnderfaceRenderer.java(3 hunks)enderio/src/main/java/com/enderio/enderio/client/content/enderface/package-info.java(1 hunks)enderio/src/main/java/com/enderio/enderio/client/content/machines/gui/screen/EnderfaceScreen.java(2 hunks)enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelAnchorHud.java(2 hunks)enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelAnchorRenderer.java(2 hunks)enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelClientEventHandler.java(6 hunks)enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelTargetRendering.java(3 hunks)enderio/src/main/java/com/enderio/enderio/content/enderface/EnderfaceBlock.java(3 hunks)enderio/src/main/java/com/enderio/enderio/content/enderface/EnderfaceBlockEntity.java(4 hunks)enderio/src/main/java/com/enderio/enderio/content/enderface/EnderfaceTravelTarget.java(3 hunks)enderio/src/main/java/com/enderio/enderio/content/poi/EnderPOIApiImpl.java(2 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/TravelHandler.java(5 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/TravelStaffItem.java(3 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/TravelTargetSavedData.java(6 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/travel_anchor/AnchorTravelTarget.java(4 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/travel_anchor/TravelAnchorBlock.java(2 hunks)enderio/src/main/java/com/enderio/enderio/content/travel/travel_anchor/TravelAnchorBlockEntity.java(3 hunks)enderio/src/main/java/com/enderio/enderio/foundation/network/ClientPayloadHandler.java(2 hunks)enderio/src/main/java/com/enderio/enderio/foundation/network/EIONetwork.java(2 hunks)enderio/src/main/java/com/enderio/enderio/foundation/network/ServerPayloadHandler.java(3 hunks)enderio/src/main/java/com/enderio/enderio/foundation/network/packets/ClientboundEnderPOIUpdatedPacket.java(1 hunks)enderio/src/main/java/com/enderio/enderio/init/EIOTravelTargets.java(2 hunks)enderio/src/main/resources/META-INF/services/com.enderio.enderio.api.poi.EnderPOIApi(1 hunks)enderio/src/main/resources/META-INF/services/com.enderio.enderio.api.travel.TravelTargetApi(0 hunks)💤 Files with no reviewable changes (6)
🧰 Additional context used
🧬 Code graph analysis (12)
enderio/src/main/java/com/enderio/enderio/client/EnderIOClient.java (1)
enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelClientEventHandler.java (1)
enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOI.java (1)
enderio/src/main/java/com/enderio/enderio/content/travel/TravelStaffItem.java (1)
enderio/src/main/java/com/enderio/enderio/content/travel/travel_anchor/AnchorTravelTarget.java (3)
enderio/src/main/java/com/enderio/enderio/content/enderface/EnderfaceBlock.java (1)
enderio/src/main/java/com/enderio/enderio/foundation/network/ServerPayloadHandler.java (1)
enderio/src/main/java/com/enderio/enderio/init/EIOTravelTargets.java (3)
enderio-armory/src/main/java/com/enderio/armory/common/item/darksteel/upgrades/travel/TravelUpgrade.java (1)
enderio/src/main/java/com/enderio/enderio/content/enderface/EnderfaceTravelTarget.java (3)
enderio/src/main/java/com/enderio/enderio/client/content/travel/TravelTargetRendering.java (2)
enderio/src/main/java/com/enderio/enderio/content/travel/TravelHandler.java (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
🔇 Additional comments (37)
⚠️ Potential issue | 🟡 Minor
Registry naming inconsistency with EnderPOI refactor.
The registry types have been correctly updated to
EnderPOIType<?>andEnderPOISerializer<?>, but the registry field names still use theTRAVEL_TARGETprefix. For consistency with the EnderPOI refactor, consider renaming:TRAVEL_TARGET_TYPES→ENDER_POI_TYPESTRAVEL_TARGET_SERIALIZERS→ENDER_POI_SERIALIZERSThe same applies to the registry key names in the
Keysclass (lines 44-45) and the string literals passed tocreateKey().🤖 Prompt for AI Agents
@ -0,0 +14,4 @@.dispatch(EnderPOI::serializer, EnderPOISerializer::codec);StreamCodec<RegistryFriendlyByteBuf, EnderPOI> STREAM_CODEC = ByteBufCodecs.registry(EnderIORegistries.Keys.TRAVEL_TARGET_SERIALIZERS).dispatch(EnderPOI::serializer, EnderPOISerializer::streamCodec);⚠️ Potential issue | 🟡 Minor
Registry naming inconsistency with EnderPOI refactor.
The codecs reference
TRAVEL_TARGET_SERIALIZERSwhich retains the old "TravelTarget" naming. For consistency with the EnderPOI refactor, the registry should be renamed toENDER_POI_SERIALIZERS(and similarlyENDER_POI_TYPESfor the types registry). This naming discrepancy is also present inEnderIORegistries.java.🤖 Prompt for AI Agents
@ -0,0 +12,4 @@EnderPOIApi INSTANCE = ServiceLoader.load(EnderPOIApi.class).findFirst().orElseThrow();Optional<EnderPOI> get(Level level, BlockPos pos);<T extends EnderPOI> void set(Level level, T travelTarget);⚠️ Potential issue | 🟡 Minor
Update parameter name to match type.
The parameter is named
travelTargetbut the type isT extends EnderPOI. For consistency, rename the parameter toenderPOIorpoi.Apply this diff:
📝 Committable suggestion
🤖 Prompt for AI Agents
@ -69,3 +68,4 @@for (EnderPOI target : EnderPOIApi.INSTANCE.getAll(level)) {double range = itemTeleport ? target.item2BlockRange() : target.block2BlockRange();double distanceSquared = target.pos().distToCenterSqr(player.position());if (range * range < distanceSquared || distanceSquared < TravelHandler.MIN_TELEPORTATION_DISTANCE_SQUARED⚠️ Potential issue | 🟠 Major
Null-guard the renderer lookup to avoid NPEs for unregistered types.
If no renderer was registered for a given EnderPOIType, getRenderer(...) returns null and this line will NPE.
Apply this diff:
📝 Committable suggestion
🤖 Prompt for AI Agents
⚠️ Potential issue | 🔴 Critical
Missing return statement after successful activation.
When
onActivationsucceeds, the cooldown is applied but the method doesn't returntrue. This means resources won't be consumed (see line 68-74 in the caller). The method should returntruewhen activation succeeds to ensure resources are properly consumed.Apply this diff to return
trueafter successful activation:📝 Committable suggestion
🤖 Prompt for AI Agents
🛠️ Refactor suggestion | 🟠 Major
Make deserialisation tolerant to bad data to avoid world-load crashes.
EnderPOI.CODEC.decode(...).getOrThrow()will crash on malformed or legacy entries. PreferresultOrPartialto log and skip invalid entries.Example:
This avoids hard failures and drops corrupt entries with a log (add one if desired).
🤖 Prompt for AI Agents
⚠️ Potential issue | 🔴 Critical
Fire teleport event server-side only; gate client packet send on client without event.
EntityTeleportEvent should not be posted on the client. Currently Line 78 calls TravelHandler.teleportEvent(...) before the server/client check, which can trigger client-side handlers, desync logic, and suppress the server request if “cancelled” on client. Move event posting into the server branch and send the request unconditionally on client.
Apply this diff:
🤖 Prompt for AI Agents
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.