1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-11-17 23:34:51 +00:00

Remove "client" turtle brains.

These were only used for the vision camera, and so are rather pointless
now.
This commit is contained in:
SquidDev 2018-12-27 13:10:13 +00:00
parent 618c534d81
commit b59dcbfc0e
3 changed files with 16 additions and 133 deletions

View File

@ -11,7 +11,6 @@ import dan200.computercraft.client.render.TileEntityTurtleRenderer;
import dan200.computercraft.client.render.TurtleSmartItemModel; import dan200.computercraft.client.render.TurtleSmartItemModel;
import dan200.computercraft.shared.proxy.CCTurtleProxyCommon; import dan200.computercraft.shared.proxy.CCTurtleProxyCommon;
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.items.ItemTurtleBase; import dan200.computercraft.shared.turtle.items.ItemTurtleBase;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -36,7 +35,6 @@ import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@ -146,15 +144,6 @@ public class CCTurtleProxyClient extends CCTurtleProxyCommon
} }
} }
@SubscribeEvent
public void onTick( TickEvent.ClientTickEvent event )
{
if( event.phase == TickEvent.Phase.END )
{
TurtleBrain.cleanupBrains();
}
}
@SubscribeEvent @SubscribeEvent
public void onTextureStitchEvent( TextureStitchEvent.Pre event ) public void onTextureStitchEvent( TextureStitchEvent.Pre event )
{ {

View File

@ -32,6 +32,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@ -182,7 +183,7 @@ public class TileTurtle extends TileComputerBase
public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ) public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
{ {
// Request description from server // Request description from server
requestTileEntityUpdate(); // requestTileEntityUpdate();
// Apply dye // Apply dye
ItemStack currentItem = player.getHeldItem( hand ); ItemStack currentItem = player.getHeldItem( hand );

View File

@ -40,132 +40,38 @@ import net.minecraftforge.common.util.Constants;
import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.IItemHandlerModifiable;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.lang.ref.WeakReference;
import java.util.*; import java.util.*;
public class TurtleBrain implements ITurtleAccess public class TurtleBrain implements ITurtleAccess
{ {
private static int s_nextInstanceID = 0;
private static Map<Integer, WeakReference<TurtleBrain>> s_allClientBrains = new HashMap<>();
public static int assignInstanceID()
{
return s_nextInstanceID++;
}
public static TurtleBrain getClientBrain( int instanceID )
{
if( instanceID >= 0 )
{
WeakReference<TurtleBrain> ref = s_allClientBrains.get( instanceID );
if( ref != null )
{
TurtleBrain brain = ref.get();
if( brain != null )
{
return brain;
}
else
{
s_allClientBrains.remove( instanceID );
}
}
}
return null;
}
public static void setClientBrain( int instanceID, TurtleBrain brain )
{
if( instanceID >= 0 )
{
if( getClientBrain( instanceID ) != brain )
{
s_allClientBrains.put( instanceID, new WeakReference<>( brain ) );
}
}
}
public static void cleanupBrains()
{
if( s_allClientBrains.size() > 0 )
{
Iterator<Map.Entry<Integer, WeakReference<TurtleBrain>>> it = s_allClientBrains.entrySet().iterator();
while( it.hasNext() )
{
Map.Entry<Integer, WeakReference<TurtleBrain>> entry = it.next();
WeakReference<TurtleBrain> ref = entry.getValue();
if( ref != null )
{
TurtleBrain brain = ref.get();
if( brain == null )
{
it.remove();
}
}
}
}
}
private static final int ANIM_DURATION = 8; private static final int ANIM_DURATION = 8;
private TileTurtle m_owner; private TileTurtle m_owner;
private ComputerProxy m_proxy; private ComputerProxy m_proxy;
private GameProfile m_owningPlayer; private GameProfile m_owningPlayer;
private LinkedList<TurtleCommandQueueEntry> m_commandQueue; private Queue<TurtleCommandQueueEntry> m_commandQueue = new ArrayDeque<>();
private int m_commandsIssued; private int m_commandsIssued = 0;
private Map<TurtleSide, ITurtleUpgrade> m_upgrades; private Map<TurtleSide, ITurtleUpgrade> m_upgrades = new EnumMap<>( TurtleSide.class );
private Map<TurtleSide, IPeripheral> m_peripherals; private Map<TurtleSide, IPeripheral> m_peripherals = new EnumMap<>( TurtleSide.class );
private Map<TurtleSide, NBTTagCompound> m_upgradeNBTData; private Map<TurtleSide, NBTTagCompound> m_upgradeNBTData = new EnumMap<>( TurtleSide.class );
private int m_selectedSlot; private int m_selectedSlot = 0;
private int m_fuelLevel; private int m_fuelLevel = 0;
private int m_colourHex; private int m_colourHex = -1;
private ResourceLocation m_overlay; private ResourceLocation m_overlay = null;
private int m_instanceID; private EnumFacing m_direction = EnumFacing.NORTH;
private EnumFacing m_direction; private TurtleAnimation m_animation = TurtleAnimation.None;
private TurtleAnimation m_animation; private int m_animationProgress = 0;
private int m_animationProgress; private int m_lastAnimationProgress = 0;
private int m_lastAnimationProgress;
TurtlePlayer m_cachedPlayer; TurtlePlayer m_cachedPlayer;
public TurtleBrain( TileTurtle turtle ) public TurtleBrain( TileTurtle turtle )
{ {
m_owner = turtle; m_owner = turtle;
m_commandQueue = new LinkedList<>();
m_commandsIssued = 0;
m_upgrades = new HashMap<>();
m_peripherals = new HashMap<>();
m_upgradeNBTData = new HashMap<>();
m_selectedSlot = 0;
m_fuelLevel = 0;
m_colourHex = -1;
m_overlay = null;
m_instanceID = -1;
m_direction = EnumFacing.NORTH;
m_animation = TurtleAnimation.None;
m_animationProgress = 0;
m_lastAnimationProgress = 0;
}
public TurtleBrain getFutureSelf()
{
if( getOwner().getWorld().isRemote )
{
TurtleBrain futureSelf = getClientBrain( m_instanceID );
if( futureSelf != null )
{
return futureSelf;
}
}
return this;
} }
public void setOwner( TileTurtle owner ) public void setOwner( TileTurtle owner )
@ -437,11 +343,6 @@ public class TurtleBrain implements ITurtleAccess
} }
// Animation // Animation
if( m_instanceID < 0 )
{
m_instanceID = assignInstanceID();
}
nbttagcompound.setInteger( "brainInstanceID", m_instanceID );
nbttagcompound.setInteger( "animation", m_animation.ordinal() ); nbttagcompound.setInteger( "animation", m_animation.ordinal() );
nbttagcompound.setInteger( "direction", m_direction.getIndex() ); nbttagcompound.setInteger( "direction", m_direction.getIndex() );
nbttagcompound.setInteger( "fuelLevel", m_fuelLevel ); nbttagcompound.setInteger( "fuelLevel", m_fuelLevel );
@ -494,9 +395,6 @@ public class TurtleBrain implements ITurtleAccess
} }
// Animation // Animation
m_instanceID = nbttagcompound.getInteger( "brainInstanceID" );
setClientBrain( m_instanceID, this );
TurtleAnimation anim = TurtleAnimation.values()[nbttagcompound.getInteger( "animation" )]; TurtleAnimation anim = TurtleAnimation.values()[nbttagcompound.getInteger( "animation" )];
if( anim != m_animation && if( anim != m_animation &&
anim != TurtleAnimation.Wait && anim != TurtleAnimation.Wait &&
@ -1079,12 +977,7 @@ public class TurtleBrain implements ITurtleAccess
if( m_animation == TurtleAnimation.None ) if( m_animation == TurtleAnimation.None )
{ {
// Pull a new command // Pull a new command
TurtleCommandQueueEntry nextCommand = null; TurtleCommandQueueEntry nextCommand = m_commandQueue.poll();
if( m_commandQueue.peek() != null )
{
nextCommand = m_commandQueue.remove();
}
if( nextCommand != null ) if( nextCommand != null )
{ {
// Execute the command // Execute the command