- 2
- 0
Мне нужно подсветить блок эффектом спектральной стрелы(glowing) исключительно на клиенте.
Без модов это можно сделать спавном невидимого шалкера в блоке с эффектом как раз таки этого самого glowing'a.
Модом мне нужно добиться того же самого, только на стороне клиента.
Первое что пришло в голову, поработать с рендером этого самого эффекта и вызывать его вне зависимости от существа. Но сложность заключается в том, что скорее всего там какие-то невероятные вычисления используются, ведь каждое существо подсвечивается по контуру модели, а с математикой у меня не очень.
Ещё я думал каким-то образом заставить рендерер существ отрендерить моё существо, которого на самом деле не существует на сервере. Внедрился миксиной в этот рендерер, но никакого результата это не дало. Прикреплю код, может у вас получится привести его в рабочий вид.
Без модов это можно сделать спавном невидимого шалкера в блоке с эффектом как раз таки этого самого glowing'a.
Модом мне нужно добиться того же самого, только на стороне клиента.
Первое что пришло в голову, поработать с рендером этого самого эффекта и вызывать его вне зависимости от существа. Но сложность заключается в том, что скорее всего там какие-то невероятные вычисления используются, ведь каждое существо подсвечивается по контуру модели, а с математикой у меня не очень.
Ещё я думал каким-то образом заставить рендерер существ отрендерить моё существо, которого на самом деле не существует на сервере. Внедрился миксиной в этот рендерер, но никакого результата это не дало. Прикреплю код, может у вас получится привести его в рабочий вид.
Java:
package com.treepuncher.vixionutils.mixin;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.culling.ICamera;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.monster.EntityShulker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.math.BlockPos;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(RenderGlobal.class)
public class RenderVirtualEntities {
@Shadow @Final private RenderManager renderManager;
@Shadow private int countEntitiesRendered;
@Inject(method = "renderEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityStatic(Lnet/minecraft/entity/Entity;FZ)V", ordinal = 0))
private void render(Entity renderViewEntity, ICamera camera, float partialTicks, CallbackInfo ci)
{
EntityShulker entity = new EntityShulker(Minecraft.getMinecraft().world);
EntityPlayer player = Minecraft.getMinecraft().player;
BlockPos playerPosition = player.getPosition();
entity.posX = playerPosition.getX();
entity.posY = playerPosition.getY();
entity.posZ = playerPosition.getZ();
this.renderManager.renderEntityStatic(entity, partialTicks, false);
++this.countEntitiesRendered;
}
}