Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.enderio.armory.common.capability.DarkSteelHelper;
import com.enderio.armory.common.item.darksteel.upgrades.DarkSteelUpgradeRegistry;
import com.enderio.armory.common.lang.ArmoryLang;
import com.enderio.enderio.api.travel.TravelTarget;
import com.enderio.enderio.api.poi.EnderPOI;
import com.enderio.enderio.config.base.BaseConfig;
import com.enderio.enderio.content.travel.TravelHandler;
import com.enderio.enderio.init.EIODataComponents;
Expand Down Expand Up @@ -102,14 +102,14 @@ private static boolean tryPerformAction(Item item, Level level, Player player, I
}

private static boolean performAction(Item item, Level level, Player player) {
Optional<TravelTarget> target = TravelHandler.getTeleportAnchorTarget(player);
Optional<EnderPOI> target = TravelHandler.getEnderPOIs(player);
if (target.isEmpty()) {
if (TravelHandler.shortTeleport(level, player)) {
player.getCooldowns().addCooldown(item, BaseConfig.COMMON.ITEMS.TRAVELLING_BLINK_DISABLED_TIME.get());
return true;
}
} else {
if (TravelHandler.blockTeleport(level, player)) {
if (target.get().onActivation(level, player)) {
player.getCooldowns().addCooldown(item, BaseConfig.COMMON.ITEMS.TRAVELLING_BLINK_DISABLED_TIME.get());
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@
import com.enderio.enderio.api.conduits.network.ConduitNetworkContextType;
import com.enderio.enderio.api.conduits.network.node.NodeDataType;
import com.enderio.enderio.api.conduits.network.node.legacy.ConduitDataType;
import com.enderio.enderio.api.travel.TravelTargetSerializer;
import com.enderio.enderio.api.travel.TravelTargetType;
import com.enderio.enderio.api.poi.EnderPOISerializer;
import com.enderio.enderio.api.poi.EnderPOIType;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.neoforged.neoforge.registries.RegistryBuilder;

public class EnderIORegistries {

public static final Registry<TravelTargetType<?>> TRAVEL_TARGET_TYPES = new RegistryBuilder<>(Keys.TRAVEL_TARGET_TYPES)
public static final Registry<EnderPOIType<?>> TRAVEL_TARGET_TYPES = new RegistryBuilder<>(Keys.TRAVEL_TARGET_TYPES)
.sync(true)
.create();

public static final Registry<TravelTargetSerializer<?>> TRAVEL_TARGET_SERIALIZERS = new RegistryBuilder<>(Keys.TRAVEL_TARGET_SERIALIZERS)
public static final Registry<EnderPOISerializer<?>> TRAVEL_TARGET_SERIALIZERS = new RegistryBuilder<>(Keys.TRAVEL_TARGET_SERIALIZERS)
.sync(true)
.create();
Comment on lines +18 to 24
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Registry naming inconsistency with EnderPOI refactor.

The registry types have been correctly updated to EnderPOIType<?> and EnderPOISerializer<?>, but the registry field names still use the TRAVEL_TARGET prefix. For consistency with the EnderPOI refactor, consider renaming:

  • TRAVEL_TARGET_TYPESENDER_POI_TYPES
  • TRAVEL_TARGET_SERIALIZERSENDER_POI_SERIALIZERS

The same applies to the registry key names in the Keys class (lines 44-45) and the string literals passed to createKey().

🤖 Prompt for AI Agents
In enderio/src/main/java/com/enderio/enderio/api/EnderIORegistries.java around
lines 18 to 24, the registry field names still use the old TRAVEL_TARGET prefix
even though types were refactored to EnderPOI; rename TRAVEL_TARGET_TYPES →
ENDER_POI_TYPES and TRAVEL_TARGET_SERIALIZERS → ENDER_POI_SERIALIZERS, update
any references/usages to the new names, and in the Keys class (around lines
44-45) rename the corresponding key constants and the string arguments passed to
createKey() to use "ender_poi_types" and "ender_poi_serializers" (or your
project's canonical snake_case), ensuring all call sites and imports are updated
to the new identifiers to keep naming consistent.


Expand All @@ -41,8 +41,8 @@ public class EnderIORegistries {
Keys.CONDUIT_NETWORK_CONTEXT_TYPE).sync(true).create();

public static class Keys {
public static final ResourceKey<Registry<TravelTargetType<?>>> TRAVEL_TARGET_TYPES = createKey("travel_target_types");
public static final ResourceKey<Registry<TravelTargetSerializer<?>>> TRAVEL_TARGET_SERIALIZERS = createKey("travel_target_serializers");
public static final ResourceKey<Registry<EnderPOIType<?>>> TRAVEL_TARGET_TYPES = createKey("travel_target_types");
public static final ResourceKey<Registry<EnderPOISerializer<?>>> TRAVEL_TARGET_SERIALIZERS = createKey("travel_target_serializers");

@Deprecated(since = "8.0.0")
public static final ResourceKey<Registry<ConduitDataType<?>>> CONDUIT_DATA_TYPE = createKey(
Expand Down
32 changes: 32 additions & 0 deletions enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.enderio.enderio.api.poi;

import com.enderio.enderio.api.EnderIORegistries;
import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;

public interface EnderPOI {
Codec<EnderPOI> CODEC = EnderIORegistries.TRAVEL_TARGET_SERIALIZERS.byNameCodec()
.dispatch(EnderPOI::serializer, EnderPOISerializer::codec);
StreamCodec<RegistryFriendlyByteBuf, EnderPOI> STREAM_CODEC = ByteBufCodecs
.registry(EnderIORegistries.Keys.TRAVEL_TARGET_SERIALIZERS)
.dispatch(EnderPOI::serializer, EnderPOISerializer::streamCodec);
Comment on lines +13 to +17
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Registry naming inconsistency with EnderPOI refactor.

The codecs reference TRAVEL_TARGET_SERIALIZERS which retains the old "TravelTarget" naming. For consistency with the EnderPOI refactor, the registry should be renamed to ENDER_POI_SERIALIZERS (and similarly ENDER_POI_TYPES for the types registry). This naming discrepancy is also present in EnderIORegistries.java.

🤖 Prompt for AI Agents
In enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOI.java around lines
13 to 17, the codec references use the old registry constant
TRAVEL_TARGET_SERIALIZERS; update these to the new ENDER_POI_SERIALIZERS name
(and any related registry constant rename ENDER_POI_TYPES where applicable) to
match the EnderPOI refactor. Also update EnderIORegistries.java to rename the
TRAVEL_TARGET_SERIALIZERS and TRAVEL_TARGET_TYPES constants/keys to
ENDER_POI_SERIALIZERS and ENDER_POI_TYPES respectively, and update any usages
(including ByteBufCodecs.registry(...) calls and byNameCodec() references)
across the codebase to the new names so all registry lookups and codec
dispatches compile and remain consistent.


BlockPos pos();

int item2BlockRange();

int block2BlockRange();

boolean isActive();

boolean onActivation(Level level, Player player);

EnderPOIType<?> type();

EnderPOISerializer<?> serializer();
}
19 changes: 19 additions & 0 deletions enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOIApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.enderio.enderio.api.poi;

import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;

import java.util.Collection;
import java.util.Optional;
import java.util.ServiceLoader;
import java.util.stream.Stream;

public interface EnderPOIApi {
EnderPOIApi INSTANCE = ServiceLoader.load(EnderPOIApi.class).findFirst().orElseThrow();

Optional<EnderPOI> get(Level level, BlockPos pos);
<T extends EnderPOI> void set(Level level, T travelTarget);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update parameter name to match type.

The parameter is named travelTarget but the type is T extends EnderPOI. For consistency, rename the parameter to enderPOI or poi.

Apply this diff:

-    <T extends EnderPOI> void set(Level level, T travelTarget);
+    <T extends EnderPOI> void set(Level level, T enderPOI);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<T extends EnderPOI> void set(Level level, T travelTarget);
<T extends EnderPOI> void set(Level level, T enderPOI);
🤖 Prompt for AI Agents
In enderio/src/main/java/com/enderio/enderio/api/poi/EnderPOIApi.java around
line 15 the method parameter is named travelTarget while the generic type is T
extends EnderPOI; rename the parameter to a name matching the type (e.g.,
enderPOI or poi) and update the method signature accordingly so it reads
something like <T extends EnderPOI> void set(Level level, T enderPOI); ensure
the parameter name change is reflected in any implementing classes and usages.

void removeAt(Level level, BlockPos pos);
Collection<EnderPOI> getAll(Level level);
Stream<EnderPOI> getInItemRange(Level level, BlockPos center);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.enderio.enderio.api.travel;
package com.enderio.enderio.api.poi;

import com.mojang.serialization.MapCodec;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;

public interface TravelTargetSerializer<T extends TravelTarget> {
public interface EnderPOISerializer <T extends EnderPOI> {
MapCodec<T> codec();
StreamCodec<RegistryFriendlyByteBuf, T> streamCodec();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.enderio.enderio.api.poi;

import net.minecraft.resources.ResourceLocation;

public interface EnderPOIType<T extends EnderPOI> {
static <T extends EnderPOI> EnderPOIType<T> simple(final ResourceLocation name) {
final String toString = name.toString();
return new EnderPOIType<>() {
@Override
public String toString() {
return toString;
}
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.enderio.enderio.api.poi;

import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.LevelRenderer;

public interface POIRenderer<T extends EnderPOI> {
void render(T pOIData, LevelRenderer levelRenderer, PoseStack poseStack, double distanceSquared, boolean active, float partialTick);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.enderio.enderio.api.poi;

import net.neoforged.bus.api.Event;
import net.neoforged.fml.event.IModBusEvent;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class RegisterEnderPOIRenderersEvent extends Event implements IModBusEvent {

public interface TravelRendererFactory<T extends EnderPOI> {
POIRenderer<T> createRenderer();
}

private final Map<EnderPOIType<?>, TravelRendererFactory<?>> renderers = new ConcurrentHashMap<>();

public <T extends EnderPOI> void register(EnderPOIType<T> type, TravelRendererFactory<T> rendererFactory) {
renderers.put(type, rendererFactory);
}

public Map<EnderPOIType<?>, TravelRendererFactory<?>> getRenderers() {
return Map.copyOf(renderers);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@javax.annotation.ParametersAreNonnullByDefault
@net.minecraft.MethodsReturnNonnullByDefault

package com.enderio.enderio.api.travel;
package com.enderio.enderio.api.poi;

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import com.enderio.enderio.EnderIO;
import com.enderio.enderio.api.conduits.model.RegisterConduitModelModifiersEvent;
import com.enderio.enderio.api.conduits.screen.RegisterConduitScreenTypesEvent;
import com.enderio.enderio.api.poi.RegisterEnderPOIRenderersEvent;
import com.enderio.enderio.api.soul.SoulBoundUtils;
import com.enderio.enderio.api.travel.RegisterTravelRenderersEvent;
import com.enderio.enderio.client.content.conduits.ConduitBundleExtension;
import com.enderio.enderio.client.content.conduits.ConduitFacadeColor;
import com.enderio.enderio.client.content.conduits.gui.ConduitScreen;
Expand Down Expand Up @@ -389,7 +389,7 @@ public BlockEntityWithoutLevelRenderer getCustomRenderer() {
}

@SubscribeEvent
public static void registerTravelRenderers(RegisterTravelRenderersEvent event) {
public static void registerTravelRenderers(RegisterEnderPOIRenderersEvent event) {
event.register(EIOTravelTargets.TRAVEL_ANCHOR_TYPE.get(), TravelAnchorRenderer::new);
event.register(EIOTravelTargets.ENDERFACE_TYPE.get(), EnderfaceRenderer::new);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.enderio.enderio.client.content.enderface;

import com.enderio.enderio.api.travel.TravelRenderer;
import com.enderio.enderio.api.poi.POIRenderer;
import com.enderio.enderio.client.foundation.renderer.OutlineBuffer;
import com.enderio.enderio.client.foundation.renderer.OutlineRenderType;
import com.enderio.enderio.content.enderface.EnderfaceTravelTarget;
Expand All @@ -15,7 +15,7 @@
import net.minecraft.util.FastColor;
import net.minecraft.world.level.block.state.BlockState;

public class EnderfaceRenderer implements TravelRenderer<EnderfaceTravelTarget> {
public class EnderfaceRenderer implements POIRenderer<EnderfaceTravelTarget> {
public static final RenderType BOLD_LINES = OutlineRenderType.createLines("bold_lines", 3);
public static final RenderType VERY_BOLD_LINES = OutlineRenderType.createLines("very_bold_lines", 5);

Expand All @@ -26,9 +26,9 @@ public void render(EnderfaceTravelTarget travelData, LevelRenderer levelRenderer
poseStack.translate(travelData.pos().getX(), travelData.pos().getY(), travelData.pos().getZ());
Minecraft minecraft = Minecraft.getInstance();
OutlineBuffer buffer = OutlineBuffer.INSTANCE;
int color = 0xFFFFFF;
int color = ChatFormatting.GREEN.getColor()== null ? 0xFFFFFF : ChatFormatting.GREEN.getColor();
if (active) {
color = ChatFormatting.GOLD.getColor() == null ? 0xFFFFFF : ChatFormatting.GOLD.getColor();
color = ChatFormatting.DARK_GREEN.getColor() == null ? 0xFFFFFF : ChatFormatting.DARK_GREEN.getColor();
}

// Render Model
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@javax.annotation.ParametersAreNonnullByDefault
@net.minecraft.MethodsReturnNonnullByDefault

package com.enderio.enderio.client.content.enderface;
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
private final BlockPos enderfacePos;
private final ClientLevel world;

private float pitch = -45;
private float pitch = 45;
private float yaw = 45;

private boolean chunkLoaded;
Expand Down Expand Up @@ -167,9 +167,9 @@
|| InputConstants.isKeyDown(window, InputConstants.KEY_LSHIFT)) {
distance -= dy * 15;
} else {
yaw -= dx * 180;
yaw += dx * 180;

Check failure

Code scanning / CodeQL

Implicit narrowing conversion in compound assignment High

Implicit cast of source type double to narrower destination type
float
.
pitch += dy * 180;

Check failure

Code scanning / CodeQL

Implicit narrowing conversion in compound assignment High

Implicit cast of source type double to narrower destination type
float
.
pitch = (float) Mth.clamp(pitch, -80, 80);
pitch = Mth.clamp(pitch, -80, 80);
}

return true;
Expand Down
Loading
Loading