Skip to content

Commit

Permalink
feat: blueprint anchor visualiser
Browse files Browse the repository at this point in the history
  • Loading branch information
andantet committed Feb 12, 2025
1 parent dcfe575 commit 69d7677
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 3 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ yarn_build=8
loader_version=0.16.10

# Mod Properties
mod_version=1.14.10
mod_version=1.15
maven_group=net.mcbrawls
mod_id=blueprint

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package net.mcbrawls.blueprint.mixin.client;

import com.llamalad7.mixinextras.sugar.Local;
import eu.pb4.polymer.core.api.client.ClientPolymerEntityType;
import eu.pb4.polymer.core.api.client.PolymerClientUtils;
import net.mcbrawls.blueprint.entity.BlueprintEntityTypes;
import net.mcbrawls.blueprint.key.BlueprintKeyBindings;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderDispatcher;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.state.EntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.text.Text;
import net.minecraft.util.math.Vec3d;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(EntityRenderDispatcher.class)
public class EntityRendererMixin {
@Inject(
method = "render(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/EntityRenderer;)V",
at = @At(
value = "FIELD",
target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;renderHitboxes:Z",
shift = At.Shift.BEFORE
)
)
private <E extends Entity, S extends EntityRenderState> void onRender(E entity, double x, double y, double z, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertices, int light, EntityRenderer<? super E, S> renderer, CallbackInfo ci, @Local S state) {
if (BlueprintKeyBindings.INSTANCE.getTOGGLE_ANCHOR_VISUALISATION().isPressed()) {
ClientPolymerEntityType trueType = PolymerClientUtils.getEntityType(entity);
if (trueType != null && trueType.registryEntry() == BlueprintEntityTypes.INSTANCE.getANCHOR()) {
float scale = 1.5f;
matrices.scale(scale, scale, scale);

state.nameLabelPos = Vec3d.ZERO;
renderer.renderLabelIfPresent(state, Text.literal(String.valueOf(entity.getId())), matrices, vertices, light);

matrices.scale(1 / scale, 1 / scale, 1 / scale);
}
}
}
}
2 changes: 2 additions & 0 deletions src/client/kotlin/net/mcbrawls/blueprint/BlueprintClient.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package net.mcbrawls.blueprint

import net.fabricmc.api.ClientModInitializer
import net.mcbrawls.blueprint.key.BlueprintKeyBindings

object BlueprintClient : ClientModInitializer {
override fun onInitializeClient() {
BlueprintKeyBindings
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package net.mcbrawls.blueprint.key

import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
import net.mcbrawls.blueprint.BlueprintMod
import net.minecraft.client.option.KeyBinding
import net.minecraft.client.util.InputUtil
import org.lwjgl.glfw.GLFW

object BlueprintKeyBindings {
val TOGGLE_ANCHOR_VISUALISATION = registerKey("toggle_anchor_visualisation", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_N,)

private fun registerKey(id: String, type: InputUtil.Type, key: Int): KeyBinding {
val modId = BlueprintMod.MOD_ID
val translationKey = "$modId.key.$id"
val category = "$modId.key_category"
val keyBinding = KeyBinding(translationKey, type, key, category)
return KeyBindingHelper.registerKeyBinding(keyBinding)
}
}
3 changes: 2 additions & 1 deletion src/client/resources/blueprint.client.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"package": "net.mcbrawls.blueprint.mixin.client",
"compatibilityLevel": "JAVA_17",
"client": [
"IntegratedServerLoaderMixin"
"EntityRendererMixin",
"IntegratedServerLoaderMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import net.minecraft.registry.RegistryKeys
import net.minecraft.util.Identifier

object BlueprintItems {
val POINT_REGION = register("point_region") { settings -> PolymerBlockItem(BlueprintBlocks.POINT_REGION, settings, Items.YELLOW_WOOL) }
val POINT_REGION = register("point_region") { settings -> PolymerBlockItem(BlueprintBlocks.POINT_REGION, settings.useBlockPrefixedTranslationKey(), Items.YELLOW_WOOL) }
val ANCHOR = register("anchor", Item.Settings().maxCount(1), ::AnchorItem)

private fun register(id: String, settings: Item.Settings = Item.Settings(), factory: (Item.Settings) -> Item): Item {
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/assets/blueprint/lang/en_us.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"entity.blueprint.anchor": "Anchor",
"block.blueprint.point_region": "Region (Point)",
"item.blueprint.anchor": "Anchor",
"blueprint.key_category": "Blueprint",
"blueprint.key.toggle_anchor_visualisation": "Toggle Anchor Visualisation"
}
1 change: 1 addition & 0 deletions src/main/resources/blueprint.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ accessWidener v2 named
accessible field net/minecraft/server/MinecraftServer session Lnet/minecraft/world/level/storage/LevelStorage$Session;
accessible field net/minecraft/resource/ResourceFinder directoryName Ljava/lang/String;
accessible field net/minecraft/resource/ResourceFinder fileExtension Ljava/lang/String;
accessible method net/minecraft/client/render/entity/EntityRenderer renderLabelIfPresent (Lnet/minecraft/client/render/entity/state/EntityRenderState;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V

0 comments on commit 69d7677

Please sign in to comment.