mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-31 05:33:00 +00:00 
			
		
		
		
	ClientRegistry
This commit is contained in:
		| @@ -3,33 +3,34 @@ | |||||||
|  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. |  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. | ||||||
|  * Send enquiries to dratcliffe@gmail.com |  * Send enquiries to dratcliffe@gmail.com | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| package dan200.computercraft.client; | package dan200.computercraft.client; | ||||||
|  |  | ||||||
| import com.sun.org.apache.xpath.internal.operations.Mod; | import java.util.HashSet; | ||||||
|  | import java.util.function.Consumer; | ||||||
|  | import java.util.function.Function; | ||||||
|  |  | ||||||
| import dan200.computercraft.ComputerCraft; | import dan200.computercraft.ComputerCraft; | ||||||
| import dan200.computercraft.client.render.TurtleModelLoader; |  | ||||||
| import dan200.computercraft.shared.Registry; | import dan200.computercraft.shared.Registry; | ||||||
| import dan200.computercraft.shared.common.IColouredItem; | import dan200.computercraft.shared.common.IColouredItem; | ||||||
| import dan200.computercraft.shared.media.items.ItemDisk; | import dan200.computercraft.shared.media.items.ItemDisk; | ||||||
| import dan200.computercraft.shared.media.items.ItemTreasureDisk; | import dan200.computercraft.shared.media.items.ItemTreasureDisk; | ||||||
| import dan200.computercraft.shared.pocket.items.ItemPocketComputer; | import dan200.computercraft.shared.pocket.items.ItemPocketComputer; | ||||||
| import dan200.computercraft.shared.util.Colour; | import dan200.computercraft.shared.util.Colour; | ||||||
| import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; |  | ||||||
| import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; |  | ||||||
| import net.minecraft.client.MinecraftClient; | import net.minecraft.client.MinecraftClient; | ||||||
| import net.minecraft.client.render.model.BakedModel; | import net.minecraft.client.render.model.BakedModel; | ||||||
| import net.minecraft.client.render.model.ModelLoader; | import net.minecraft.client.render.model.ModelLoader; | ||||||
| import net.minecraft.client.render.model.ModelRotation; | import net.minecraft.client.render.model.ModelRotation; | ||||||
| import net.minecraft.client.render.model.UnbakedModel; | import net.minecraft.client.render.model.UnbakedModel; | ||||||
|  | import net.minecraft.client.texture.Sprite; | ||||||
| import net.minecraft.client.texture.SpriteAtlasTexture; | import net.minecraft.client.texture.SpriteAtlasTexture; | ||||||
| import net.minecraft.client.util.ModelIdentifier; | import net.minecraft.client.util.ModelIdentifier; | ||||||
| import net.minecraft.resource.ResourceManager; | import net.minecraft.resource.ResourceManager; | ||||||
| import net.minecraft.screen.PlayerScreenHandler; |  | ||||||
| import net.minecraft.util.Identifier; | import net.minecraft.util.Identifier; | ||||||
|  |  | ||||||
| import java.util.HashSet; | import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; | ||||||
| import java.util.Map; | import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; | ||||||
| import java.util.function.Consumer; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Registers textures and models for items. |  * Registers textures and models for items. | ||||||
| @@ -38,8 +39,7 @@ import java.util.function.Consumer; | |||||||
|     "MethodCallSideOnly", |     "MethodCallSideOnly", | ||||||
|     "LocalVariableDeclarationSideOnly" |     "LocalVariableDeclarationSideOnly" | ||||||
| }) | }) | ||||||
| public final class ClientRegistry | public final class ClientRegistry { | ||||||
| { |  | ||||||
|     private static final String[] EXTRA_MODELS = new String[] { |     private static final String[] EXTRA_MODELS = new String[] { | ||||||
|         "turtle_modem_normal_off_left", |         "turtle_modem_normal_off_left", | ||||||
|         "turtle_modem_normal_on_left", |         "turtle_modem_normal_on_left", | ||||||
| @@ -87,7 +87,9 @@ public final class ClientRegistry | |||||||
|     public static void onItemColours() { |     public static void onItemColours() { | ||||||
|         ColorProviderRegistry.ITEM.register((stack, layer) -> { |         ColorProviderRegistry.ITEM.register((stack, layer) -> { | ||||||
|             return layer == 1 ? ((ItemDisk) stack.getItem()).getColour(stack) : 0xFFFFFF; |             return layer == 1 ? ((ItemDisk) stack.getItem()).getColour(stack) : 0xFFFFFF; | ||||||
|         }); |         }, Registry.ModItems.DISK); | ||||||
|  |  | ||||||
|  |         ColorProviderRegistry.ITEM.register((stack, layer) -> layer == 1 ? ItemTreasureDisk.getColour(stack) : 0xFFFFFF, Registry.ModItems.TREASURE_DISK); | ||||||
|  |  | ||||||
|         ColorProviderRegistry.ITEM.register((stack, layer) -> { |         ColorProviderRegistry.ITEM.register((stack, layer) -> { | ||||||
|             switch (layer) { |             switch (layer) { | ||||||
| @@ -110,53 +112,13 @@ public final class ClientRegistry | |||||||
|                                             Registry.ModBlocks.TURTLE_ADVANCED); |                                             Registry.ModBlocks.TURTLE_ADVANCED); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static BakedModel bake(ModelLoader loader, UnbakedModel model) { |     private static BakedModel bake(ModelLoader loader, UnbakedModel model, Identifier identifier) { | ||||||
|         model.getTextureDependencies(loader::getOrLoadModel, new HashSet<>()); |         model.getTextureDependencies(loader::getOrLoadModel, new HashSet<>()); | ||||||
|         SpriteAtlasTexture sprite = MinecraftClient.getInstance() |         return model.bake(loader, | ||||||
|             .getSpriteAtlas(); |                           spriteIdentifier -> MinecraftClient.getInstance() | ||||||
|         return model.bake(loader, spriteIdentifier -> MinecraftClient.getInstance() |                                                              .getSpriteAtlas(spriteIdentifier.getAtlasId()) | ||||||
|             .getSpriteAtlas(spriteIdentifier.getAtlasId()).apply(spriteIdentifier.getTextureId()), ModelRotation.X0_Y0); |                                                              .apply(spriteIdentifier.getTextureId()), | ||||||
|  |                           ModelRotation.X0_Y0, identifier); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SubscribeEvent |  | ||||||
|     public static void onItemColours( ColorHandlerEvent.Item event ) |  | ||||||
|     { |  | ||||||
|         if( Registry.ModItems.DISK == null || Registry.ModBlocks.TURTLE_NORMAL == null ) |  | ||||||
|         { |  | ||||||
|             ComputerCraft.log.warn( "Block/item registration has failed. Skipping registration of item colours." ); |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         event.getItemColors().register( |  | ||||||
|             ( stack, layer ) -> layer == 1 ? ((ItemDisk) stack.getItem()).getColour( stack ) : 0xFFFFFF, |  | ||||||
|             Registry.ModItems.DISK.get() |  | ||||||
|         ); |  | ||||||
|  |  | ||||||
|         event.getItemColors().register( |  | ||||||
|             ( stack, layer ) -> layer == 1 ? ItemTreasureDisk.getColour( stack ) : 0xFFFFFF, |  | ||||||
|             Registry.ModItems.TREASURE_DISK.get() |  | ||||||
|         ); |  | ||||||
|  |  | ||||||
|         event.getItemColors().register( ( stack, layer ) -> { |  | ||||||
|             switch( layer ) |  | ||||||
|             { |  | ||||||
|                 case 0: |  | ||||||
|                 default: |  | ||||||
|                     return 0xFFFFFF; |  | ||||||
|                 case 1: // Frame colour |  | ||||||
|                     return IColouredItem.getColourBasic( stack ); |  | ||||||
|                 case 2: // Light colour |  | ||||||
|                 { |  | ||||||
|                     int light = ItemPocketComputer.getLightState( stack ); |  | ||||||
|                     return light == -1 ? Colour.BLACK.getHex() : light; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }, Registry.ModItems.POCKET_COMPUTER_NORMAL.get(), Registry.ModItems.POCKET_COMPUTER_ADVANCED.get() ); |  | ||||||
|  |  | ||||||
|         // Setup turtle colours |  | ||||||
|         event.getItemColors().register( |  | ||||||
|             ( stack, tintIndex ) -> tintIndex == 0 ? ((IColouredItem) stack.getItem()).getColour( stack ) : 0xFFFFFF, |  | ||||||
|             Registry.ModBlocks.TURTLE_NORMAL.get(), Registry.ModBlocks.TURTLE_ADVANCED.get() |  | ||||||
|         ); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -3,43 +3,42 @@ | |||||||
|  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. |  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. | ||||||
|  * Send enquiries to dratcliffe@gmail.com |  * Send enquiries to dratcliffe@gmail.com | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| package dan200.computercraft.client; | package dan200.computercraft.client; | ||||||
|  |  | ||||||
| import dan200.computercraft.ComputerCraft; |  | ||||||
| import net.minecraftforge.api.distmarker.Dist; |  | ||||||
| import net.minecraftforge.event.TickEvent; | import net.minecraftforge.event.TickEvent; | ||||||
| import net.minecraftforge.eventbus.api.SubscribeEvent; | import net.minecraftforge.eventbus.api.SubscribeEvent; | ||||||
| import net.minecraftforge.fml.common.Mod; |  | ||||||
|  |  | ||||||
| @Mod.EventBusSubscriber( modid = ComputerCraft.MOD_ID, value = Dist.CLIENT ) | import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; | ||||||
| public final class FrameInfo |  | ||||||
| { | public final class FrameInfo { | ||||||
|     private static int tick; |     private static int tick; | ||||||
|     private static long renderFrame; |     private static long renderFrame; | ||||||
|  |     static { | ||||||
|  |  | ||||||
|     private FrameInfo() |  | ||||||
|     { |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static boolean getGlobalCursorBlink() |     public static void init() { | ||||||
|     { |         ClientTickEvents.START_CLIENT_TICK.register(m -> { | ||||||
|  |             tick++; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private FrameInfo() { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static boolean getGlobalCursorBlink() { | ||||||
|         return (tick / 8) % 2 == 0; |         return (tick / 8) % 2 == 0; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static long getRenderFrame() |     public static long getRenderFrame() { | ||||||
|     { |  | ||||||
|         return renderFrame; |         return renderFrame; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SubscribeEvent |     @SubscribeEvent | ||||||
|     public static void onTick( TickEvent.ClientTickEvent event ) |     public static void onRenderTick(TickEvent.RenderTickEvent event) { | ||||||
|     { |         if (event.phase == TickEvent.Phase.START) { | ||||||
|         if( event.phase == TickEvent.Phase.START ) tick++; |             renderFrame++; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     @SubscribeEvent |  | ||||||
|     public static void onRenderTick( TickEvent.RenderTickEvent event ) |  | ||||||
|     { |  | ||||||
|         if( event.phase == TickEvent.Phase.START ) renderFrame++; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -3,10 +3,19 @@ | |||||||
|  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. |  * Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission. | ||||||
|  * Send enquiries to dratcliffe@gmail.com |  * Send enquiries to dratcliffe@gmail.com | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| package dan200.computercraft.client.proxy; | package dan200.computercraft.client.proxy; | ||||||
|  |  | ||||||
|  | import java.util.function.Supplier; | ||||||
|  |  | ||||||
| import dan200.computercraft.ComputerCraft; | import dan200.computercraft.ComputerCraft; | ||||||
| import dan200.computercraft.client.gui.*; | import dan200.computercraft.client.ClientRegistry; | ||||||
|  | import dan200.computercraft.client.FrameInfo; | ||||||
|  | import dan200.computercraft.client.gui.GuiComputer; | ||||||
|  | import dan200.computercraft.client.gui.GuiDiskDrive; | ||||||
|  | import dan200.computercraft.client.gui.GuiPrinter; | ||||||
|  | import dan200.computercraft.client.gui.GuiPrintout; | ||||||
|  | import dan200.computercraft.client.gui.GuiTurtle; | ||||||
| import dan200.computercraft.client.render.TileEntityMonitorRenderer; | import dan200.computercraft.client.render.TileEntityMonitorRenderer; | ||||||
| import dan200.computercraft.client.render.TileEntityTurtleRenderer; | import dan200.computercraft.client.render.TileEntityTurtleRenderer; | ||||||
| import dan200.computercraft.client.render.TurtlePlayerRenderer; | import dan200.computercraft.client.render.TurtlePlayerRenderer; | ||||||
| @@ -17,6 +26,13 @@ import dan200.computercraft.shared.computer.inventory.ContainerViewComputer; | |||||||
| import dan200.computercraft.shared.peripheral.monitor.ClientMonitor; | import dan200.computercraft.shared.peripheral.monitor.ClientMonitor; | ||||||
| import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer; | import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer; | ||||||
| import dan200.computercraft.shared.pocket.items.ItemPocketComputer; | import dan200.computercraft.shared.pocket.items.ItemPocketComputer; | ||||||
|  | import net.minecraftforge.api.distmarker.Dist; | ||||||
|  | import net.minecraftforge.event.world.WorldEvent; | ||||||
|  | import net.minecraftforge.eventbus.api.SubscribeEvent; | ||||||
|  | import net.minecraftforge.fml.client.registry.ClientRegistry; | ||||||
|  | import net.minecraftforge.fml.client.registry.RenderingRegistry; | ||||||
|  | import net.minecraftforge.fml.common.Mod; | ||||||
|  |  | ||||||
| import net.minecraft.client.gui.screen.ingame.HandledScreens; | import net.minecraft.client.gui.screen.ingame.HandledScreens; | ||||||
| import net.minecraft.client.item.ModelPredicateProvider; | import net.minecraft.client.item.ModelPredicateProvider; | ||||||
| import net.minecraft.client.item.ModelPredicateProviderRegistry; | import net.minecraft.client.item.ModelPredicateProviderRegistry; | ||||||
| @@ -24,84 +40,76 @@ import net.minecraft.client.render.RenderLayer; | |||||||
| import net.minecraft.client.render.RenderLayers; | import net.minecraft.client.render.RenderLayers; | ||||||
| import net.minecraft.item.Item; | import net.minecraft.item.Item; | ||||||
| import net.minecraft.util.Identifier; | import net.minecraft.util.Identifier; | ||||||
| import net.minecraftforge.api.distmarker.Dist; |  | ||||||
| import net.minecraftforge.event.world.WorldEvent; |  | ||||||
| import net.minecraftforge.eventbus.api.SubscribeEvent; |  | ||||||
| import net.minecraftforge.fml.client.registry.ClientRegistry; |  | ||||||
| import net.minecraftforge.fml.client.registry.RenderingRegistry; |  | ||||||
| import net.minecraftforge.fml.common.Mod; |  | ||||||
| import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; |  | ||||||
|  |  | ||||||
| import java.util.function.Supplier; | import net.fabricmc.api.ClientModInitializer; | ||||||
|  |  | ||||||
| @Mod.EventBusSubscriber( modid = ComputerCraft.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD ) | @SuppressWarnings ("MethodCallSideOnly") | ||||||
| public final class ComputerCraftProxyClient | public final class ComputerCraftProxyClient implements ClientModInitializer { | ||||||
| { |  | ||||||
|     @SubscribeEvent |     @SafeVarargs | ||||||
|     public static void setupClient( FMLClientSetupEvent event ) |     private static void registerItemProperty(String name, ModelPredicateProvider getter, Supplier<? extends Item>... items) { | ||||||
|     { |         Identifier id = new Identifier(ComputerCraft.MOD_ID, name); | ||||||
|  |         for (Supplier<? extends Item> item : items) { | ||||||
|  |             ModelPredicateProviderRegistry.register(item.get(), id, getter); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private static void registerContainers() { | ||||||
|  |         // My IDE doesn't think so, but we do actually need these generics. | ||||||
|  |  | ||||||
|  |         HandledScreens.<ContainerComputer, GuiComputer<ContainerComputer>>register(Registry.ModContainers.COMPUTER.get(), GuiComputer::create); | ||||||
|  |         HandledScreens.<ContainerPocketComputer, GuiComputer<ContainerPocketComputer>>register(Registry.ModContainers.POCKET_COMPUTER.get(), | ||||||
|  |                                                                                                GuiComputer::createPocket); | ||||||
|  |         HandledScreens.register(Registry.ModContainers.TURTLE, GuiTurtle::new); | ||||||
|  |  | ||||||
|  |         HandledScreens.register(Registry.ModContainers.PRINTER, GuiPrinter::new); | ||||||
|  |         HandledScreens.register(Registry.ModContainers.DISK_DRIVE, GuiDiskDrive::new); | ||||||
|  |         HandledScreens.register(Registry.ModContainers.PRINTOUT, GuiPrintout::new); | ||||||
|  |  | ||||||
|  |         HandledScreens.<ContainerViewComputer, GuiComputer<ContainerViewComputer>>register(Registry.ModContainers.VIEW_COMPUTER.get(), | ||||||
|  |                                                                                            GuiComputer::createView); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onInitializeClient() { | ||||||
|  |         FrameInfo.init(); | ||||||
|         registerContainers(); |         registerContainers(); | ||||||
|  |  | ||||||
|         // While turtles themselves are not transparent, their upgrades may be. |         // While turtles themselves are not transparent, their upgrades may be. | ||||||
|         RenderLayers.setRenderLayer( Registry.ModBlocks.TURTLE_NORMAL.get(), RenderLayer.getTranslucent() ); |         RenderLayers.setRenderLayer(Registry.ModBlocks.TURTLE_NORMAL.get(), RenderLayer.getTranslucent()); | ||||||
|         RenderLayers.setRenderLayer( Registry.ModBlocks.TURTLE_ADVANCED.get(), RenderLayer.getTranslucent() ); |         RenderLayers.setRenderLayer(Registry.ModBlocks.TURTLE_ADVANCED.get(), RenderLayer.getTranslucent()); | ||||||
|  |  | ||||||
|         // Monitors' textures have transparent fronts and so count as cutouts. |         // Monitors' textures have transparent fronts and so count as cutouts. | ||||||
|         RenderLayers.setRenderLayer( Registry.ModBlocks.MONITOR_NORMAL.get(), RenderLayer.getCutout() ); |         RenderLayers.setRenderLayer(Registry.ModBlocks.MONITOR_NORMAL.get(), RenderLayer.getCutout()); | ||||||
|         RenderLayers.setRenderLayer( Registry.ModBlocks.MONITOR_ADVANCED.get(), RenderLayer.getCutout() ); |         RenderLayers.setRenderLayer(Registry.ModBlocks.MONITOR_ADVANCED.get(), RenderLayer.getCutout()); | ||||||
|  |  | ||||||
|         // Setup TESRs |         // Setup TESRs | ||||||
|         ClientRegistry.bindTileEntityRenderer( Registry.ModTiles.MONITOR_NORMAL.get(), TileEntityMonitorRenderer::new ); |         ClientRegistry.bindTileEntityRenderer(Registry.ModTiles.MONITOR_NORMAL.get(), TileEntityMonitorRenderer::new); | ||||||
|         ClientRegistry.bindTileEntityRenderer( Registry.ModTiles.MONITOR_ADVANCED.get(), TileEntityMonitorRenderer::new ); |         ClientRegistry.bindTileEntityRenderer(Registry.ModTiles.MONITOR_ADVANCED.get(), TileEntityMonitorRenderer::new); | ||||||
|         ClientRegistry.bindTileEntityRenderer( Registry.ModTiles.TURTLE_NORMAL.get(), TileEntityTurtleRenderer::new ); |         ClientRegistry.bindTileEntityRenderer(Registry.ModTiles.TURTLE_NORMAL.get(), TileEntityTurtleRenderer::new); | ||||||
|         ClientRegistry.bindTileEntityRenderer( Registry.ModTiles.TURTLE_ADVANCED.get(), TileEntityTurtleRenderer::new ); |         ClientRegistry.bindTileEntityRenderer(Registry.ModTiles.TURTLE_ADVANCED.get(), TileEntityTurtleRenderer::new); | ||||||
|         // TODO: ClientRegistry.bindTileEntityRenderer( TileCable.FACTORY, x -> new TileEntityCableRenderer() ); |         // TODO: ClientRegistry.bindTileEntityRenderer( TileCable.FACTORY, x -> new TileEntityCableRenderer() ); | ||||||
|  |  | ||||||
|         RenderingRegistry.registerEntityRenderingHandler( Registry.ModEntities.TURTLE_PLAYER.get(), TurtlePlayerRenderer::new ); |         RenderingRegistry.registerEntityRenderingHandler(Registry.ModEntities.TURTLE_PLAYER.get(), TurtlePlayerRenderer::new); | ||||||
|  |  | ||||||
|         registerItemProperty( "state", |         registerItemProperty("state", | ||||||
|             ( stack, world, player ) -> ItemPocketComputer.getState( stack ).ordinal(), |                              (stack, world, player) -> ItemPocketComputer.getState(stack) | ||||||
|             Registry.ModItems.POCKET_COMPUTER_NORMAL, Registry.ModItems.POCKET_COMPUTER_ADVANCED |                                                                          .ordinal(), | ||||||
|         ); |                              Registry.ModItems.POCKET_COMPUTER_NORMAL, | ||||||
|         registerItemProperty( "state", |                              Registry.ModItems.POCKET_COMPUTER_ADVANCED); | ||||||
|             ( stack, world, player ) -> IColouredItem.getColourBasic( stack ) != -1 ? 1 : 0, |         registerItemProperty("state", | ||||||
|             Registry.ModItems.POCKET_COMPUTER_NORMAL, Registry.ModItems.POCKET_COMPUTER_ADVANCED |                              (stack, world, player) -> IColouredItem.getColourBasic(stack) != -1 ? 1 : 0, | ||||||
|         ); |                              Registry.ModItems.POCKET_COMPUTER_NORMAL, | ||||||
|  |                              Registry.ModItems.POCKET_COMPUTER_ADVANCED); | ||||||
|  |         ClientRegistry.onItemColours(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SafeVarargs |     @Mod.EventBusSubscriber (modid = ComputerCraft.MOD_ID, value = Dist.CLIENT) | ||||||
|     private static void registerItemProperty( String name, ModelPredicateProvider getter, Supplier<? extends Item>... items ) |     public static final class ForgeHandlers { | ||||||
|     { |  | ||||||
|         Identifier id = new Identifier( ComputerCraft.MOD_ID, name ); |  | ||||||
|         for( Supplier<? extends Item> item : items ) |  | ||||||
|         { |  | ||||||
|             ModelPredicateProviderRegistry.register( item.get(), id, getter ); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private static void registerContainers() |  | ||||||
|     { |  | ||||||
|         // My IDE doesn't think so, but we do actually need these generics. |  | ||||||
|  |  | ||||||
|         HandledScreens.<ContainerComputer, GuiComputer<ContainerComputer>>register( Registry.ModContainers.COMPUTER.get(), GuiComputer::create ); |  | ||||||
|         HandledScreens.<ContainerPocketComputer, GuiComputer<ContainerPocketComputer>>register( Registry.ModContainers.POCKET_COMPUTER.get(), GuiComputer::createPocket ); |  | ||||||
|         HandledScreens.register( Registry.ModContainers.TURTLE, GuiTurtle::new ); |  | ||||||
|  |  | ||||||
|         HandledScreens.register( Registry.ModContainers.PRINTER, GuiPrinter::new ); |  | ||||||
|         HandledScreens.register( Registry.ModContainers.DISK_DRIVE, GuiDiskDrive::new ); |  | ||||||
|         HandledScreens.register( Registry.ModContainers.PRINTOUT, GuiPrintout::new ); |  | ||||||
|  |  | ||||||
|         HandledScreens.<ContainerViewComputer, GuiComputer<ContainerViewComputer>>register( Registry.ModContainers.VIEW_COMPUTER.get(), GuiComputer::createView ); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Mod.EventBusSubscriber( modid = ComputerCraft.MOD_ID, value = Dist.CLIENT ) |  | ||||||
|     public static final class ForgeHandlers |  | ||||||
|     { |  | ||||||
|         @SubscribeEvent |         @SubscribeEvent | ||||||
|         public static void onWorldUnload( WorldEvent.Unload event ) |         public static void onWorldUnload(WorldEvent.Unload event) { | ||||||
|         { |             if (event.getWorld() | ||||||
|             if( event.getWorld().isClient() ) |                      .isClient()) { | ||||||
|             { |  | ||||||
|                 ClientMonitor.destroyAll(); |                 ClientMonitor.destroyAll(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -14,7 +14,6 @@ import net.minecraft.text.Text; | |||||||
| import net.minecraft.text.TranslatableText; | import net.minecraft.text.TranslatableText; | ||||||
| import net.minecraft.util.Formatting; | import net.minecraft.util.Formatting; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraft.util.text.*; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Various helpers for building chat messages. |  * Various helpers for building chat messages. | ||||||
|   | |||||||
| @@ -27,7 +27,8 @@ | |||||||
|     "environment": "*", |     "environment": "*", | ||||||
|     "entrypoints": { |     "entrypoints": { | ||||||
|         "main": [ "dan200.computercraft.ComputerCraft" ], |         "main": [ "dan200.computercraft.ComputerCraft" ], | ||||||
|         "modmenu": [ "dan200.computercraft.client.ModMenuIntegration" ] |         "modmenu": [ "dan200.computercraft.client.ModMenuIntegration" ], | ||||||
|  |         "client": ["dan200.computercraft.client.proxy.ComputerCraftProxyClient"] | ||||||
|     }, |     }, | ||||||
|     "mixins": [ |     "mixins": [ | ||||||
|         { "config": "computercraft.client.json", "environment": "client" }, |         { "config": "computercraft.client.json", "environment": "client" }, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Devan-Kerman
					Devan-Kerman