|
2 | 2 |
|
3 | 3 | import com.llamalad7.mixinextras.sugar.Local;
|
4 | 4 | import net.minecraft.client.Minecraft;
|
| 5 | +import net.minecraft.client.render.RenderBlocks; |
5 | 6 | import net.minecraft.client.render.RenderGlobal;
|
| 7 | +import net.minecraft.client.render.block.model.BlockModel; |
| 8 | +import net.minecraft.client.render.block.model.BlockModelDispatcher; |
| 9 | +import net.minecraft.client.render.camera.ICamera; |
| 10 | +import net.minecraft.client.render.stitcher.TextureRegistry; |
6 | 11 | import net.minecraft.client.render.tessellator.Tessellator;
|
7 | 12 | import net.minecraft.core.block.Block;
|
8 | 13 | import net.minecraft.core.util.phys.AABB;
|
| 14 | +import net.minecraft.core.world.World; |
9 | 15 | import org.lwjgl.opengl.GL11;
|
10 | 16 | import org.spongepowered.asm.mixin.Mixin;
|
11 | 17 | import org.spongepowered.asm.mixin.Shadow;
|
| 18 | +import org.spongepowered.asm.mixin.Unique; |
12 | 19 | import org.spongepowered.asm.mixin.injection.At;
|
| 20 | +import org.spongepowered.asm.mixin.injection.Inject; |
13 | 21 | import org.spongepowered.asm.mixin.injection.Redirect;
|
14 |
| -import sunsetsatellite.catalyst.core.util.ISideInteractable; |
| 22 | +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
| 23 | +import sunsetsatellite.catalyst.core.interfaces.mixins.IKeybinds; |
| 24 | +import sunsetsatellite.catalyst.core.util.*; |
| 25 | +import sunsetsatellite.catalyst.core.util.network.Network; |
| 26 | +import sunsetsatellite.catalyst.core.util.network.NetworkManager; |
| 27 | + |
| 28 | +import java.util.ArrayList; |
| 29 | +import java.util.Set; |
15 | 30 |
|
16 | 31 | @Mixin(value = RenderGlobal.class,remap = false)
|
17 | 32 | public class RenderGlobalMixin {
|
18 | 33 |
|
19 | 34 | @Shadow
|
20 | 35 | private Minecraft mc;
|
21 | 36 |
|
| 37 | + @Shadow |
| 38 | + private World worldObj; |
| 39 | + |
22 | 40 | @Redirect(method = "drawSelectionBox",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/RenderGlobal;drawOutlinedBoundingBox(Lnet/minecraft/core/util/phys/AABB;)V"))
|
23 | 41 | public void drawOutlinedSectionedBoundingBox(RenderGlobal instance, AABB aabb, @Local int j)
|
24 | 42 | {
|
@@ -246,5 +264,61 @@ public void drawOutlinedSectionedBoundingBox(RenderGlobal instance, AABB aabb, @
|
246 | 264 | }
|
247 | 265 | }
|
248 | 266 |
|
| 267 | + @Unique |
| 268 | + private RenderBlocks blockRenderer; |
| 269 | + |
| 270 | + @Inject(method = "renderEntities", at = @At("TAIL")) |
| 271 | + public void renderWorld(ICamera camera, float partialTick, CallbackInfo ci){ |
| 272 | + if(((IKeybinds) mc.gameSettings).getNetworkRenderOption().value){ |
| 273 | + double x = camera.getX(partialTick); |
| 274 | + double y = camera.getY(partialTick); |
| 275 | + double z = camera.getZ(partialTick); |
| 276 | + Set<Network> nets = NetworkManager.getNetsForDimension(worldObj.dimension.id); |
| 277 | + ArrayList<BlockInstance> list = new ArrayList<>(); |
| 278 | + for (Network net : nets) { |
| 279 | + for (Vec3i position : net.getPositions()) { |
| 280 | + list.add(new BlockInstance(Block.sand,position,null)); |
| 281 | + } |
| 282 | + } |
| 283 | + blockRenderer = new RenderBlocks(new HologramWorld(list)); |
| 284 | + for (Network net : nets) { |
| 285 | + for (Vec3i position : net.getPositions()) { |
| 286 | + GL11.glPushMatrix(); |
| 287 | + GL11.glDisable(GL11.GL_LIGHTING); |
| 288 | + //GL11.glDisable(GL11.GL_DEPTH_TEST); |
| 289 | + BlockModel<?> model = BlockModelDispatcher.getInstance().getDispatch(Block.sand); |
| 290 | + GL11.glTranslated(position.x - x + 0.5f , position.y - y + 0.5f, position.z - z + 0.5f); |
| 291 | + ((IFullbright)model).enableFullbright(); |
| 292 | + ((IColorOverride)model).enableColorOverride(); |
| 293 | + ((IColorOverride)model).overrideColor(net.getColor().getRed() / 255f,net.getColor().getGreen() / 255f,net.getColor().getBlue() / 255f,0.5f); |
| 294 | + GL11.glScalef(1.01f,1.01f,1.01f); |
| 295 | + drawBlock(Tessellator.instance, |
| 296 | + model |
| 297 | + ); |
| 298 | + ((IColorOverride)model).disableColorOverride(); |
| 299 | + ((IFullbright)model).disableFullbright(); |
| 300 | + GL11.glEnable(GL11.GL_LIGHTING); |
| 301 | + //GL11.glEnable(GL11.GL_DEPTH_TEST); |
| 302 | + GL11.glPopMatrix(); |
| 303 | + |
| 304 | + } |
| 305 | + } |
| 306 | + } |
| 307 | + } |
| 308 | + |
| 309 | + @Unique |
| 310 | + private void drawBlock(Tessellator tessellator, BlockModel<?> model) { |
| 311 | + TextureRegistry.blockAtlas.bindTexture(); |
| 312 | + GL11.glPushMatrix(); |
| 313 | + RenderBlocks renderBlocks = BlockModel.renderBlocks; |
| 314 | + BlockModel.setRenderBlocks(blockRenderer); |
| 315 | + GL11.glEnable(GL11.GL_BLEND); |
| 316 | + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); |
| 317 | + model.renderBlockOnInventory(tessellator, 0,1,null); |
| 318 | + BlockModel.setRenderBlocks(renderBlocks); |
| 319 | + GL11.glDisable(GL11.GL_BLEND); |
| 320 | + GL11.glPopMatrix(); |
| 321 | + GL11.glEnable(GL11.GL_CULL_FACE); |
| 322 | + } |
249 | 323 |
|
250 | 324 | }
|
0 commit comments