Advertisement
Guest User

1.16.4 Skybox Code

a guest
Mar 25th, 2022
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.36 KB | None | 0 0
  1. package net.mcreator.testsky; <-Package id
  2.  
  3. import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
  4. import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
  5. import net.minecraftforge.fml.common.Mod;
  6. import net.minecraftforge.eventbus.api.SubscribeEvent;
  7. import net.minecraftforge.eventbus.api.EventPriority;
  8. import net.minecraftforge.client.ISkyRenderHandler;
  9. import net.minecraftforge.api.distmarker.Dist;
  10.  
  11.  
  12. import net.minecraft.client.Minecraft;
  13. import net.minecraft.client.renderer.BufferBuilder;
  14. import net.minecraft.client.renderer.FogRenderer;
  15. import net.minecraft.client.renderer.Tessellator;
  16. import net.minecraft.client.renderer.WorldVertexBufferUploader;
  17. import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  18. import net.minecraft.client.renderer.vertex.VertexBuffer;
  19. import net.minecraft.client.world.ClientWorld;
  20. import net.minecraft.client.world.DimensionRenderInfo;
  21. import net.minecraft.client.world.DimensionRenderInfo.FogType;
  22. import net.minecraft.util.ResourceLocation;
  23. import net.minecraft.util.math.MathHelper;
  24. import net.minecraft.util.math.vector.Matrix4f;
  25. import net.minecraft.util.math.vector.Vector3d;
  26. import net.minecraft.util.math.vector.Vector3f;
  27. import net.minecraftforge.api.distmarker.Dist;
  28. import net.minecraftforge.client.ISkyRenderHandler;
  29. import net.minecraftforge.eventbus.api.EventPriority;
  30. import net.minecraftforge.eventbus.api.SubscribeEvent;
  31. import net.minecraftforge.fml.common.Mod;
  32. import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
  33. import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
  34.  
  35. import com.mojang.blaze3d.systems.RenderSystem;
  36. import com.mojang.blaze3d.platform.GlStateManager;
  37. import com.mojang.blaze3d.matrix.MatrixStack;
  38. import net.mcreator.testsky.TestskyMod;
  39. import net.mcreator.testsky.TestskyModElements;
  40.  
  41. @Mod.EventBusSubscriber(modid = "MODID", bus = Bus.MOD, value = Dist.CLIENT)
  42. public class ClientEventBus {
  43.     private static final ResourceLocation DIM_RENDER_INFO = new ResourceLocation("MODID", "Dimensions id");
  44.     private static final ResourceLocation SUN_TEXTURES = new ResourceLocation("textures/item/redstone.png");
  45.     private static final ResourceLocation MOON_PHASES_TEXTURES = new ResourceLocation("textures/block/dirt.png");
  46.     private static final ResourceLocation SKY_TEXTURE = new ResourceLocation("MODID", "textures/environment/sky.png");
  47.     @SubscribeEvent(priority = EventPriority.HIGHEST)
  48.     public static void clientSetup(FMLClientSetupEvent event) {
  49.         // public net.minecraft.client.world.DimensionRenderInfo field_239208_a_ #
  50.         // field_239208_a_
  51.         // public net.minecraft.client.renderer.Minecraft.getInstance().worldRenderer
  52.         // field_175012_t # skyVBO
  53.         // public net.minecraft.client.renderer.Minecraft.getInstance().worldRenderer
  54.         // field_175014_r # skyVertexFormat
  55.         // public net.minecraft.client.renderer.Minecraft.getInstance().worldRenderer
  56.         // field_175013_s # starVBO
  57.         // public net.minecraft.client.renderer.Minecraft.getInstance().worldRenderer
  58.         // field_175011_u # sky2VBO
  59.         DimensionRenderInfo.field_239208_a_.put(DIM_RENDER_INFO,
  60.                 // cloudHeight, alternate sky color, fog type, render sky, diffuse lighting
  61.                 new DimensionRenderInfo(128, true, FogType.NORMAL, true, false) {
  62.                     @Override
  63.                     // adjustSkyColor
  64.                     public Vector3d func_230494_a_(Vector3d fogColor, float partialTicks) {
  65.                         return fogColor;
  66.                     }
  67.  
  68.                     @Override
  69.                     // useThickFog
  70.                     public boolean func_230493_a_(int posX, int posY) {
  71.                         return false;
  72.                     }
  73.  
  74.                     @Override
  75.                     public ISkyRenderHandler getSkyRenderHandler() {
  76.                         return new ISkyRenderHandler() {
  77.                             @SuppressWarnings({"deprecation"})
  78.                             @Override
  79.                             public void render(int ticks, float partialTicks, MatrixStack matrixStack, ClientWorld world, Minecraft mc) {
  80.                                 RenderSystem.disableTexture();
  81.                                 Vector3d vector3d = world.getSkyColor(mc.gameRenderer.getActiveRenderInfo().getBlockPos(), partialTicks);
  82.                                 float f = (float) vector3d.x;
  83.                                 float f1 = (float) vector3d.y;
  84.                                 float f2 = (float) vector3d.z;
  85.                                 FogRenderer.applyFog();
  86.                                 BufferBuilder bufferbuilder = Tessellator.getInstance().getBuffer();
  87.                                 RenderSystem.depthMask(false);
  88.                                 RenderSystem.enableFog();
  89.                                 RenderSystem.color3f(f, f1, f2);
  90.                                 mc.worldRenderer.skyVBO.bindBuffer();
  91.                                 mc.worldRenderer.skyVertexFormat.setupBufferState(0L);
  92.                                 mc.worldRenderer.skyVBO.draw(matrixStack.getLast().getMatrix(), 7);
  93.                                 VertexBuffer.unbindBuffer();
  94.                                 mc.worldRenderer.skyVertexFormat.clearBufferState();
  95.                                 Matrix4f matrix4f1 = matrixStack.getLast().getMatrix();
  96.                                 RenderSystem.enableAlphaTest();
  97.                                 RenderSystem.enableTexture();
  98.                                 RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE,
  99.                                         GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
  100.                                 RenderSystem.color4f(1f, 1f, 1f, 1f);
  101.                                 mc.getTextureManager().bindTexture(SKY_TEXTURE);
  102.                                 bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  103.                                 bufferbuilder.pos(matrix4f1, -100, 8f, -100).tex(0.0F, 0.0F).endVertex();
  104.                                 bufferbuilder.pos(matrix4f1, 100, 8f, -100).tex(1.0F, 0.0F).endVertex();
  105.                                 bufferbuilder.pos(matrix4f1, 100, 8f, 100).tex(1.0F, 1.0F).endVertex();
  106.                                 bufferbuilder.pos(matrix4f1, -100, 8f, 100).tex(0.0F, 1.0F).endVertex();
  107.                                 bufferbuilder.finishDrawing();
  108.                                 WorldVertexBufferUploader.draw(bufferbuilder);
  109.                                 RenderSystem.disableTexture();
  110.                                 RenderSystem.disableFog();
  111.                                 RenderSystem.disableAlphaTest();
  112.                                 RenderSystem.enableBlend();
  113.                                 RenderSystem.defaultBlendFunc();
  114.                                 float[] afloat = world.func_239132_a_().func_230492_a_(world.func_242415_f(partialTicks), partialTicks);
  115.                                 if (afloat != null) {
  116.                                     RenderSystem.disableTexture();
  117.                                     RenderSystem.shadeModel(7425);
  118.                                     matrixStack.push();
  119.                                     matrixStack.rotate(Vector3f.XP.rotationDegrees(90.0F));
  120.                                     float f3 = MathHelper.sin(world.getCelestialAngleRadians(partialTicks)) < 0.0F ? 180.0F : 0.0F;
  121.                                     matrixStack.rotate(Vector3f.ZP.rotationDegrees(f3));
  122.                                     matrixStack.rotate(Vector3f.ZP.rotationDegrees(90.0F));
  123.                                     float f4 = afloat[0];
  124.                                     float f5 = afloat[1];
  125.                                     float f6 = afloat[2];
  126.                                     Matrix4f matrix4f = matrixStack.getLast().getMatrix();
  127.                                     bufferbuilder.begin(6, DefaultVertexFormats.POSITION_COLOR);
  128.                                     bufferbuilder.pos(matrix4f, 0.0F, 100.0F, 0.0F).color(f4, f5, f6, afloat[3]).endVertex();
  129.                                     for (int j = 0; j <= 16; ++j) {
  130.                                         float f7 = (float) j * ((float) Math.PI * 2F) / 16.0F;
  131.                                         float f8 = MathHelper.sin(f7);
  132.                                         float f9 = MathHelper.cos(f7);
  133.                                         bufferbuilder.pos(matrix4f, f8 * 120.0F, f9 * 120.0F, -f9 * 40.0F * afloat[3])
  134.                                                 .color(afloat[0], afloat[1], afloat[2], 0.0F).endVertex();
  135.                                     }
  136.                                     bufferbuilder.finishDrawing();
  137.                                     WorldVertexBufferUploader.draw(bufferbuilder);
  138.                                     matrixStack.pop();
  139.                                     RenderSystem.shadeModel(7424);
  140.                                 }
  141.                                 RenderSystem.enableTexture();
  142.                                 RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE,
  143.                                         GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
  144.                                 matrixStack.push();
  145.                                 float f11 = 1.0F - world.getRainStrength(partialTicks);
  146.                                 RenderSystem.color4f(1.0F, 1.0F, 1.0F, f11);
  147.                                 matrixStack.rotate(Vector3f.YP.rotationDegrees(-90.0F));
  148.                                 matrixStack.rotate(Vector3f.XP.rotationDegrees(world.func_242415_f(partialTicks) * 360.0F));
  149.                                 matrix4f1 = matrixStack.getLast().getMatrix();
  150.                                 float f12 = 30.0F;
  151.                                 mc.getTextureManager().bindTexture(SUN_TEXTURES);
  152.                                 bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  153.                                 bufferbuilder.pos(matrix4f1, -f12, 100.0F, -f12).tex(0.0F, 0.0F).endVertex();
  154.                                 bufferbuilder.pos(matrix4f1, f12, 100.0F, -f12).tex(1.0F, 0.0F).endVertex();
  155.                                 bufferbuilder.pos(matrix4f1, f12, 100.0F, f12).tex(1.0F, 1.0F).endVertex();
  156.                                 bufferbuilder.pos(matrix4f1, -f12, 100.0F, f12).tex(0.0F, 1.0F).endVertex();
  157.                                 bufferbuilder.finishDrawing();
  158.                                 WorldVertexBufferUploader.draw(bufferbuilder);
  159.                                 f12 = 20.0F;
  160.                                 mc.getTextureManager().bindTexture(MOON_PHASES_TEXTURES);
  161.                                 int k = world.getMoonPhase();
  162.                                 int l = k % 4;
  163.                                 int i1 = k / 4 % 2;
  164.                                 float f13 = (float) (l + 0) / 4.0F;
  165.                                 float f14 = (float) (i1 + 0) / 2.0F;
  166.                                 float f15 = (float) (l + 1) / 4.0F;
  167.                                 float f16 = (float) (i1 + 1) / 2.0F;
  168.                                 bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  169.                                 bufferbuilder.pos(matrix4f1, -f12, -100.0F, f12).tex(f15, f16).endVertex();
  170.                                 bufferbuilder.pos(matrix4f1, f12, -100.0F, f12).tex(f13, f16).endVertex();
  171.                                 bufferbuilder.pos(matrix4f1, f12, -100.0F, -f12).tex(f13, f14).endVertex();
  172.                                 bufferbuilder.pos(matrix4f1, -f12, -100.0F, -f12).tex(f15, f14).endVertex();
  173.                                 bufferbuilder.finishDrawing();
  174.                                 WorldVertexBufferUploader.draw(bufferbuilder);
  175.                                 RenderSystem.disableTexture();
  176.                                 float f10 = world.getStarBrightness(partialTicks) * f11;
  177.                                 if (f10 > 0.0F) {
  178.                                     RenderSystem.color4f(f10, f10, f10, f10);
  179.                                     mc.worldRenderer.starVBO.bindBuffer();
  180.                                     mc.worldRenderer.skyVertexFormat.setupBufferState(0L);
  181.                                     mc.worldRenderer.starVBO.draw(matrixStack.getLast().getMatrix(), 7);
  182.                                     VertexBuffer.unbindBuffer();
  183.                                     mc.worldRenderer.skyVertexFormat.clearBufferState();
  184.                                 }
  185.                                 RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  186.                                 RenderSystem.disableBlend();
  187.                                 RenderSystem.enableAlphaTest();
  188.                                 RenderSystem.enableFog();
  189.                                 matrixStack.pop();
  190.                                 RenderSystem.disableTexture();
  191.                                 RenderSystem.color3f(0.0F, 0.0F, 0.0F);
  192.                                 double d0 = mc.player.getEyePosition(partialTicks).y - world.getWorldInfo().getVoidFogHeight();
  193.                                 if (d0 < 0.0D) {
  194.                                     matrixStack.push();
  195.                                     matrixStack.translate(0.0D, 12.0D, 0.0D);
  196.                                     mc.worldRenderer.sky2VBO.bindBuffer();
  197.                                     mc.worldRenderer.skyVertexFormat.setupBufferState(0L);
  198.                                     mc.worldRenderer.sky2VBO.draw(matrixStack.getLast().getMatrix(), 7);
  199.                                     VertexBuffer.unbindBuffer();
  200.                                     mc.worldRenderer.skyVertexFormat.clearBufferState();
  201.                                     matrixStack.pop();
  202.                                 }
  203.                                 if (world.func_239132_a_().func_239216_b_()) {
  204.                                     RenderSystem.color3f(f * 0.2F + 0.04F, f1 * 0.2F + 0.04F, f2 * 0.6F + 0.1F);
  205.                                 } else {
  206.                                     RenderSystem.color3f(f, f1, f2);
  207.                                 }
  208.                                 RenderSystem.enableTexture();
  209.                                 RenderSystem.depthMask(true);
  210.                                 RenderSystem.disableFog();
  211.                             }
  212.                         };
  213.                     }
  214.                 });
  215.     }
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement