SimpleMultipart/src/main/java/net/shadowfacts/simplemultipart/mixin/client/MixinDebugHud.java

61 lines
2.3 KiB
Java
Raw Normal View History

2018-12-29 15:24:06 +00:00
package net.shadowfacts.simplemultipart.mixin.client;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.DebugHud;
import net.minecraft.state.property.Property;
2019-01-19 16:59:58 +00:00
import net.minecraft.util.BlockHitResult;
2018-12-29 15:24:06 +00:00
import net.minecraft.util.HitResult;
import net.shadowfacts.simplemultipart.SimpleMultipart;
import net.shadowfacts.simplemultipart.container.MultipartContainer;
import net.shadowfacts.simplemultipart.multipart.Multipart;
import net.shadowfacts.simplemultipart.multipart.MultipartState;
import net.shadowfacts.simplemultipart.util.MultipartHelper;
import net.shadowfacts.simplemultipart.util.MultipartHitResult;
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.CallbackInfoReturnable;
import java.util.List;
import java.util.Map;
/**
* @author shadowfacts
*/
@Mixin(DebugHud.class)
public abstract class MixinDebugHud {
@Shadow
private MinecraftClient client;
@Shadow
private HitResult blockHit;
@Shadow
public abstract String method_1845(Map.Entry<Property<?>, Comparable<?>> map$Entry_1);
2019-01-08 01:39:42 +00:00
@Inject(method = "getRightText", at = @At("RETURN"))
2019-01-19 16:59:58 +00:00
public void getRightText(CallbackInfoReturnable<List<String>> info) {
if (!client.hasReducedDebugInfo() && blockHit != null && blockHit.getType() == HitResult.Type.BLOCK) {
BlockHitResult hitResult = (BlockHitResult)blockHit;
BlockEntity entity = client.world.getBlockEntity(hitResult.getBlockPos());
2018-12-29 15:24:06 +00:00
if (entity instanceof MultipartContainer) {
MultipartContainer container = (MultipartContainer)entity;
2019-01-19 16:59:58 +00:00
MultipartHitResult result = MultipartHelper.rayTrace(container, client.world, hitResult.getBlockPos(), client.player);
2018-12-29 15:24:06 +00:00
if (result != null && result.view != null) {
info.getReturnValue().add("");
info.getReturnValue().add("Targeted Multipart");
MultipartState state = result.view.getState();
Multipart part = state.getMultipart();
info.getReturnValue().add(String.valueOf(SimpleMultipart.MULTIPART.getId(part)));
for (Map.Entry<Property<?>, Comparable<?>> e : state.getEntries().entrySet()) {
info.getReturnValue().add(method_1845(e));
}
}
}
}
}
}