[1.7.10] Splash Screen

435
1
Собственно наткнулся на сплэшскрин (лого моджанга + форджевские элементы). Скажем мне захотелось сделать свой сплэшскрин. Как это можно осуществить?
 
MrCreppo написал(а):
Собственно наткнулся на сплэшскрин (лого моджанга + форджевские элементы). Скажем мне захотелось сделать свой сплэшскрин. Как это можно осуществить?
Сплешскрин:
  • В самом текстурпаке Minecraft ищешь картинку и меняешь на свою;
  • Используя рефлексию меняешь ссылку на файл сплеша.
Форжевские элементы:
  • Используя GuiOpenEvent меняешь основное меню на своё, лишнее убирая \ обрезая. Начиная от текста, заканчивая фоном и кнопками.
Код:
  @SideOnly(Side.CLIENT)
  @SubscribeEvent
  public void onGuiOpenEvent(GuiOpenEvent event)
  {
    if ((event.gui instanceof GuiMainMenu))
    {
      event.gui = new NEW_YOBA_SWAG_YOLO_MainMenu();
    }
  }
 
Скажем так я почитал о рефлексии и посмотрел пару примеров и понял как изменить приватные примитивы, но вот как поменять ссылку на файл... Может подскажите как?
 
MrCreppo написал(а):
Скажем так я почитал о рефлексии и посмотрел пару примеров и понял как изменить приватные примитивы, но вот как поменять ссылку на файл... Может подскажите как?
AC6XVxYTaMA.jpg


Код:
@Mod(modid = ExampleMod.MODID, version = ExampleMod.VERSION)
public class ExampleMod
{
    public static final String MODID = "examplemod";
    public static final String VERSION = "1.0";
    private static final ResourceLocation myPng = new ResourceLocation("examplemod:my_YOBA_splash.png");

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, SecurityException
    {
        this.changeConstant(Minecraft.class.getDeclaredField("locationMojangPng"), myPng);
    }
    
    public static void changeConstant(Field field, Object value) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException
    {
        field.setAccessible(true);

        int modifiers = field.getModifiers();
        Field modifierField = field.getClass().getDeclaredField("modifiers");
        modifiers = modifiers & ~Modifier.FINAL;
        modifierField.setAccessible(true);
        modifierField.setInt(field, modifiers);

        field.set(null, value);
        field.setAccessible(false);
    }
}
 
Назад
Сверху