pick 97420a31d The big reformat of 2020

This commit is contained in:
yueh
2020-06-16 21:41:28 +02:00
parent 5304b3febe
commit 5225ea426b
2252 changed files with 95466 additions and 118582 deletions
@@ -18,15 +18,8 @@
package appeng.integration.modules.waila.part;
import java.util.List;
import appeng.api.parts.IPart;
import appeng.core.localization.WailaText;
import appeng.parts.networking.PartCableSmart;
import appeng.parts.networking.PartDenseCableSmart;
import it.unimi.dsi.fastutil.objects.Object2ByteMap;
import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap;
import mcp.mobius.waila.api.IDataAccessor;
import mcp.mobius.waila.api.IPluginConfig;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
@@ -34,8 +27,15 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World;
import java.util.List;
import it.unimi.dsi.fastutil.objects.Object2ByteMap;
import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap;
import mcp.mobius.waila.api.IDataAccessor;
import mcp.mobius.waila.api.IPluginConfig;
import appeng.api.parts.IPart;
import appeng.core.localization.WailaText;
import appeng.parts.networking.PartCableSmart;
import appeng.parts.networking.PartDenseCableSmart;
/**
* Channel-information provider for WAILA
@@ -44,110 +44,102 @@ import java.util.List;
* @version rv2
* @since rv2
*/
public final class ChannelWailaDataProvider extends BasePartWailaDataProvider
{
/**
* Channel key used for the transferred {@link net.minecraft.nbt.CompoundNBT}
*/
private static final String ID_USED_CHANNELS = "usedChannels";
public final class ChannelWailaDataProvider extends BasePartWailaDataProvider {
/**
* Channel key used for the transferred {@link net.minecraft.nbt.CompoundNBT}
*/
private static final String ID_USED_CHANNELS = "usedChannels";
/**
* Used cache for channels if the channel was not transmitted through the server.
* <p/>
* This is useful, when a player just started to look at a tile and thus just requested the new information from the
* server.
* <p/>
* The cache will be updated from the server.
*/
private final Object2ByteMap<IPart> cache = new Object2ByteOpenHashMap<>();
/**
* Used cache for channels if the channel was not transmitted through the
* server.
* <p/>
* This is useful, when a player just started to look at a tile and thus just
* requested the new information from the server.
* <p/>
* The cache will be updated from the server.
*/
private final Object2ByteMap<IPart> cache = new Object2ByteOpenHashMap<>();
/**
* Adds the used and max channel to the tool tip
*
* @param part being looked at part
* @param tooltip current tool tip
* @param accessor wrapper for various world information
* @param config config to react to various settings
*/
@Override
public void appendBody(final IPart part, final List<ITextComponent> tooltip, final IDataAccessor accessor, final IPluginConfig config )
{
if( part instanceof PartCableSmart || part instanceof PartDenseCableSmart )
{
final CompoundNBT tag = accessor.getServerData();
/**
* Adds the used and max channel to the tool tip
*
* @param part being looked at part
* @param tooltip current tool tip
* @param accessor wrapper for various world information
* @param config config to react to various settings
*/
@Override
public void appendBody(final IPart part, final List<ITextComponent> tooltip, final IDataAccessor accessor,
final IPluginConfig config) {
if (part instanceof PartCableSmart || part instanceof PartDenseCableSmart) {
final CompoundNBT tag = accessor.getServerData();
final byte usedChannels = this.getUsedChannels( part, tag, this.cache );
final byte usedChannels = this.getUsedChannels(part, tag, this.cache);
if( usedChannels >= 0 )
{
final byte maxChannels = (byte) ( ( part instanceof PartDenseCableSmart ) ? 32 : 8 );
if (usedChannels >= 0) {
final byte maxChannels = (byte) ((part instanceof PartDenseCableSmart) ? 32 : 8);
final ITextComponent formattedToolTip = WailaText.Channels.textComponent(usedChannels, maxChannels);
tooltip.add( formattedToolTip );
}
}
}
final ITextComponent formattedToolTip = WailaText.Channels.textComponent(usedChannels, maxChannels);
tooltip.add(formattedToolTip);
}
}
}
/**
* Determines the source of the channel.
* <p/>
* If the client received information of the channels on the server, they are used, else if the cache contains a
* previous stored value, this will be used. Default value is 0.
*
* @param part part to be looked at
* @param tag tag maybe containing the channel information
* @param cache cache with previous knowledge
*
* @return used channels on the cable
*/
private byte getUsedChannels( final IPart part, final CompoundNBT tag, final Object2ByteMap<IPart> cache )
{
final byte usedChannels;
/**
* Determines the source of the channel.
* <p/>
* If the client received information of the channels on the server, they are
* used, else if the cache contains a previous stored value, this will be used.
* Default value is 0.
*
* @param part part to be looked at
* @param tag tag maybe containing the channel information
* @param cache cache with previous knowledge
*
* @return used channels on the cable
*/
private byte getUsedChannels(final IPart part, final CompoundNBT tag, final Object2ByteMap<IPart> cache) {
final byte usedChannels;
if( tag.contains( ID_USED_CHANNELS ) )
{
usedChannels = tag.getByte( ID_USED_CHANNELS );
this.cache.put( part, usedChannels );
}
else if( this.cache.containsKey( part ) )
{
usedChannels = this.cache.get( part );
}
else
{
usedChannels = -1;
}
if (tag.contains(ID_USED_CHANNELS)) {
usedChannels = tag.getByte(ID_USED_CHANNELS);
this.cache.put(part, usedChannels);
} else if (this.cache.containsKey(part)) {
usedChannels = this.cache.get(part);
} else {
usedChannels = -1;
}
return usedChannels;
}
return usedChannels;
}
/**
* Called on server to transfer information from server to client.
* <p/>
* If the part is a cable, it writes the channel information in the {@code #tag} using the {@code ID_USED_CHANNELS}
* key.
*
* @param player player looking at the part
* @param part part being looked at
* @param te host of the part
* @param tag transferred tag which is send to the client
* @param world world of the part
* @param pos pos of the part
*/
@Override
public void appendServerData(ServerPlayerEntity player, IPart part, TileEntity te, CompoundNBT tag, World world, BlockPos pos) {
if( part instanceof PartCableSmart || part instanceof PartDenseCableSmart )
{
final CompoundNBT tempTag = new CompoundNBT();
/**
* Called on server to transfer information from server to client.
* <p/>
* If the part is a cable, it writes the channel information in the {@code #tag}
* using the {@code ID_USED_CHANNELS} key.
*
* @param player player looking at the part
* @param part part being looked at
* @param te host of the part
* @param tag transferred tag which is send to the client
* @param world world of the part
* @param pos pos of the part
*/
@Override
public void appendServerData(ServerPlayerEntity player, IPart part, TileEntity te, CompoundNBT tag, World world,
BlockPos pos) {
if (part instanceof PartCableSmart || part instanceof PartDenseCableSmart) {
final CompoundNBT tempTag = new CompoundNBT();
part.writeToNBT( tempTag );
part.writeToNBT(tempTag);
if( tempTag.contains( ID_USED_CHANNELS ) )
{
final byte usedChannels = tempTag.getByte( ID_USED_CHANNELS );
if (tempTag.contains(ID_USED_CHANNELS)) {
final byte usedChannels = tempTag.getByte(ID_USED_CHANNELS);
tag.putByte( ID_USED_CHANNELS, usedChannels );
}
}
}
tag.putByte(ID_USED_CHANNELS, usedChannels);
}
}
}
}