TestMod.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * This file is part of architectury.
  3. * Copyright (C) 2020, 2021, 2022 architectury
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation; either
  8. * version 3 of the License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * Lesser General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public License
  16. * along with this program; if not, write to the Free Software Foundation,
  17. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. */
  19. package me.shedaniel.architectury.test;
  20. import me.shedaniel.architectury.event.events.client.ClientLifecycleEvent;
  21. import me.shedaniel.architectury.registry.entity.EntityRenderers;
  22. import me.shedaniel.architectury.test.debug.ConsoleMessageSink;
  23. import me.shedaniel.architectury.test.debug.MessageSink;
  24. import me.shedaniel.architectury.test.debug.client.ClientOverlayMessageSink;
  25. import me.shedaniel.architectury.test.entity.TestEntity;
  26. import me.shedaniel.architectury.test.events.DebugEvents;
  27. import me.shedaniel.architectury.test.gamerule.TestGameRules;
  28. import me.shedaniel.architectury.test.item.TestBlockInteractions;
  29. import me.shedaniel.architectury.test.networking.TestModNet;
  30. import me.shedaniel.architectury.test.particle.TestParticles;
  31. import me.shedaniel.architectury.test.registry.TestRegistries;
  32. import me.shedaniel.architectury.test.registry.client.TestKeybinds;
  33. import me.shedaniel.architectury.test.tags.TestTags;
  34. import me.shedaniel.architectury.test.trade.TestTrades;
  35. import me.shedaniel.architectury.utils.Env;
  36. import me.shedaniel.architectury.utils.EnvExecutor;
  37. import net.fabricmc.api.EnvType;
  38. import net.fabricmc.api.Environment;
  39. import net.minecraft.client.renderer.entity.MinecartRenderer;
  40. public class TestMod {
  41. public static final MessageSink SINK = EnvExecutor.getEnvSpecific(() -> ClientOverlayMessageSink::new, () -> ConsoleMessageSink::new);
  42. public static final String MOD_ID = "architectury-test";
  43. public static void initialize() {
  44. DebugEvents.initialize();
  45. TestRegistries.initialize();
  46. TestGameRules.init();
  47. TestTags.initialize();
  48. TestTrades.init();
  49. TestParticles.initialize();
  50. TestModNet.initialize();
  51. TestBlockInteractions.init();
  52. EnvExecutor.runInEnv(Env.CLIENT, () -> TestMod.Client::initializeClient);
  53. }
  54. @Environment(EnvType.CLIENT)
  55. public static class Client {
  56. @Environment(EnvType.CLIENT)
  57. public static void initializeClient() {
  58. ClientLifecycleEvent.CLIENT_STARTED.register((client) -> SINK.accept("Client started!"));
  59. ClientLifecycleEvent.CLIENT_STOPPING.register((client) -> SINK.accept("Client stopping!"));
  60. TestKeybinds.initialize();
  61. TestModNet.initializeClient();
  62. EntityRenderers.register(TestEntity.TYPE, MinecartRenderer<TestEntity>::new);
  63. }
  64. }
  65. }