1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-09-28 07:08:20 +00:00

Bump mappings and Forge versions

Things are shaping up nicely!
This commit is contained in:
SquidDev 2019-06-09 08:58:49 +01:00
parent 39a9ad0ce7
commit 15d4a55cd8
29 changed files with 147 additions and 127 deletions

View File

@ -3,5 +3,5 @@ mod_version=1.83.1
# Minecraft properties # Minecraft properties
mc_version=1.14.2 mc_version=1.14.2
forge_version=26.0.5 forge_version=26.0.10
mappings_version=20190608-1.14.2 mappings_version=20190609-1.14.2

View File

@ -65,7 +65,7 @@ public class ClientTableFormatter implements TableFormatter
public void writeLine( int id, ITextComponent component ) public void writeLine( int id, ITextComponent component )
{ {
Minecraft mc = Minecraft.getInstance(); Minecraft mc = Minecraft.getInstance();
NewChatGui chat = mc.field_71456_v.getChatGUI(); // ingameGUI NewChatGui chat = mc.ingameGUI.getChatGUI();
// Trim the text if it goes over the allowed length // Trim the text if it goes over the allowed length
int maxWidth = MathHelper.floor( chat.getChatWidth() / chat.getScale() ); int maxWidth = MathHelper.floor( chat.getChatWidth() / chat.getScale() );
@ -76,7 +76,7 @@ public class ClientTableFormatter implements TableFormatter
@Override @Override
public int display( TableBuilder table ) public int display( TableBuilder table )
{ {
NewChatGui chat = Minecraft.getInstance().field_71456_v.getChatGUI(); NewChatGui chat = Minecraft.getInstance().ingameGUI.getChatGUI();
int lastHeight = lastHeights.get( table.getId() ); int lastHeight = lastHeights.get( table.getId() );

View File

@ -10,14 +10,17 @@ import com.mojang.blaze3d.platform.GlStateManager;
import dan200.computercraft.ComputerCraft; import dan200.computercraft.ComputerCraft;
import dan200.computercraft.client.gui.widgets.WidgetTerminal; import dan200.computercraft.client.gui.widgets.WidgetTerminal;
import dan200.computercraft.client.gui.widgets.WidgetWrapper; import dan200.computercraft.client.gui.widgets.WidgetWrapper;
import dan200.computercraft.shared.computer.blocks.TileComputer;
import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.ClientComputer;
import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.computer.core.IContainerComputer; import dan200.computercraft.shared.computer.core.IContainerComputer;
import dan200.computercraft.shared.computer.inventory.ContainerComputer; import dan200.computercraft.shared.computer.inventory.ContainerComputer;
import dan200.computercraft.shared.computer.inventory.ContainerViewComputer;
import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer;
import dan200.computercraft.shared.pocket.items.ItemPocketComputer;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@ -49,17 +52,39 @@ public class GuiComputer<T extends Container & IContainerComputer> extends Conta
terminal = null; terminal = null;
} }
public static GuiComputer<ContainerComputer> create( int id, TileComputer computer, PlayerInventory inventory, ITextComponent component ) public static GuiComputer<ContainerComputer> create( ContainerComputer container, PlayerInventory inventory, ITextComponent component )
{ {
return new GuiComputer<>( return new GuiComputer<>(
new ContainerComputer( id, computer ), inventory, component, container, inventory, component,
computer.getFamily(), container.getFamily(),
computer.createClientComputer(), (ClientComputer) container.getComputer(),
ComputerCraft.terminalWidth_computer, ComputerCraft.terminalWidth_computer,
ComputerCraft.terminalHeight_computer ComputerCraft.terminalHeight_computer
); );
} }
public static GuiComputer<ContainerPocketComputer> createPocket( ContainerPocketComputer container, PlayerInventory inventory, ITextComponent component )
{
Item item = container.getStack().getItem();
return new GuiComputer<>(
container, inventory, component,
item instanceof ItemPocketComputer ? ((ItemPocketComputer) item).getFamily() : ComputerFamily.Normal,
(ClientComputer) container.getComputer(),
ComputerCraft.terminalWidth_computer,
ComputerCraft.terminalHeight_computer
);
}
public static GuiComputer<ContainerViewComputer> createView( ContainerViewComputer container, PlayerInventory inventory, ITextComponent component )
{
return new GuiComputer<>(
container, inventory, component,
// TODO: Waiting to see how Forge handles this before implementing anything else.
null, (ClientComputer) container.getComputer(), 0, 0
);
}
@Override @Override
protected void init() protected void init()
{ {

View File

@ -1,36 +0,0 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2019. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.gui;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer;
import dan200.computercraft.shared.pocket.items.ItemPocketComputer;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
public class GuiPocketComputer extends GuiComputer<ContainerPocketComputer>
{
public GuiPocketComputer( ContainerPocketComputer container, PlayerInventory player, ITextComponent title )
{
super(
container, player, title,
getFamily( container.getStack() ),
ItemPocketComputer.createClientComputer( container.getStack() ),
ComputerCraft.terminalWidth_pocketComputer,
ComputerCraft.terminalHeight_pocketComputer
);
}
private static ComputerFamily getFamily( ItemStack stack )
{
Item item = stack.getItem();
return item instanceof ItemPocketComputer ? ((ItemPocketComputer) item).getFamily() : ComputerFamily.Normal;
}
}

View File

@ -12,7 +12,6 @@ import dan200.computercraft.client.gui.widgets.WidgetTerminal;
import dan200.computercraft.client.gui.widgets.WidgetWrapper; import dan200.computercraft.client.gui.widgets.WidgetWrapper;
import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.ClientComputer;
import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.turtle.blocks.TileTurtle;
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle; import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
@ -32,13 +31,13 @@ public class GuiTurtle extends ContainerScreen<ContainerTurtle>
private WidgetTerminal terminal; private WidgetTerminal terminal;
private WidgetWrapper terminalWrapper; private WidgetWrapper terminalWrapper;
public GuiTurtle( TileTurtle turtle, ContainerTurtle container, PlayerInventory player, ITextComponent title ) public GuiTurtle( ContainerTurtle container, PlayerInventory player, ITextComponent title )
{ {
super( container, player, title ); super( container, player, title );
m_container = container; m_container = container;
m_family = turtle.getFamily(); m_family = null; // TODO
m_computer = turtle.getClientComputer(); m_computer = (ClientComputer) container.getComputer();
xSize = 254; xSize = 254;
ySize = 217; ySize = 217;

View File

@ -7,14 +7,13 @@
package dan200.computercraft.client.proxy; package dan200.computercraft.client.proxy;
import dan200.computercraft.ComputerCraft; import dan200.computercraft.ComputerCraft;
import dan200.computercraft.client.gui.GuiDiskDrive; import dan200.computercraft.client.gui.*;
import dan200.computercraft.client.gui.GuiPocketComputer;
import dan200.computercraft.client.gui.GuiPrinter;
import dan200.computercraft.client.gui.GuiPrintout;
import dan200.computercraft.client.render.TileEntityCableRenderer; import dan200.computercraft.client.render.TileEntityCableRenderer;
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.shared.common.ContainerHeldItem; import dan200.computercraft.shared.common.ContainerHeldItem;
import dan200.computercraft.shared.computer.inventory.ContainerComputer;
import dan200.computercraft.shared.computer.inventory.ContainerViewComputer;
import dan200.computercraft.shared.peripheral.diskdrive.ContainerDiskDrive; import dan200.computercraft.shared.peripheral.diskdrive.ContainerDiskDrive;
import dan200.computercraft.shared.peripheral.modem.wired.TileCable; import dan200.computercraft.shared.peripheral.modem.wired.TileCable;
import dan200.computercraft.shared.peripheral.monitor.ClientMonitor; import dan200.computercraft.shared.peripheral.monitor.ClientMonitor;
@ -22,6 +21,7 @@ import dan200.computercraft.shared.peripheral.monitor.TileMonitor;
import dan200.computercraft.shared.peripheral.printer.ContainerPrinter; import dan200.computercraft.shared.peripheral.printer.ContainerPrinter;
import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer; import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer;
import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.blocks.TileTurtle;
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.gui.ScreenManager;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.event.world.WorldEvent;
@ -46,11 +46,17 @@ public final class ComputerCraftProxyClient
private static void registerContainers() private static void registerContainers()
{ {
// My IDE doesn't think so, but we do actually need these generics.
ScreenManager.<ContainerComputer, GuiComputer<ContainerComputer>>registerFactory( ContainerComputer.TYPE, GuiComputer::create );
ScreenManager.<ContainerPocketComputer, GuiComputer<ContainerPocketComputer>>registerFactory( ContainerPocketComputer.TYPE, GuiComputer::createPocket );
ScreenManager.registerFactory( ContainerTurtle.TYPE, GuiTurtle::new );
ScreenManager.registerFactory( ContainerPrinter.TYPE, GuiPrinter::new ); ScreenManager.registerFactory( ContainerPrinter.TYPE, GuiPrinter::new );
ScreenManager.registerFactory( ContainerDiskDrive.TYPE, GuiDiskDrive::new ); ScreenManager.registerFactory( ContainerDiskDrive.TYPE, GuiDiskDrive::new );
ScreenManager.registerFactory( ContainerPocketComputer.TYPE, GuiPocketComputer::new );
ScreenManager.registerFactory( ContainerHeldItem.PRINTOUT_TYPE, GuiPrintout::new ); ScreenManager.registerFactory( ContainerHeldItem.PRINTOUT_TYPE, GuiPrintout::new );
// TODO: ScreenManager.registerFactory( ContainerViewComputer.TYPE, GuiComputer::new );
ScreenManager.<ContainerViewComputer, GuiComputer<ContainerViewComputer>>registerFactory( ContainerViewComputer.TYPE, GuiComputer::createView );
} }
@Mod.EventBusSubscriber( modid = ComputerCraft.MOD_ID, value = Dist.CLIENT ) @Mod.EventBusSubscriber( modid = ComputerCraft.MOD_ID, value = Dist.CLIENT )

View File

@ -91,7 +91,7 @@ public class TileEntityTurtleRenderer extends TileEntityRenderer<TileTurtle>
if( label != null && hit.getType() == RayTraceResult.Type.BLOCK && turtle.getPos().equals( ((BlockRayTraceResult) hit).getPos() ) ) if( label != null && hit.getType() == RayTraceResult.Type.BLOCK && turtle.getPos().equals( ((BlockRayTraceResult) hit).getPos() ) )
{ {
setLightmapDisabled( true ); setLightmapDisabled( true );
GameRenderer.func_215307_a( GameRenderer.drawNameplate(
getFontRenderer(), label, getFontRenderer(), label,
(float) posX + 0.5F, (float) posY + 1.2F, (float) posZ + 0.5F, 0, (float) posX + 0.5F, (float) posY + 1.2F, (float) posZ + 0.5F, 0,
rendererDispatcher.field_217666_g.func_216778_f(), rendererDispatcher.field_217666_g.func_216777_e(), false rendererDispatcher.field_217666_g.func_216778_f(), rendererDispatcher.field_217666_g.func_216777_e(), false

View File

@ -267,7 +267,7 @@ public class ResourceMount implements IMount
synchronized void add( IReloadableResourceManager manager, ResourceMount mount ) synchronized void add( IReloadableResourceManager manager, ResourceMount mount )
{ {
if( managers.add( manager ) ) manager.func_219534_a( this ); // addReloadListener if( managers.add( manager ) ) manager.addReloadListener( this );
mounts.add( mount ); mounts.add( mount );
} }
} }

View File

@ -8,15 +8,19 @@ package dan200.computercraft.shared;
import dan200.computercraft.ComputerCraft; import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.ComputerCraftAPI; import dan200.computercraft.api.ComputerCraftAPI;
import dan200.computercraft.shared.common.ContainerHeldItem;
import dan200.computercraft.shared.computer.blocks.BlockComputer; import dan200.computercraft.shared.computer.blocks.BlockComputer;
import dan200.computercraft.shared.computer.blocks.TileCommandComputer; import dan200.computercraft.shared.computer.blocks.TileCommandComputer;
import dan200.computercraft.shared.computer.blocks.TileComputer; import dan200.computercraft.shared.computer.blocks.TileComputer;
import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.computer.inventory.ContainerComputer;
import dan200.computercraft.shared.computer.inventory.ContainerViewComputer;
import dan200.computercraft.shared.computer.items.ItemComputer; import dan200.computercraft.shared.computer.items.ItemComputer;
import dan200.computercraft.shared.media.items.ItemDisk; import dan200.computercraft.shared.media.items.ItemDisk;
import dan200.computercraft.shared.media.items.ItemPrintout; import dan200.computercraft.shared.media.items.ItemPrintout;
import dan200.computercraft.shared.media.items.ItemTreasureDisk; import dan200.computercraft.shared.media.items.ItemTreasureDisk;
import dan200.computercraft.shared.peripheral.diskdrive.BlockDiskDrive; import dan200.computercraft.shared.peripheral.diskdrive.BlockDiskDrive;
import dan200.computercraft.shared.peripheral.diskdrive.ContainerDiskDrive;
import dan200.computercraft.shared.peripheral.diskdrive.TileDiskDrive; import dan200.computercraft.shared.peripheral.diskdrive.TileDiskDrive;
import dan200.computercraft.shared.peripheral.modem.wired.*; import dan200.computercraft.shared.peripheral.modem.wired.*;
import dan200.computercraft.shared.peripheral.modem.wireless.BlockWirelessModem; import dan200.computercraft.shared.peripheral.modem.wireless.BlockWirelessModem;
@ -24,21 +28,25 @@ import dan200.computercraft.shared.peripheral.modem.wireless.TileWirelessModem;
import dan200.computercraft.shared.peripheral.monitor.BlockMonitor; import dan200.computercraft.shared.peripheral.monitor.BlockMonitor;
import dan200.computercraft.shared.peripheral.monitor.TileMonitor; import dan200.computercraft.shared.peripheral.monitor.TileMonitor;
import dan200.computercraft.shared.peripheral.printer.BlockPrinter; import dan200.computercraft.shared.peripheral.printer.BlockPrinter;
import dan200.computercraft.shared.peripheral.printer.ContainerPrinter;
import dan200.computercraft.shared.peripheral.printer.TilePrinter; import dan200.computercraft.shared.peripheral.printer.TilePrinter;
import dan200.computercraft.shared.peripheral.speaker.BlockSpeaker; import dan200.computercraft.shared.peripheral.speaker.BlockSpeaker;
import dan200.computercraft.shared.peripheral.speaker.TileSpeaker; import dan200.computercraft.shared.peripheral.speaker.TileSpeaker;
import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer;
import dan200.computercraft.shared.pocket.items.ItemPocketComputer; import dan200.computercraft.shared.pocket.items.ItemPocketComputer;
import dan200.computercraft.shared.pocket.peripherals.PocketModem; import dan200.computercraft.shared.pocket.peripherals.PocketModem;
import dan200.computercraft.shared.pocket.peripherals.PocketSpeaker; import dan200.computercraft.shared.pocket.peripherals.PocketSpeaker;
import dan200.computercraft.shared.turtle.blocks.BlockTurtle; import dan200.computercraft.shared.turtle.blocks.BlockTurtle;
import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.blocks.TileTurtle;
import dan200.computercraft.shared.turtle.core.TurtlePlayer; import dan200.computercraft.shared.turtle.core.TurtlePlayer;
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
import dan200.computercraft.shared.turtle.items.ItemTurtle; import dan200.computercraft.shared.turtle.items.ItemTurtle;
import dan200.computercraft.shared.turtle.upgrades.*; import dan200.computercraft.shared.turtle.upgrades.*;
import dan200.computercraft.shared.util.CreativeTabMain; import dan200.computercraft.shared.util.CreativeTabMain;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
@ -311,4 +319,20 @@ public final class Registry
{ {
registry.getRegistry().register( TurtlePlayer.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "turtle_player" ) ) ); registry.getRegistry().register( TurtlePlayer.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "turtle_player" ) ) );
} }
@SubscribeEvent
public static void registerContainers( RegistryEvent.Register<ContainerType<?>> event )
{
event.getRegistry().registerAll(
ContainerComputer.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "computer" ) ),
ContainerPocketComputer.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "pocket_computer" ) ),
ContainerTurtle.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "turtle" ) ),
ContainerDiskDrive.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "disk_drive" ) ),
ContainerPrinter.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "printer" ) ),
ContainerHeldItem.PRINTOUT_TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "printout" ) ),
ContainerViewComputer.TYPE.setRegistryName( new ResourceLocation( ComputerCraft.MOD_ID, "view_computer" ) )
);
}
} }

View File

@ -18,12 +18,12 @@ public final class ArgumentSerializers
@SuppressWarnings( "unchecked" ) @SuppressWarnings( "unchecked" )
private static <T extends ArgumentType<?>> void registerUnsafe( ResourceLocation id, Class<T> type, IArgumentSerializer<?> serializer ) private static <T extends ArgumentType<?>> void registerUnsafe( ResourceLocation id, Class<T> type, IArgumentSerializer<?> serializer )
{ {
ArgumentTypes.func_218136_a( id.toString(), type, (IArgumentSerializer<T>) serializer ); ArgumentTypes.register( id.toString(), type, (IArgumentSerializer<T>) serializer );
} }
private static <T extends ArgumentType<?>> void register( ResourceLocation id, Class<T> type, IArgumentSerializer<T> serializer ) private static <T extends ArgumentType<?>> void register( ResourceLocation id, Class<T> type, IArgumentSerializer<T> serializer )
{ {
ArgumentTypes.func_218136_a( id.toString(), type, serializer ); ArgumentTypes.register( id.toString(), type, serializer );
} }
private static <T extends ArgumentType<?>> void register( ResourceLocation id, T instance ) private static <T extends ArgumentType<?>> void register( ResourceLocation id, T instance )

View File

@ -20,7 +20,7 @@ import net.minecraft.world.World;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ColourableRecipe extends SpecialRecipe public final class ColourableRecipe extends SpecialRecipe
{ {
private ColourableRecipe( ResourceLocation id ) private ColourableRecipe( ResourceLocation id )
{ {

View File

@ -148,7 +148,7 @@ public abstract class BlockComputerBase<T extends TileComputerBase> extends Bloc
if( tile instanceof TileComputerBase ) if( tile instanceof TileComputerBase )
{ {
TileComputerBase computer = (TileComputerBase) tile; TileComputerBase computer = (TileComputerBase) tile;
if( !player.playerAbilities.isCreativeMode || computer.getLabel() != null ) if( !player.abilities.isCreativeMode || computer.getLabel() != null )
{ {
spawnAsEntity( world, pos, getItem( computer ) ); spawnAsEntity( world, pos, getItem( computer ) );
} }

View File

@ -7,23 +7,27 @@
package dan200.computercraft.shared.computer.inventory; package dan200.computercraft.shared.computer.inventory;
import dan200.computercraft.shared.computer.blocks.TileComputer; import dan200.computercraft.shared.computer.blocks.TileComputer;
import dan200.computercraft.shared.computer.core.ComputerFamily;
import dan200.computercraft.shared.computer.core.IComputer; import dan200.computercraft.shared.computer.core.IComputer;
import dan200.computercraft.shared.computer.core.IContainerComputer; import dan200.computercraft.shared.computer.core.IContainerComputer;
import dan200.computercraft.shared.computer.core.InputState; import dan200.computercraft.shared.computer.core.InputState;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.ContainerType;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class ContainerComputer extends Container implements IContainerComputer public class ContainerComputer extends Container implements IContainerComputer
{ {
public static final ContainerType<ContainerComputer> TYPE = new ContainerType<>( ( id, player ) -> null );
private final TileComputer computer; private final TileComputer computer;
private final InputState input = new InputState( this ); private final InputState input = new InputState( this );
public ContainerComputer( int id, TileComputer computer ) public ContainerComputer( int id, TileComputer computer )
{ {
super( null, id ); super( TYPE, id );
this.computer = computer; this.computer = computer;
} }
@ -33,6 +37,12 @@ public class ContainerComputer extends Container implements IContainerComputer
return computer.isUsableByPlayer( player ); return computer.isUsableByPlayer( player );
} }
@Nonnull
public ComputerFamily getFamily()
{
return computer.getFamily();
}
@Nullable @Nullable
@Override @Override
public IComputer getComputer() public IComputer getComputer()

View File

@ -83,6 +83,6 @@ public class PlayRecordClientMessage implements NetworkMessage
{ {
Minecraft mc = Minecraft.getInstance(); Minecraft mc = Minecraft.getInstance();
mc.worldRenderer.playRecord( soundEvent, pos ); mc.worldRenderer.playRecord( soundEvent, pos );
if( name != null ) mc.field_71456_v.setRecordPlayingMessage( name ); if( name != null ) mc.ingameGUI.setRecordPlayingMessage( name );
} }
} }

View File

@ -504,7 +504,7 @@ public final class TileDiskDrive extends TileGeneric implements DefaultInventory
ItemEntity entityitem = new ItemEntity( getWorld(), x, y, z, disks ); ItemEntity entityitem = new ItemEntity( getWorld(), x, y, z, disks );
entityitem.setVelocity( xOff * 0.15, 0, zOff * 0.15 ); entityitem.setVelocity( xOff * 0.15, 0, zOff * 0.15 );
getWorld().func_217376_c( entityitem ); getWorld().addEntity( entityitem );
if( !destroyed ) getWorld().playBroadcastSound( 1000, getPos(), 0 ); if( !destroyed ) getWorld().playBroadcastSound( 1000, getPos(), 0 );
} }

View File

@ -105,7 +105,7 @@ public class BlockCable extends BlockGeneric implements IWaterLoggable
{ {
if( state.get( CABLE ) && state.get( MODEM ).getFacing() != null ) if( state.get( CABLE ) && state.get( MODEM ).getFacing() != null )
{ {
BlockRayTraceResult hit = world.func_217299_a( new RayTraceContext( BlockRayTraceResult hit = world.rayTraceBlocks( new RayTraceContext(
WorldUtil.getRayStart( player ), WorldUtil.getRayEnd( player ), WorldUtil.getRayStart( player ), WorldUtil.getRayEnd( player ),
RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, player RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, player
) ); ) );
@ -134,7 +134,7 @@ public class BlockCable extends BlockGeneric implements IWaterLoggable
cable.modemChanged(); cable.modemChanged();
cable.connectionsChanged(); cable.connectionsChanged();
if( !world.isRemote && !player.playerAbilities.isCreativeMode ) if( !world.isRemote && !player.abilities.isCreativeMode )
{ {
Block.spawnAsEntity( world, pos, item ); Block.spawnAsEntity( world, pos, item );
} }
@ -210,7 +210,7 @@ public class BlockCable extends BlockGeneric implements IWaterLoggable
BlockPos offsetPos = pos.offset( facing ); BlockPos offsetPos = pos.offset( facing );
BlockState offsetState = world.getBlockState( offsetPos ); BlockState offsetState = world.getBlockState( offsetPos );
return Block.func_220056_d( offsetState, world, offsetPos, facing.getOpposite() ); // hasSolidTop ?? return Block.hasSolidSide( offsetState, world, offsetPos, facing.getOpposite() );
} }
@Nullable @Nullable

View File

@ -85,7 +85,7 @@ public class BlockWirelessModem extends BlockGeneric implements IWaterLoggable
Direction facing = state.get( FACING ); Direction facing = state.get( FACING );
BlockPos offsetPos = pos.offset( facing ); BlockPos offsetPos = pos.offset( facing );
BlockState offsetState = world.getBlockState( offsetPos ); BlockState offsetState = world.getBlockState( offsetPos );
return func_220056_d( offsetState, world, offsetPos, facing.getOpposite() ); return hasSolidSide( offsetState, world, offsetPos, facing.getOpposite() );
} }
@Nullable @Nullable

View File

@ -51,7 +51,7 @@ public abstract class WirelessModemPeripheral extends ModemPeripheral
} }
if( position.y > 96.0 && maxRange > minRange ) if( position.y > 96.0 && maxRange > minRange )
{ {
return minRange + (position.y - 96.0) * ((maxRange - minRange) / ((world.func_217301_I() - 1) - 96.0)); return minRange + (position.y - 96.0) * ((maxRange - minRange) / ((world.getHeight() - 1) - 96.0));
} }
return minRange; return minRange;
} }

View File

@ -63,7 +63,7 @@ public class ContainerPrinter extends Container
private ContainerPrinter( int id, PlayerInventory player ) private ContainerPrinter( int id, PlayerInventory player )
{ {
this( id, player, new Inventory( TilePrinter.SLOTS ), new IntArray( TilePrinter.PROPERTIES ) ); this( id, player, new Inventory( TilePrinter.SLOTS ), new IntArray( 1 ) );
} }
public ContainerPrinter( int id, PlayerInventory player, TilePrinter printer ) public ContainerPrinter( int id, PlayerInventory player, TilePrinter printer )
@ -73,7 +73,7 @@ public class ContainerPrinter extends Container
public boolean isPrinting() public boolean isPrinting()
{ {
return properties.func_221476_a( 0 ) != 0; return properties.get( 0 ) != 0;
} }
@Override @Override

View File

@ -53,7 +53,6 @@ public final class TilePrinter extends TileGeneric implements DefaultSidedInvent
private static final String NBT_PAGE_TITLE = "PageTitle"; private static final String NBT_PAGE_TITLE = "PageTitle";
static final int SLOTS = 13; static final int SLOTS = 13;
static final int PROPERTIES = 1;
private static final int[] BOTTOM_SLOTS = new int[] { 7, 8, 9, 10, 11, 12 }; private static final int[] BOTTOM_SLOTS = new int[] { 7, 8, 9, 10, 11, 12 };
private static final int[] TOP_SLOTS = new int[] { 1, 2, 3, 4, 5, 6 }; private static final int[] TOP_SLOTS = new int[] { 1, 2, 3, 4, 5, 6 };

View File

@ -16,22 +16,17 @@ import dan200.computercraft.shared.Config;
import dan200.computercraft.shared.command.CommandComputerCraft; import dan200.computercraft.shared.command.CommandComputerCraft;
import dan200.computercraft.shared.command.arguments.ArgumentSerializers; import dan200.computercraft.shared.command.arguments.ArgumentSerializers;
import dan200.computercraft.shared.common.ColourableRecipe; import dan200.computercraft.shared.common.ColourableRecipe;
import dan200.computercraft.shared.common.ContainerHeldItem;
import dan200.computercraft.shared.common.DefaultBundledRedstoneProvider; import dan200.computercraft.shared.common.DefaultBundledRedstoneProvider;
import dan200.computercraft.shared.computer.core.IComputer; import dan200.computercraft.shared.computer.core.IComputer;
import dan200.computercraft.shared.computer.core.IContainerComputer; import dan200.computercraft.shared.computer.core.IContainerComputer;
import dan200.computercraft.shared.computer.core.ServerComputer; import dan200.computercraft.shared.computer.core.ServerComputer;
import dan200.computercraft.shared.computer.inventory.ContainerViewComputer;
import dan200.computercraft.shared.computer.recipe.ComputerUpgradeRecipe; import dan200.computercraft.shared.computer.recipe.ComputerUpgradeRecipe;
import dan200.computercraft.shared.media.items.RecordMedia; import dan200.computercraft.shared.media.items.RecordMedia;
import dan200.computercraft.shared.media.recipes.DiskRecipe; import dan200.computercraft.shared.media.recipes.DiskRecipe;
import dan200.computercraft.shared.media.recipes.PrintoutRecipe; import dan200.computercraft.shared.media.recipes.PrintoutRecipe;
import dan200.computercraft.shared.network.NetworkHandler; import dan200.computercraft.shared.network.NetworkHandler;
import dan200.computercraft.shared.peripheral.commandblock.CommandBlockPeripheral; import dan200.computercraft.shared.peripheral.commandblock.CommandBlockPeripheral;
import dan200.computercraft.shared.peripheral.diskdrive.ContainerDiskDrive;
import dan200.computercraft.shared.peripheral.modem.wireless.WirelessNetwork; import dan200.computercraft.shared.peripheral.modem.wireless.WirelessNetwork;
import dan200.computercraft.shared.peripheral.printer.ContainerPrinter;
import dan200.computercraft.shared.pocket.inventory.ContainerPocketComputer;
import dan200.computercraft.shared.pocket.recipes.PocketComputerUpgradeRecipe; import dan200.computercraft.shared.pocket.recipes.PocketComputerUpgradeRecipe;
import dan200.computercraft.shared.turtle.recipes.TurtleRecipe; import dan200.computercraft.shared.turtle.recipes.TurtleRecipe;
import dan200.computercraft.shared.turtle.recipes.TurtleUpgradeRecipe; import dan200.computercraft.shared.turtle.recipes.TurtleUpgradeRecipe;
@ -44,7 +39,6 @@ import net.minecraft.item.MusicDiscItem;
import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.tileentity.CommandBlockTileEntity; import net.minecraft.tileentity.CommandBlockTileEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.registry.Registry;
import net.minecraftforge.event.entity.player.PlayerContainerEvent; import net.minecraftforge.event.entity.player.PlayerContainerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent; import net.minecraftforge.fml.client.event.ConfigChangedEvent;
@ -66,21 +60,15 @@ public final class ComputerCraftProxyCommon
registerProviders(); registerProviders();
// Eww, eww, eww - can we move this to an event? // Eww, eww, eww - can we move this to an event?
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":colour", ColourableRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":colour", ColourableRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":computer_upgrade", ComputerUpgradeRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":computer_upgrade", ComputerUpgradeRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":pocket_computer_upgrade", PocketComputerUpgradeRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":pocket_computer_upgrade", PocketComputerUpgradeRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":disk", DiskRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":disk", DiskRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":printout", PrintoutRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":printout", PrintoutRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":turtle", TurtleRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":turtle", TurtleRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":turtle_upgrade", TurtleUpgradeRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":turtle_upgrade", TurtleUpgradeRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":impostor_shapeless", ImpostorShapelessRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":impostor_shapeless", ImpostorShapelessRecipe.SERIALIZER );
IRecipeSerializer.func_222156_a( ComputerCraft.MOD_ID + ":impostor_shaped", ImpostorRecipe.SERIALIZER ); IRecipeSerializer.register( ComputerCraft.MOD_ID + ":impostor_shaped", ImpostorRecipe.SERIALIZER );
Registry.register( Registry.field_218366_G, ComputerCraft.MOD_ID + ":printer", ContainerPrinter.TYPE );
Registry.register( Registry.field_218366_G, ComputerCraft.MOD_ID + ":disk_drive", ContainerDiskDrive.TYPE );
Registry.register( Registry.field_218366_G, ComputerCraft.MOD_ID + ":pocket_computer", ContainerPocketComputer.TYPE );
Registry.register( Registry.field_218366_G, ComputerCraft.MOD_ID + ":printout", ContainerHeldItem.PRINTOUT_TYPE );
Registry.register( Registry.field_218366_G, ComputerCraft.MOD_ID + ":view_computer", ContainerViewComputer.TYPE );
ArgumentSerializers.register(); ArgumentSerializers.register();

View File

@ -54,7 +54,7 @@ public final class FurnaceRefuelHandler implements TurtleRefuelEvent.Handler
int basicBurnTime = stack.getBurnTime(); int basicBurnTime = stack.getBurnTime();
int burnTime = ForgeEventFactory.getItemBurnTime( int burnTime = ForgeEventFactory.getItemBurnTime(
stack, stack,
basicBurnTime == -1 ? FurnaceTileEntity.func_214001_f().getOrDefault( stack.getItem(), 0 ) : basicBurnTime basicBurnTime == -1 ? FurnaceTileEntity.getBurnTimes().getOrDefault( stack.getItem(), 0 ) : basicBurnTime
); );
return (burnTime * 5) / 100; return (burnTime * 5) / 100;
} }

View File

@ -6,47 +6,53 @@
package dan200.computercraft.shared.turtle.inventory; package dan200.computercraft.shared.turtle.inventory;
import dan200.computercraft.api.turtle.ITurtleAccess;
import dan200.computercraft.shared.computer.core.IComputer; import dan200.computercraft.shared.computer.core.IComputer;
import dan200.computercraft.shared.computer.core.IContainerComputer; import dan200.computercraft.shared.computer.core.IContainerComputer;
import dan200.computercraft.shared.computer.core.InputState; import dan200.computercraft.shared.computer.core.InputState;
import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.blocks.TileTurtle;
import dan200.computercraft.shared.turtle.core.TurtleBrain; import dan200.computercraft.shared.turtle.core.TurtleBrain;
import dan200.computercraft.shared.util.SingleIntArray;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Inventory;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.ContainerType;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.IIntArray;
import net.minecraft.util.IntArray;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class ContainerTurtle extends Container implements IContainerComputer public class ContainerTurtle extends Container implements IContainerComputer
{ {
public static final ContainerType<ContainerTurtle> TYPE = null; public static final ContainerType<ContainerTurtle> TYPE = new ContainerType<>( ContainerTurtle::new );
public static final int PLAYER_START_Y = 134; public static final int PLAYER_START_Y = 134;
public static final int TURTLE_START_X = 175; public static final int TURTLE_START_X = 175;
private final ITurtleAccess m_turtle; private final IIntArray properties;
private IComputer m_computer;
private final InputState input = new InputState( this );
private int selectedSlot;
protected ContainerTurtle( int id, PlayerInventory playerInventory, ITurtleAccess turtle ) private IComputer computer;
private TurtleBrain turtle;
private final InputState input = new InputState( this );
protected ContainerTurtle( int id, PlayerInventory playerInventory, IInventory inventory, IIntArray properties )
{ {
super( TYPE, id ); super( TYPE, id );
this.properties = properties;
m_turtle = turtle; func_216961_a( properties );
selectedSlot = m_turtle.getWorld().isRemote ? 0 : m_turtle.getSelectedSlot();
// Turtle inventory // Turtle inventory
for( int y = 0; y < 4; y++ ) for( int y = 0; y < 4; y++ )
{ {
for( int x = 0; x < 4; x++ ) for( int x = 0; x < 4; x++ )
{ {
addSlot( new Slot( m_turtle.getInventory(), x + y * 4, TURTLE_START_X + 1 + x * 18, PLAYER_START_Y + 1 + y * 18 ) ); addSlot( new Slot( inventory, x + y * 4, TURTLE_START_X + 1 + x * 18, PLAYER_START_Y + 1 + y * 18 ) );
} }
} }
@ -66,22 +72,28 @@ public class ContainerTurtle extends Container implements IContainerComputer
} }
} }
public ContainerTurtle( int id, PlayerInventory playerInventory, ITurtleAccess turtle, IComputer computer ) public ContainerTurtle( int id, PlayerInventory playerInventory, TurtleBrain turtle, IComputer computer )
{ {
this( id, playerInventory, turtle ); this( id, playerInventory, turtle.getInventory(), (SingleIntArray) turtle::getSelectedSlot );
m_computer = computer; this.turtle = turtle;
this.computer = computer;
}
private ContainerTurtle( int id, PlayerInventory playerInventory )
{
this( id, playerInventory, new Inventory( TileTurtle.INVENTORY_SIZE ), new IntArray( 1 ) );
} }
public int getSelectedSlot() public int getSelectedSlot()
{ {
return selectedSlot; return properties.get( 0 );
} }
@Override @Override
public boolean canInteractWith( @Nonnull PlayerEntity player ) public boolean canInteractWith( @Nonnull PlayerEntity player )
{ {
TileTurtle turtle = ((TurtleBrain) m_turtle).getOwner(); // If we've no turtle, we'll be on the client.
return turtle != null && turtle.isUsableByPlayer( player ); return turtle == null || (turtle.getOwner() != null && turtle.getOwner().isUsableByPlayer( player ));
} }
@Nonnull @Nonnull
@ -138,7 +150,7 @@ public class ContainerTurtle extends Container implements IContainerComputer
@Override @Override
public IComputer getComputer() public IComputer getComputer()
{ {
return m_computer; return computer;
} }
@Nonnull @Nonnull

View File

@ -66,7 +66,7 @@ public class TurtleInventoryCrafting extends CraftingInventory
} }
// Check the actual crafting // Check the actual crafting
return m_turtle.getWorld().getRecipeManager().func_215371_a( IRecipeType.field_222149_a, this, m_turtle.getWorld() ).orElse( null ); return m_turtle.getWorld().getRecipeManager().getRecipe( IRecipeType.CRAFTING, this, m_turtle.getWorld() ).orElse( null );
} }
@Nullable @Nullable

View File

@ -43,7 +43,7 @@ public final class IDAssigner
public static File getDir() public static File getDir()
{ {
MinecraftServer server = ServerLifecycleHooks.getCurrentServer(); MinecraftServer server = ServerLifecycleHooks.getCurrentServer();
File worldDirectory = server.getWorld( DimensionType.OVERWORLD ).func_217485_w().getWorldDirectory(); // getSaveHandler File worldDirectory = server.getWorld( DimensionType.OVERWORLD ).getSaveHandler().getWorldDirectory();
return new File( worldDirectory, ComputerCraft.MOD_ID ); return new File( worldDirectory, ComputerCraft.MOD_ID );
} }

View File

@ -64,7 +64,7 @@ public final class ImpostorRecipe extends ShapedRecipe
public ImpostorRecipe read( @Nonnull ResourceLocation identifier, @Nonnull JsonObject json ) public ImpostorRecipe read( @Nonnull ResourceLocation identifier, @Nonnull JsonObject json )
{ {
String group = JSONUtils.getString( json, "group", "" ); String group = JSONUtils.getString( json, "group", "" );
ShapedRecipe recipe = IRecipeSerializer.field_222157_a.read( identifier, json ); ShapedRecipe recipe = IRecipeSerializer.CRAFTING_SHAPED.read( identifier, json );
ItemStack result = CraftingHelper.getItemStack( JSONUtils.getJsonObject( json, "result" ), true ); ItemStack result = CraftingHelper.getItemStack( JSONUtils.getJsonObject( json, "result" ), true );
return new ImpostorRecipe( identifier, group, recipe.getWidth(), recipe.getHeight(), recipe.getIngredients(), result ); return new ImpostorRecipe( identifier, group, recipe.getWidth(), recipe.getHeight(), recipe.getIngredients(), result );
} }

View File

@ -14,19 +14,18 @@ public interface SingleIntArray extends IIntArray
int get(); int get();
@Override @Override
default int func_221476_a( int property ) default int get( int property )
{ {
return property == 0 ? get() : 0; return property == 0 ? get() : 0;
} }
@Override @Override
default void func_221477_a( int i, int i1 ) default void set( int property, int value )
{ {
} }
@Override @Override
default int func_221478_a() default int size()
{ {
return 1; return 1;
} }

View File

@ -63,7 +63,7 @@ public final class WorldUtil
// Raycast for blocks // Raycast for blocks
ENTITY.setPosition( vecStart.x, vecStart.y, vecStart.z ); ENTITY.setPosition( vecStart.x, vecStart.y, vecStart.z );
RayTraceContext context = new RayTraceContext( vecStart, vecEnd, RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, ENTITY ); RayTraceContext context = new RayTraceContext( vecStart, vecEnd, RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, ENTITY );
RayTraceResult result = world.func_217299_a( context ); RayTraceResult result = world.rayTraceBlocks( context );
if( result != null && result.getType() == RayTraceResult.Type.BLOCK ) if( result != null && result.getType() == RayTraceResult.Type.BLOCK )
{ {
distance = vecStart.distanceTo( result.getHitVec() ); distance = vecStart.distanceTo( result.getHitVec() );
@ -96,7 +96,7 @@ public final class WorldUtil
continue; continue;
} }
Vec3d littleBoxResult = littleBox.func_216365_b( vecStart, vecEnd ).orElse( null ); // rayTrace Vec3d littleBoxResult = littleBox.rayTrace( vecStart, vecEnd ).orElse( null );
if( littleBoxResult != null ) if( littleBoxResult != null )
{ {
double dist = vecStart.distanceTo( littleBoxResult ); double dist = vecStart.distanceTo( littleBoxResult );
@ -178,6 +178,6 @@ public final class WorldUtil
zDir * 0.7 + world.getRandom().nextFloat() * 0.2 - 0.1 zDir * 0.7 + world.getRandom().nextFloat() * 0.2 - 0.1
); );
item.setDefaultPickupDelay(); item.setDefaultPickupDelay();
world.func_217376_c( item ); world.addEntity( item );
} }
} }

View File

@ -2,9 +2,3 @@
public net.minecraft.client.renderer.FirstPersonRenderer func_187466_c()V # renderArms public net.minecraft.client.renderer.FirstPersonRenderer func_187466_c()V # renderArms
public net.minecraft.client.renderer.FirstPersonRenderer func_178100_c(F)F # getMapAngleFromPitch public net.minecraft.client.renderer.FirstPersonRenderer func_178100_c(F)F # getMapAngleFromPitch
public net.minecraft.client.renderer.FirstPersonRenderer func_187456_a(FFLnet/minecraft/util/HandSide;)V # renderArmFirstPerson public net.minecraft.client.renderer.FirstPersonRenderer func_187456_a(FFLnet/minecraft/util/HandSide;)V # renderArmFirstPerson
# Containers
public net.minecraft.inventory.container.ContainerType$IFactory
public net.minecraft.inventory.container.ContainerType <init>(Lnet/minecraft/inventory/container/ContainerType$IFactory;)V
public net.minecraft.client.gui.ScreenManager$IScreenFactory
public net.minecraft.client.gui.ScreenManager func_216911_a(Lnet/minecraft/inventory/container/ContainerType;Lnet/minecraft/client/gui/ScreenManager$IScreenFactory;)V # registerFactory