mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-11-21 15:54:47 +00:00
- Remap everything to use MojMap class names too. This is what Forge
uses, so \o/.
This does NOT currently rename any classes to use suffix notation or
BlockEntity. That will come in a later change. We do however rename
references of "World" to "Level".
- Move the test mod into a separate "cctest" source set. As Forge now
works using Jigsaw we cannot have multiple mods defining the same
package, which causes problems with our JUnit test classes.
- Remove our custom test framework and replace it with vanilla's (this
is no longer stripped from the jar). RIP kotlin coroutines.
It's still worth using Kotlin here though, just for extension
methods.
- Other 1.17-related changes:
- Use separate tile/block entity tick methods for server and client
side, often avoiding ticking at all on the client.
- Switch much of the monitor rendering code to use vanilla's
built-in shader system. It's still an incredibly ugly hack, so not
really expecting this to work with any rendering mods, but we'll
cross that bridge when we come to it.
88 lines
2.8 KiB
Java
88 lines
2.8 KiB
Java
/*
|
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
|
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
|
* Send enquiries to dratcliffe@gmail.com
|
|
*/
|
|
package dan200.computercraft.client;
|
|
|
|
import dan200.computercraft.shared.command.text.ChatHelpers;
|
|
import dan200.computercraft.shared.command.text.TableBuilder;
|
|
import dan200.computercraft.shared.command.text.TableFormatter;
|
|
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
|
|
import net.minecraft.ChatFormatting;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.Font;
|
|
import net.minecraft.client.gui.components.ChatComponent;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.util.Mth;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
public class ClientTableFormatter implements TableFormatter
|
|
{
|
|
public static final ClientTableFormatter INSTANCE = new ClientTableFormatter();
|
|
|
|
private static final Int2IntOpenHashMap lastHeights = new Int2IntOpenHashMap();
|
|
|
|
private static Font renderer()
|
|
{
|
|
return Minecraft.getInstance().font;
|
|
}
|
|
|
|
@Override
|
|
@Nullable
|
|
public Component getPadding( Component component, int width )
|
|
{
|
|
int extraWidth = width - getWidth( component );
|
|
if( extraWidth <= 0 ) return null;
|
|
|
|
Font renderer = renderer();
|
|
|
|
float spaceWidth = renderer.width( " " );
|
|
int spaces = Mth.floor( extraWidth / spaceWidth );
|
|
int extra = extraWidth - (int) (spaces * spaceWidth);
|
|
|
|
return ChatHelpers.coloured( StringUtils.repeat( ' ', spaces ) + StringUtils.repeat( (char) 712, extra ), ChatFormatting.GRAY );
|
|
}
|
|
|
|
@Override
|
|
public int getColumnPadding()
|
|
{
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public int getWidth( Component component )
|
|
{
|
|
return renderer().width( component );
|
|
}
|
|
|
|
@Override
|
|
public void writeLine( int id, Component component )
|
|
{
|
|
Minecraft mc = Minecraft.getInstance();
|
|
ChatComponent chat = mc.gui.getChat();
|
|
|
|
// TODO: Trim the text if it goes over the allowed length
|
|
// int maxWidth = MathHelper.floor( chat.getChatWidth() / chat.getScale() );
|
|
// List<ITextProperties> list = RenderComponentsUtil.wrapComponents( component, maxWidth, mc.fontRenderer );
|
|
// if( !list.isEmpty() ) chat.printChatMessageWithOptionalDeletion( list.get( 0 ), id );
|
|
chat.addMessage( component, id );
|
|
}
|
|
|
|
@Override
|
|
public int display( TableBuilder table )
|
|
{
|
|
ChatComponent chat = Minecraft.getInstance().gui.getChat();
|
|
|
|
int lastHeight = lastHeights.get( table.getId() );
|
|
|
|
int height = TableFormatter.super.display( table );
|
|
lastHeights.put( table.getId(), height );
|
|
|
|
for( int i = height; i < lastHeight; i++ ) chat.removeById( i + table.getId() );
|
|
return height;
|
|
}
|
|
}
|