Свой рендер неба в Overworld

Версия Minecraft
1.7.10

deleted.user

Мошенник
321
43
Собственно, вопрос в названии темы. Как это можно провернуть без ASM'а?
 
7,099
324
1,510
Рефлексией попробуй достать DimensionManager.providers, и установить свой провайдер, наследованный от ванильного, с переопределением getSkyRenderer
 
7,099
324
1,510
"Просто зарегал скайпровайдер...."
А чем его регать без worldProvider?
 
769
1
42
Ты его регаешь не через WorldProvider, а через ClientProxy. В регистрации установи ваниальный и вроде заработать должно. Могу соврать, это не точно. А в SkyProvider`e рендерь свои объекты на небе(лично мне с этим муторно работать).
Код:
package vacuum.core.client.proxy;

  public class CoreClientProxy extends CoreCommonProxy {

    public static long getCurrentTime;

      public static class TickHandlerClient implements ITickHandler {

        public void tickStart(EnumSet type, Object ... tickData) {
          CoreClientProxy.getCurrentTime = System.currentTimeMillis();
          Minecraft minecraft = FMLClientHandler.instance().getClient();
          WorldClient world = minecraft.theWorld;
            if(type.equals(EnumSet.of(TickType.CLIENT)) && world != null) {
          if(world.provider instanceof WorldProvider && world.provider.getSkyRenderer() == null) {
            world.provider.setSkyRenderer(new MercurySkyProvider());
              }
          }
      }
     
     public void tickEnd(EnumSet type, Object ... tickData) {}

     public String getLabel() {
        return "Vacuum Horizon Client";
     }

     public EnumSet ticks() {
        return EnumSet.of(TickType.CLIENT);
     }
  }
 
7,099
324
1,510
"world.provider.setSkyRenderer(new MercurySkyProvider());"
А если это засунуть в пост-инит, не прокатит?
 
Сверху