use of mcmultipart.multipart.PartInfo in project LogisticsPipes by RS485.
the class MCMPProxy method onDrawHighlight.
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void onDrawHighlight(DrawBlockHighlightEvent event) {
if (event instanceof DrawMultipartHighlightEvent) {
return;
}
RayTraceResult hit = event.getTarget();
if (hit.typeOfHit != RayTraceResult.Type.BLOCK) {
return;
}
BlockPos pos = hit.getBlockPos();
EntityPlayer player = event.getPlayer();
if (player == null) {
return;
}
World world = player.world;
if (world == null) {
return;
}
if (world.getBlockState(pos).getBlock() == LPBlocks.pipe) {
Optional<TileMultipartContainer> tile = BlockMultipartContainer.getTile(world, pos);
if (!tile.isPresent()) {
return;
}
int slotID = hit.subHit;
if (slotID < 0) {
return;
}
PartInfo info = tile.get().getParts().get(MCMultiPart.slotRegistry.getValue(slotID));
if (info == null || !(hit.hitInfo instanceof RayTraceResult)) {
return;
}
hit = (RayTraceResult) hit.hitInfo;
float partialTicks = event.getPartialTicks();
if (!MinecraftForge.EVENT_BUS.post(new DrawMultipartHighlightEvent(event.getContext(), player, hit, slotID, partialTicks, info))) {
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
GlStateManager.glLineWidth(2.0F);
GlStateManager.disableTexture2D();
GlStateManager.depthMask(false);
IBlockState state = info.getState();
if (state.getMaterial() != Material.AIR && world.getWorldBorder().contains(pos)) {
double x = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks;
double y = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks;
double z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks;
RenderGlobal.drawSelectionBoundingBox(info.getPart().getSelectedBoundingBox(info).grow(0.002).offset(-x, -y, -z), 0.0F, 0.0F, 0.0F, 0.4F);
}
GlStateManager.depthMask(true);
GlStateManager.enableTexture2D();
GlStateManager.disableBlend();
}
event.setCanceled(true);
}
}
Aggregations