Second update pass (2/3) - 82 -> 0 errors
Second update pass which fixes all compile errors. Some parts may have aftermath effect, hence why 3rd pass will check those maked with "aftermath". Errors: 82 -> 0. Mod can be launched.
This commit is contained in:
parent
5498eb6d7c
commit
05aa6972c4
|
@ -37,6 +37,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -241,7 +242,7 @@ public interface IPart extends IBoxProvider
|
||||||
*
|
*
|
||||||
* @return if your activate method performed something.
|
* @return if your activate method performed something.
|
||||||
*/
|
*/
|
||||||
boolean onActivate( EntityPlayer player, Vec3d pos );
|
boolean onActivate( EntityPlayer player, EnumHand hand, Vec3d pos );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when you right click the part, very similar to Block.onActivateBlock
|
* Called when you right click the part, very similar to Block.onActivateBlock
|
||||||
|
@ -251,7 +252,7 @@ public interface IPart extends IBoxProvider
|
||||||
*
|
*
|
||||||
* @return if your activate method performed something, you should use false unless you really need it.
|
* @return if your activate method performed something, you should use false unless you really need it.
|
||||||
*/
|
*/
|
||||||
boolean onShiftActivate( EntityPlayer player, Vec3d pos );
|
boolean onShiftActivate( EntityPlayer player, EnumHand hand, Vec3d pos );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add drops to the items being dropped into the world, if your item stores its contents when wrenched use the
|
* Add drops to the items being dropped into the world, if your item stores its contents when wrenched use the
|
||||||
|
@ -283,7 +284,7 @@ public interface IPart extends IBoxProvider
|
||||||
* @param held held item
|
* @param held held item
|
||||||
* @param side placing side
|
* @param side placing side
|
||||||
*/
|
*/
|
||||||
void onPlacement( EntityPlayer player, ItemStack held, AEPartLocation side );
|
void onPlacement( EntityPlayer player, EnumHand hand, ItemStack held, AEPartLocation side );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to determine which parts can be placed on what cables.
|
* Used to determine which parts can be placed on what cables.
|
||||||
|
|
|
@ -27,6 +27,7 @@ package appeng.api.parts;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -76,7 +77,7 @@ public interface IPartHelper
|
||||||
*
|
*
|
||||||
* @return true if placing was successful
|
* @return true if placing was successful
|
||||||
*/
|
*/
|
||||||
boolean placeBus( ItemStack is, BlockPos pos, EnumFacing side, EntityPlayer player, World world );
|
boolean placeBus( ItemStack is, BlockPos pos, EnumFacing side, EntityPlayer player, EnumHand hand, World world );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the render mode
|
* @return the render mode
|
||||||
|
|
|
@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
import appeng.api.util.AEColor;
|
import appeng.api.util.AEColor;
|
||||||
|
@ -71,7 +72,7 @@ public interface IPartHost
|
||||||
* @return null if the item failed to add, the side it was placed on other wise ( may different for cables,
|
* @return null if the item failed to add, the side it was placed on other wise ( may different for cables,
|
||||||
* {@link AEPartLocation}.UNKNOWN )
|
* {@link AEPartLocation}.UNKNOWN )
|
||||||
*/
|
*/
|
||||||
AEPartLocation addPart( ItemStack is, AEPartLocation side, EntityPlayer owner );
|
AEPartLocation addPart( ItemStack is, AEPartLocation side, EntityPlayer owner, EnumHand hand );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get part by side ( center is {@link AEPartLocation}.UNKNOWN )
|
* Get part by side ( center is {@link AEPartLocation}.UNKNOWN )
|
||||||
|
|
|
@ -3,6 +3,8 @@ package appeng.api.util;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
|
@ -49,7 +51,7 @@ public interface ModelGenerator
|
||||||
|
|
||||||
void setFlipTexture( boolean b );
|
void setFlipTexture( boolean b );
|
||||||
|
|
||||||
void setRenderBoundsFromBlock( Block block );
|
void setRenderBoundsFromBlock( IBlockState state, @Nullable BlockPos pos );
|
||||||
|
|
||||||
void setRenderBounds( double v, double v1, double v2, double v3, double v4, double v5 );
|
void setRenderBounds( double v, double v1, double v2, double v3, double v4, double v5 );
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ import net.minecraft.block.properties.PropertyEnum;
|
||||||
import net.minecraft.block.state.BlockStateContainer;
|
import net.minecraft.block.state.BlockStateContainer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
import net.minecraft.client.renderer.texture.TextureMap;
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
import net.minecraft.client.resources.IResource;
|
import net.minecraft.client.resources.IResource;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
@ -61,6 +62,7 @@ import appeng.api.util.AEPartLocation;
|
||||||
import appeng.api.util.IAESprite;
|
import appeng.api.util.IAESprite;
|
||||||
import appeng.api.util.IOrientable;
|
import appeng.api.util.IOrientable;
|
||||||
import appeng.api.util.IOrientableBlock;
|
import appeng.api.util.IOrientableBlock;
|
||||||
|
import appeng.block.AEBaseBlock.AEBaseBlockColor;
|
||||||
import appeng.client.render.BaseBlockRender;
|
import appeng.client.render.BaseBlockRender;
|
||||||
import appeng.client.render.BlockRenderInfo;
|
import appeng.client.render.BlockRenderInfo;
|
||||||
import appeng.client.texture.BaseIcon;
|
import appeng.client.texture.BaseIcon;
|
||||||
|
@ -76,9 +78,9 @@ import appeng.helpers.ICustomCollision;
|
||||||
import appeng.util.LookDirection;
|
import appeng.util.LookDirection;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
|
||||||
//TODO 1.9.4 - setBlockBounds => ?
|
|
||||||
public abstract class AEBaseBlock extends Block implements IAEFeature
|
public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final PropertyEnum AXIS_ORIENTATION = PropertyEnum.create( "axis", EnumFacing.Axis.class );
|
public static final PropertyEnum AXIS_ORIENTATION = PropertyEnum.create( "axis", EnumFacing.Axis.class );
|
||||||
|
|
||||||
private final String featureFullName;
|
private final String featureFullName;
|
||||||
|
@ -91,6 +93,8 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
@SideOnly( Side.CLIENT )
|
@SideOnly( Side.CLIENT )
|
||||||
private BlockRenderInfo renderInfo;
|
private BlockRenderInfo renderInfo;
|
||||||
private String textureName;
|
private String textureName;
|
||||||
|
|
||||||
|
protected AxisAlignedBB boundingBox;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisuallyOpaque()
|
public boolean isVisuallyOpaque()
|
||||||
|
@ -105,6 +109,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
this.setLightLevel( 0 );
|
this.setLightLevel( 0 );
|
||||||
this.setHardness( 2.2F );
|
this.setHardness( 2.2F );
|
||||||
this.setHarvestLevel( "pickaxe", 0 );
|
this.setHarvestLevel( "pickaxe", 0 );
|
||||||
|
|
||||||
|
if( Platform.isClient() )
|
||||||
|
{
|
||||||
|
Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler( new AEBaseBlockColor(), this );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AEBaseBlock( final Material mat, final Optional<String> subName )
|
protected AEBaseBlock( final Material mat, final Optional<String> subName )
|
||||||
|
@ -188,13 +197,6 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - Move to IBlockColor
|
|
||||||
@Override
|
|
||||||
public int colorMultiplier( final IBlockAccess worldIn, final BlockPos pos, final int colorTint )
|
|
||||||
{
|
|
||||||
return colorTint;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly( Side.CLIENT )
|
@SideOnly( Side.CLIENT )
|
||||||
protected Class<? extends BaseBlockRender> getRenderer()
|
protected Class<? extends BaseBlockRender> getRenderer()
|
||||||
{
|
{
|
||||||
|
@ -264,6 +266,12 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
return this.getRendererInstance().getTexture( AEPartLocation.fromFacing( side ) );
|
return this.getRendererInstance().getTexture( AEPartLocation.fromFacing( side ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getBoundingBox( IBlockState state, IBlockAccess source, BlockPos pos )
|
||||||
|
{
|
||||||
|
return boundingBox;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addCollisionBoxToList( final IBlockState state, final World w, final BlockPos pos, final AxisAlignedBB bb, final List<AxisAlignedBB> out, final Entity e )
|
public void addCollisionBoxToList( final IBlockState state, final World w, final BlockPos pos, final AxisAlignedBB bb, final List<AxisAlignedBB> out, final Entity e )
|
||||||
{
|
{
|
||||||
|
@ -308,11 +316,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
|
|
||||||
for( final AxisAlignedBB bb : bbs )
|
for( final AxisAlignedBB bb : bbs )
|
||||||
{
|
{
|
||||||
this.setBlockBounds( (float) bb.minX, (float) bb.minY, (float) bb.minZ, (float) bb.maxX, (float) bb.maxY, (float) bb.maxZ );
|
this.boundingBox = bb;
|
||||||
|
|
||||||
final RayTraceResult r = super.collisionRayTrace( state, w, pos, ld.getA(), ld.getB() );
|
final RayTraceResult r = super.collisionRayTrace( state, w, pos, ld.getA(), ld.getB() );
|
||||||
|
|
||||||
this.setBlockBounds( 0, 0, 0, 1, 1, 1 );
|
this.boundingBox = FULL_BLOCK_AABB;
|
||||||
|
|
||||||
if( r != null )
|
if( r != null )
|
||||||
{
|
{
|
||||||
|
@ -392,11 +400,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
|
|
||||||
for( final AxisAlignedBB bb : bbs )
|
for( final AxisAlignedBB bb : bbs )
|
||||||
{
|
{
|
||||||
this.setBlockBounds( (float) bb.minX, (float) bb.minY, (float) bb.minZ, (float) bb.maxX, (float) bb.maxY, (float) bb.maxZ );
|
this.boundingBox = bb;
|
||||||
|
|
||||||
final RayTraceResult r = super.collisionRayTrace( state, w, pos, a, b );
|
final RayTraceResult r = super.collisionRayTrace( state, w, pos, a, b );
|
||||||
|
|
||||||
this.setBlockBounds( 0, 0, 0, 1, 1, 1 );
|
this.boundingBox = FULL_BLOCK_AABB;
|
||||||
|
|
||||||
if( r != null )
|
if( r != null )
|
||||||
{
|
{
|
||||||
|
@ -421,7 +429,7 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setBlockBounds( 0, 0, 0, 1, 1, 1 );
|
this.boundingBox = FULL_BLOCK_AABB;
|
||||||
return super.collisionRayTrace( state, w, pos, a, b );
|
return super.collisionRayTrace( state, w, pos, a, b );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,4 +720,15 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
|
||||||
this.hasSubtypes = hasSubtypes;
|
this.hasSubtypes = hasSubtypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SideOnly( Side.CLIENT )
|
||||||
|
public class AEBaseBlockColor implements IBlockColor
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int colorMultiplier( IBlockState state, IBlockAccess worldIn, BlockPos pos, int tintIndex )
|
||||||
|
{
|
||||||
|
return tintIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,11 +225,10 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - Move to IBlockState
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockAdded( final World worldIn, final BlockPos pos, final IBlockState state, final int eventID, final int eventParam )
|
public boolean eventReceived( final IBlockState state, final World worldIn, final BlockPos pos, final int eventID, final int eventParam )
|
||||||
{
|
{
|
||||||
super.onBlockEventReceived( worldIn, pos, state, eventID, eventParam );
|
super.eventReceived( state, worldIn, pos, eventID, eventParam );
|
||||||
final TileEntity tileentity = worldIn.getTileEntity( pos );
|
final TileEntity tileentity = worldIn.getTileEntity( pos );
|
||||||
return tileentity != null ? tileentity.receiveClientEvent( eventID, eventParam ) : false;
|
return tileentity != null ? tileentity.receiveClientEvent( eventID, eventParam ) : false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,8 +90,7 @@ public class BlockCrank extends AEBaseTileBlock
|
||||||
private void dropCrank( final World world, final BlockPos pos )
|
private void dropCrank( final World world, final BlockPos pos )
|
||||||
{
|
{
|
||||||
world.destroyBlock( pos, true ); // w.destroyBlock( x, y, z, true );
|
world.destroyBlock( pos, true ); // w.destroyBlock( x, y, z, true );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
world.notifyBlockUpdate( pos, getDefaultState(), world.getBlockState( pos ), 3 );
|
||||||
world.markBlockForUpdate( pos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -158,9 +158,9 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
|
||||||
|
|
||||||
private void dropTorch( final World w, final BlockPos pos )
|
private void dropTorch( final World w, final BlockPos pos )
|
||||||
{
|
{
|
||||||
|
final IBlockState prev = w.getBlockState( pos );
|
||||||
w.destroyBlock( pos, true );
|
w.destroyBlock( pos, true );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 );
|
||||||
w.markBlockForUpdate( pos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -161,9 +161,9 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I
|
||||||
|
|
||||||
private void dropTorch( final World w, final BlockPos pos )
|
private void dropTorch( final World w, final BlockPos pos )
|
||||||
{
|
{
|
||||||
|
final IBlockState prev = w.getBlockState( pos );
|
||||||
w.destroyBlock( pos, true );
|
w.destroyBlock( pos, true );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 );
|
||||||
w.markBlockForUpdate( pos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -87,9 +87,9 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
|
||||||
|
|
||||||
private void dropTorch( final World w, final BlockPos pos )
|
private void dropTorch( final World w, final BlockPos pos )
|
||||||
{
|
{
|
||||||
|
final IBlockState prev = w.getBlockState( pos );
|
||||||
w.destroyBlock( pos, true );
|
w.destroyBlock( pos, true );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 );
|
||||||
w.markBlockForUpdate( pos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -35,10 +35,12 @@ import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.projectile.EntityArrow;
|
import net.minecraft.entity.projectile.EntityArrow;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.Explosion;
|
import net.minecraft.world.Explosion;
|
||||||
|
@ -62,8 +64,7 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
|
||||||
{
|
{
|
||||||
super( Material.TNT );
|
super( Material.TNT );
|
||||||
this.setLightOpacity( 1 );
|
this.setLightOpacity( 1 );
|
||||||
//TODO 1.9.4 - setBlockBounds => ?
|
this.boundingBox = new AxisAlignedBB( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f );
|
||||||
this.setBlockBounds( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f );
|
|
||||||
this.setFullSize( this.setOpaque( false ) );
|
this.setFullSize( this.setOpaque( false ) );
|
||||||
this.setSoundType( SoundType.GROUND );
|
this.setSoundType( SoundType.GROUND );
|
||||||
this.setHardness( 0F );
|
this.setHardness( 0F );
|
||||||
|
@ -107,8 +108,7 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
|
||||||
{
|
{
|
||||||
final EntityTinyTNTPrimed primedTinyTNTEntity = new EntityTinyTNTPrimed( w, pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, igniter );
|
final EntityTinyTNTPrimed primedTinyTNTEntity = new EntityTinyTNTPrimed( w, pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, igniter );
|
||||||
w.spawnEntityInWorld( primedTinyTNTEntity );
|
w.spawnEntityInWorld( primedTinyTNTEntity );
|
||||||
//TODO 1.9.4 - playSoundAtEntity => ?
|
w.playSound( null, primedTinyTNTEntity.posX, primedTinyTNTEntity.posY, primedTinyTNTEntity.posZ, SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1, 1 );
|
||||||
w.playSoundAtEntity( primedTinyTNTEntity, "game.tnt.primed", 1.0F, 1.0F );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -332,7 +332,7 @@ public class BlockCableBus extends AEBaseTileBlock // implements
|
||||||
@Override
|
@Override
|
||||||
public boolean onActivated( final World w, final BlockPos pos, final EntityPlayer player, final EnumHand hand, final @Nullable ItemStack heldItem, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
public boolean onActivated( final World w, final BlockPos pos, final EntityPlayer player, final EnumHand hand, final @Nullable ItemStack heldItem, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
||||||
{
|
{
|
||||||
return this.cb( w, pos ).activate( player, new Vec3d( hitX, hitY, hitZ ) );
|
return this.cb( w, pos ).activate( player, hand, new Vec3d( hitX, hitY, hitZ ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -25,6 +25,7 @@ import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -43,8 +44,7 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto
|
||||||
super( mat );
|
super( mat );
|
||||||
this.setTileEntity( TileQuantumBridge.class );
|
this.setTileEntity( TileQuantumBridge.class );
|
||||||
final float shave = 2.0f / 16.0f;
|
final float shave = 2.0f / 16.0f;
|
||||||
//TODO 1.9.4 - setBlockBounds => ?
|
this.boundingBox = new AxisAlignedBB( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave );
|
||||||
this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave );
|
|
||||||
this.setLightOpacity( 0 );
|
this.setLightOpacity( 0 );
|
||||||
this.setFullSize( this.setOpaque( false ) );
|
this.setFullSize( this.setOpaque( false ) );
|
||||||
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
|
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
|
||||||
|
|
|
@ -44,6 +44,7 @@ import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
@ -55,7 +56,6 @@ import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
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.registry.GameRegistry;
|
|
||||||
|
|
||||||
import appeng.api.parts.CableRenderMode;
|
import appeng.api.parts.CableRenderMode;
|
||||||
import appeng.api.parts.IPartItem;
|
import appeng.api.parts.IPartItem;
|
||||||
|
@ -495,9 +495,8 @@ public class ClientHelper extends ServerHelper
|
||||||
{
|
{
|
||||||
if( reg.item instanceof IPartItem || reg.item instanceof IFacadeItem )
|
if( reg.item instanceof IPartItem || reg.item instanceof IFacadeItem )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ?
|
final ResourceLocation i = Item.REGISTRY.getNameForObject( (Item) reg.item );
|
||||||
final UniqueIdentifier i = GameRegistry.findUniqueIdentifierFor( (Item) reg.item );
|
event.getModelRegistry().putObject( new ModelResourceLocation( new ResourceLocation( i.getResourceDomain(), i.getResourcePath() ), "inventory" ), buses );
|
||||||
event.getModelRegistry().putObject( new ModelResourceLocation( new ResourceLocation( i.modId, i.name ), "inventory" ), buses );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( reg.item instanceof AEBaseBlock )
|
if( reg.item instanceof AEBaseBlock )
|
||||||
|
@ -531,11 +530,23 @@ public class ClientHelper extends ServerHelper
|
||||||
|
|
||||||
final Minecraft mc = Minecraft.getMinecraft();
|
final Minecraft mc = Minecraft.getMinecraft();
|
||||||
final EntityPlayer player = mc.thePlayer;
|
final EntityPlayer player = mc.thePlayer;
|
||||||
//TODO 1.9.4 - 2 hands. Just do something!
|
if( player.isSneaking() )
|
||||||
final ItemStack is = player.getItemStackFromSlot( EntityEquipmentSlot.MAINHAND );
|
|
||||||
|
|
||||||
if( is != null && is.getItem() instanceof IMouseWheelItem && player.isSneaking() )
|
|
||||||
{
|
{
|
||||||
|
final EnumHand hand;
|
||||||
|
if( player.getHeldItem( EnumHand.MAIN_HAND ) != null && player.getHeldItem( EnumHand.MAIN_HAND ).getItem() instanceof IMouseWheelItem )
|
||||||
|
{
|
||||||
|
hand = EnumHand.MAIN_HAND;
|
||||||
|
}
|
||||||
|
else if( player.getHeldItem( EnumHand.OFF_HAND ) != null && player.getHeldItem( EnumHand.OFF_HAND ).getItem() instanceof IMouseWheelItem )
|
||||||
|
{
|
||||||
|
hand = EnumHand.OFF_HAND;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ItemStack is = player.getHeldItem( hand );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NetworkHandler.instance.sendToServer( new PacketValueConfig( "Item", me.getDwheel() > 0 ? "WheelUp" : "WheelDown" ) );
|
NetworkHandler.instance.sendToServer( new PacketValueConfig( "Item", me.getDwheel() > 0 ? "WheelUp" : "WheelDown" ) );
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class SmartModel implements IBakedModel
|
||||||
final BlockPos pos = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_POS );
|
final BlockPos pos = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_POS );
|
||||||
final IBlockAccess world = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_ACCESS );
|
final IBlockAccess world = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_ACCESS );
|
||||||
helper.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
|
helper.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
|
||||||
helper.setRenderBoundsFromBlock( blk );
|
helper.setRenderBoundsFromBlock( state, pos );
|
||||||
helper.setBlockAccess( world );
|
helper.setBlockAccess( world );
|
||||||
this.aeRenderer.getRendererInstance().renderInWorld( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, world, pos, helper );
|
this.aeRenderer.getRendererInstance().renderInWorld( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, world, pos, helper );
|
||||||
helper.finalizeModel( false );
|
helper.finalizeModel( false );
|
||||||
|
@ -95,7 +95,7 @@ public class SmartModel implements IBakedModel
|
||||||
{
|
{
|
||||||
final ModelGenerator helper = new BakingModelGenerator();
|
final ModelGenerator helper = new BakingModelGenerator();
|
||||||
final Block blk = Block.getBlockFromItem( stack.getItem() );
|
final Block blk = Block.getBlockFromItem( stack.getItem() );
|
||||||
helper.setRenderBoundsFromBlock( blk );
|
helper.setRenderBoundsFromBlock( blk.getDefaultState(), null );
|
||||||
aeRenderer.getRendererInstance().renderInventory( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, stack, helper, ItemRenderType.INVENTORY, null );
|
aeRenderer.getRendererInstance().renderInventory( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, stack, helper, ItemRenderType.INVENTORY, null );
|
||||||
helper.finalizeModel( true );
|
helper.finalizeModel( true );
|
||||||
return helper.getOutput();
|
return helper.getOutput();
|
||||||
|
|
|
@ -89,7 +89,7 @@ public abstract class AEBaseGui extends GuiContainer
|
||||||
private final List<InternalSlotME> meSlots = new LinkedList<InternalSlotME>();
|
private final List<InternalSlotME> meSlots = new LinkedList<InternalSlotME>();
|
||||||
// drag y
|
// drag y
|
||||||
private final Set<Slot> drag_click = new HashSet<Slot>();
|
private final Set<Slot> drag_click = new HashSet<Slot>();
|
||||||
private final AppEngRenderItem aeRenderItem = new AppEngRenderItem( Minecraft.getMinecraft().renderEngine, Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager() );
|
private final AppEngRenderItem aeRenderItem = new AppEngRenderItem( Minecraft.getMinecraft().renderEngine, Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager(), Minecraft.getMinecraft().getItemColors() );
|
||||||
private GuiScrollbar myScrollBar = null;
|
private GuiScrollbar myScrollBar = null;
|
||||||
private boolean disableShiftClick = false;
|
private boolean disableShiftClick = false;
|
||||||
private Stopwatch dbl_clickTimer = Stopwatch.createStarted();
|
private Stopwatch dbl_clickTimer = Stopwatch.createStarted();
|
||||||
|
@ -381,7 +381,7 @@ public abstract class AEBaseGui extends GuiContainer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - Whole ClickType thing and 1.8.9 conversion, to be checked
|
//TODO 1.9.4 aftermath - Whole ClickType thing, to be checked.
|
||||||
@Override
|
@Override
|
||||||
protected void handleMouseClick( final Slot slot, final int slotIdx, final int key, final ClickType clickType )
|
protected void handleMouseClick( final Slot slot, final int slotIdx, final int key, final ClickType clickType )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,7 +55,7 @@ import appeng.util.Platform;
|
||||||
import appeng.util.ReadableNumberConverter;
|
import appeng.util.ReadableNumberConverter;
|
||||||
|
|
||||||
|
|
||||||
public class GuICraftingCPU extends AEBaseGui implements ISortSource
|
public class GuiCraftingCPU extends AEBaseGui implements ISortSource
|
||||||
{
|
{
|
||||||
private static final int GUI_HEIGHT = 184;
|
private static final int GUI_HEIGHT = 184;
|
||||||
private static final int GUI_WIDTH = 238;
|
private static final int GUI_WIDTH = 238;
|
||||||
|
@ -92,12 +92,12 @@ public class GuICraftingCPU extends AEBaseGui implements ISortSource
|
||||||
private GuiButton cancel;
|
private GuiButton cancel;
|
||||||
private int tooltip = -1;
|
private int tooltip = -1;
|
||||||
|
|
||||||
public GuICraftingCPU( final InventoryPlayer inventoryPlayer, final Object te )
|
public GuiCraftingCPU( final InventoryPlayer inventoryPlayer, final Object te )
|
||||||
{
|
{
|
||||||
this( new ContainerCraftingCPU( inventoryPlayer, te ) );
|
this( new ContainerCraftingCPU( inventoryPlayer, te ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GuICraftingCPU( final ContainerCraftingCPU container )
|
protected GuiCraftingCPU( final ContainerCraftingCPU container )
|
||||||
{
|
{
|
||||||
super( container );
|
super( container );
|
||||||
this.craftingCpu = container;
|
this.craftingCpu = container;
|
||||||
|
|
|
@ -49,7 +49,7 @@ import appeng.parts.reporting.PartPatternTerminal;
|
||||||
import appeng.parts.reporting.PartTerminal;
|
import appeng.parts.reporting.PartTerminal;
|
||||||
|
|
||||||
|
|
||||||
public class GuIContainerListenerStatus extends GuICraftingCPU
|
public class GuiCraftingStatus extends GuiCraftingCPU
|
||||||
{
|
{
|
||||||
|
|
||||||
private final ContainerCraftingStatus status;
|
private final ContainerCraftingStatus status;
|
||||||
|
@ -59,7 +59,7 @@ public class GuIContainerListenerStatus extends GuICraftingCPU
|
||||||
private GuiBridge originalGui;
|
private GuiBridge originalGui;
|
||||||
private ItemStack myIcon = null;
|
private ItemStack myIcon = null;
|
||||||
|
|
||||||
public GuIContainerListenerStatus( final InventoryPlayer inventoryPlayer, final ITerminalHost te )
|
public GuiCraftingStatus( final InventoryPlayer inventoryPlayer, final ITerminalHost te )
|
||||||
{
|
{
|
||||||
super( new ContainerCraftingStatus( inventoryPlayer, te ) );
|
super( new ContainerCraftingStatus( inventoryPlayer, te ) );
|
||||||
|
|
||||||
|
|
|
@ -36,12 +36,12 @@ import appeng.core.sync.packets.PacketInventoryAction;
|
||||||
import appeng.helpers.InventoryAction;
|
import appeng.helpers.InventoryAction;
|
||||||
|
|
||||||
|
|
||||||
public class GuIContainerListenerTerm extends GuiMEMonitorable
|
public class GuiCraftingTerm extends GuiMEMonitorable
|
||||||
{
|
{
|
||||||
|
|
||||||
private GuiImgButton clearBtn;
|
private GuiImgButton clearBtn;
|
||||||
|
|
||||||
public GuIContainerListenerTerm( final InventoryPlayer inventoryPlayer, final ITerminalHost te )
|
public GuiCraftingTerm( final InventoryPlayer inventoryPlayer, final ITerminalHost te )
|
||||||
{
|
{
|
||||||
super( inventoryPlayer, te, new ContainerCraftingTerm( inventoryPlayer, te ) );
|
super( inventoryPlayer, te, new ContainerCraftingTerm( inventoryPlayer, te ) );
|
||||||
this.setReservedSpace( 73 );
|
this.setReservedSpace( 73 );
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.util.ArrayList;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
import org.lwjgl.util.vector.Vector3f;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -19,10 +21,14 @@ import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
||||||
import net.minecraft.client.renderer.block.model.ModelRotation;
|
import net.minecraft.client.renderer.block.model.ModelRotation;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraftforge.client.MinecraftForgeClient;
|
import net.minecraftforge.client.MinecraftForgeClient;
|
||||||
|
@ -35,7 +41,6 @@ import appeng.client.texture.MissingIcon;
|
||||||
import appeng.items.AEBaseItem;
|
import appeng.items.AEBaseItem;
|
||||||
import appeng.items.parts.ItemMultiPart;
|
import appeng.items.parts.ItemMultiPart;
|
||||||
|
|
||||||
//TODO 1.9.4 - Just all
|
|
||||||
public class BakingModelGenerator implements ModelGenerator
|
public class BakingModelGenerator implements ModelGenerator
|
||||||
{
|
{
|
||||||
private static final class CachedModel implements IBakedModel
|
private static final class CachedModel implements IBakedModel
|
||||||
|
@ -133,19 +138,28 @@ public class BakingModelGenerator implements ModelGenerator
|
||||||
private EnumFacing currentFace = EnumFacing.UP;
|
private EnumFacing currentFace = EnumFacing.UP;
|
||||||
private int color = -1;
|
private int color = -1;
|
||||||
|
|
||||||
public void setRenderBoundsFromBlock( final Block block )
|
public void setRenderBoundsFromBlock( final IBlockState state, final @Nullable BlockPos pos )
|
||||||
{
|
{
|
||||||
if( block == null )
|
if( state == null )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setRenderMinX( block.getBlockBoundsMinX() );
|
AxisAlignedBB boundingBox;
|
||||||
this.setRenderMinY( block.getBlockBoundsMinY() );
|
try
|
||||||
this.setRenderMinZ( block.getBlockBoundsMinZ() );
|
{
|
||||||
this.setRenderMaxX( block.getBlockBoundsMaxX() );
|
boundingBox = state.getBoundingBox( getBlockAccess(), pos );
|
||||||
this.setRenderMaxY( block.getBlockBoundsMaxY() );
|
}
|
||||||
this.setRenderMaxZ( block.getBlockBoundsMaxZ() );
|
catch( NullPointerException e )
|
||||||
|
{
|
||||||
|
boundingBox = Block.FULL_BLOCK_AABB;
|
||||||
|
}
|
||||||
|
this.setRenderMinX( boundingBox.minX );
|
||||||
|
this.setRenderMinY( boundingBox.minY );
|
||||||
|
this.setRenderMinZ( boundingBox.minZ );
|
||||||
|
this.setRenderMaxX( boundingBox.maxX );
|
||||||
|
this.setRenderMaxY( boundingBox.maxY );
|
||||||
|
this.setRenderMaxZ( boundingBox.maxZ );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRenderBounds( final double d, final double e, final double f, final double g, final double h, final double i )
|
public void setRenderBounds( final double d, final double e, final double f, final double g, final double h, final double i )
|
||||||
|
@ -289,6 +303,7 @@ public class BakingModelGenerator implements ModelGenerator
|
||||||
return this.getIcon( state );
|
return this.getIcon( state );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO 1.9.4 aftermath - Check that this shit still works.
|
||||||
public void addVertexWithUV( final EnumFacing face, final double x, final double y, final double z, final double u, final double v )
|
public void addVertexWithUV( final EnumFacing face, final double x, final double y, final double z, final double u, final double v )
|
||||||
{
|
{
|
||||||
this.points[this.point++] = new float[] { (float) x + this.tx, (float) y + this.ty, (float) z + this.tz, (float) u, (float) v };
|
this.points[this.point++] = new float[] { (float) x + this.tx, (float) y + this.ty, (float) z + this.tz, (float) u, (float) v };
|
||||||
|
@ -297,40 +312,43 @@ public class BakingModelGenerator implements ModelGenerator
|
||||||
{
|
{
|
||||||
this.brightness = -1;
|
this.brightness = -1;
|
||||||
final int[] vertData = {
|
final int[] vertData = {
|
||||||
Float.floatToRawIntBits( this.points[0][0] ),
|
Float.floatToRawIntBits( this.points[0][0] ),
|
||||||
Float.floatToRawIntBits( this.points[0][1] ),
|
Float.floatToRawIntBits( this.points[0][1] ),
|
||||||
Float.floatToRawIntBits( this.points[0][2] ),
|
Float.floatToRawIntBits( this.points[0][2] ),
|
||||||
this.brightness,
|
// this.brightness,
|
||||||
Float.floatToRawIntBits( this.points[0][3] ),
|
Float.floatToRawIntBits( this.points[0][3] ),
|
||||||
Float.floatToRawIntBits( this.points[0][4] ),
|
Float.floatToRawIntBits( this.points[0][4] ),
|
||||||
0,
|
// 0,
|
||||||
|
|
||||||
Float.floatToRawIntBits( this.points[1][0] ),
|
Float.floatToRawIntBits( this.points[1][0] ),
|
||||||
Float.floatToRawIntBits( this.points[1][1] ),
|
Float.floatToRawIntBits( this.points[1][1] ),
|
||||||
Float.floatToRawIntBits( this.points[1][2] ),
|
Float.floatToRawIntBits( this.points[1][2] ),
|
||||||
this.brightness,
|
// this.brightness,
|
||||||
Float.floatToRawIntBits( this.points[1][3] ),
|
Float.floatToRawIntBits( this.points[1][3] ),
|
||||||
Float.floatToRawIntBits( this.points[1][4] ),
|
Float.floatToRawIntBits( this.points[1][4] ),
|
||||||
0,
|
// 0,
|
||||||
|
|
||||||
Float.floatToRawIntBits( this.points[2][0] ),
|
Float.floatToRawIntBits( this.points[2][0] ),
|
||||||
Float.floatToRawIntBits( this.points[2][1] ),
|
Float.floatToRawIntBits( this.points[2][1] ),
|
||||||
Float.floatToRawIntBits( this.points[2][2] ),
|
Float.floatToRawIntBits( this.points[2][2] ),
|
||||||
this.brightness,
|
// this.brightness,
|
||||||
Float.floatToRawIntBits( this.points[2][3] ),
|
Float.floatToRawIntBits( this.points[2][3] ),
|
||||||
Float.floatToRawIntBits( this.points[2][4] ),
|
Float.floatToRawIntBits( this.points[2][4] ),
|
||||||
0,
|
// 0,
|
||||||
|
|
||||||
Float.floatToRawIntBits( this.points[3][0] ),
|
Float.floatToRawIntBits( this.points[3][0] ),
|
||||||
Float.floatToRawIntBits( this.points[3][1] ),
|
Float.floatToRawIntBits( this.points[3][1] ),
|
||||||
Float.floatToRawIntBits( this.points[3][2] ),
|
Float.floatToRawIntBits( this.points[3][2] ),
|
||||||
this.brightness,
|
// this.brightness,
|
||||||
Float.floatToRawIntBits( this.points[3][3] ),
|
Float.floatToRawIntBits( this.points[3][3] ),
|
||||||
Float.floatToRawIntBits( this.points[3][4] ),
|
Float.floatToRawIntBits( this.points[3][4] ),
|
||||||
0,
|
// 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.generatedModel.general.add( new IColoredBakedQuad.ColoredBakedQuad( vertData, this.color, face ) );
|
for( List<BakedQuad> list : this.generatedModel.faces )
|
||||||
|
{
|
||||||
|
list.add( new BakedQuad( vertData, this.color, face, Minecraft.getMinecraft().getTextureMapBlocks().getTextureExtry( TextureMap.LOCATION_BLOCKS_TEXTURE.toString() ), true, DefaultVertexFormats.POSITION_TEX ) );
|
||||||
|
}
|
||||||
|
|
||||||
this.point = 0;
|
this.point = 0;
|
||||||
}
|
}
|
||||||
|
@ -556,15 +574,18 @@ public class BakingModelGenerator implements ModelGenerator
|
||||||
final BlockPartFace bpf = new BlockPartFace( myFace, face.getColor(), "", uv );
|
final BlockPartFace bpf = new BlockPartFace( myFace, face.getColor(), "", uv );
|
||||||
|
|
||||||
BakedQuad bf = this.faceBakery.makeBakedQuad( face.getTo(), face.getFrom(), bpf, face.getSpite(), myFace, mr, null, true, true );
|
BakedQuad bf = this.faceBakery.makeBakedQuad( face.getTo(), face.getFrom(), bpf, face.getSpite(), myFace, mr, null, true, true );
|
||||||
bf = new IColoredBakedQuad.ColoredBakedQuad( bf.getVertexData(), face.getColor(), bf.getFace() );
|
bf = new BakedQuad( bf.getVertexData(), face.getColor(), bf.getFace(), Minecraft.getMinecraft().getTextureMapBlocks().getTextureExtry( TextureMap.LOCATION_BLOCKS_TEXTURE.toString() ), true, DefaultVertexFormats.POSITION_TEX );
|
||||||
|
|
||||||
if( face.isEdge() )
|
if( face.isEdge() )
|
||||||
{
|
{
|
||||||
this.generatedModel.getFaceQuads( myFace ).add( bf );
|
this.generatedModel.faces[myFace.ordinal()].add( bf );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.generatedModel.getGeneralQuads().add( bf );
|
for( List<BakedQuad> list : this.generatedModel.faces )
|
||||||
|
{
|
||||||
|
list.add( bf );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -694,7 +694,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
|
||||||
renderer.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
|
renderer.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
|
||||||
|
|
||||||
// note that this is a terrible approach...
|
// note that this is a terrible approach...
|
||||||
renderer.setRenderBoundsFromBlock( block );
|
renderer.setRenderBoundsFromBlock( block.getDefaultState(), pos );
|
||||||
renderer.renderStandardBlock( block, pos );
|
renderer.renderStandardBlock( block, pos );
|
||||||
|
|
||||||
renderer.setTranslation( 0, 0, 0 );
|
renderer.setTranslation( 0, 0, 0 );
|
||||||
|
|
|
@ -62,7 +62,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler
|
||||||
public boolean renderWorldBlock( final IBlockAccess world, final BlockPos pos, final Block block, final int modelId, final ModelGenerator renderer )
|
public boolean renderWorldBlock( final IBlockAccess world, final BlockPos pos, final Block block, final int modelId, final ModelGenerator renderer )
|
||||||
{
|
{
|
||||||
final AEBaseBlock blk = (AEBaseBlock) block;
|
final AEBaseBlock blk = (AEBaseBlock) block;
|
||||||
renderer.setRenderBoundsFromBlock( block );
|
renderer.setRenderBoundsFromBlock( world.getBlockState( pos ), pos );
|
||||||
return this.getRender( blk ).renderInWorld( blk, world, pos, renderer );
|
return this.getRender( blk ).renderInWorld( blk, world, pos, renderer );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler
|
||||||
if( blk instanceof AEBaseBlock )
|
if( blk instanceof AEBaseBlock )
|
||||||
{
|
{
|
||||||
final AEBaseBlock block = (AEBaseBlock) blk;
|
final AEBaseBlock block = (AEBaseBlock) blk;
|
||||||
this.renderer.setRenderBoundsFromBlock( block );
|
this.renderer.setRenderBoundsFromBlock( block.getDefaultState(), null );
|
||||||
|
|
||||||
this.renderer.setUvRotateBottom( this.renderer.setUvRotateEast( this.renderer.setUvRotateNorth( this.renderer.setUvRotateSouth( this.renderer.setUvRotateTop( this.renderer.setUvRotateWest( 0 ) ) ) ) ) );
|
this.renderer.setUvRotateBottom( this.renderer.setUvRotateEast( this.renderer.setUvRotateNorth( this.renderer.setUvRotateSouth( this.renderer.setUvRotateTop( this.renderer.setUvRotateWest( 0 ) ) ) ) ) );
|
||||||
this.getRender( block ).renderInventory( block, item, this.renderer, type, data );
|
this.getRender( block ).renderInventory( block, item, this.renderer, type, data );
|
||||||
|
|
|
@ -28,9 +28,10 @@ import appeng.api.storage.data.IAEItemStack;
|
||||||
import appeng.client.EffectType;
|
import appeng.client.EffectType;
|
||||||
import appeng.core.CommonHelper;
|
import appeng.core.CommonHelper;
|
||||||
import appeng.entity.EntityFloatingItem;
|
import appeng.entity.EntityFloatingItem;
|
||||||
|
import appeng.entity.ICanDie;
|
||||||
|
|
||||||
|
|
||||||
public class AssemblerFX extends Particle
|
public class AssemblerFX extends Particle implements ICanDie
|
||||||
{
|
{
|
||||||
|
|
||||||
private final EntityFloatingItem fi;
|
private final EntityFloatingItem fi;
|
||||||
|
@ -47,8 +48,12 @@ public class AssemblerFX extends Particle
|
||||||
this.fi = new EntityFloatingItem( this, w, x, y, z, is.getItemStack() );
|
this.fi = new EntityFloatingItem( this, w, x, y, z, is.getItemStack() );
|
||||||
w.spawnEntityInWorld( this.fi );
|
w.spawnEntityInWorld( this.fi );
|
||||||
this.particleMaxAge = (int) Math.ceil( Math.max( 1, 100.0f / speed ) ) + 2;
|
this.particleMaxAge = (int) Math.ceil( Math.max( 1, 100.0f / speed ) ) + 2;
|
||||||
//TODO 1.9.4 - noClip => ?
|
}
|
||||||
this.noClip = true;
|
|
||||||
|
@Override
|
||||||
|
public boolean isDead()
|
||||||
|
{
|
||||||
|
return isExpired;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -61,7 +66,20 @@ public class AssemblerFX extends Particle
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate()
|
public void onUpdate()
|
||||||
{
|
{
|
||||||
super.onUpdate();
|
this.prevPosX = this.posX;
|
||||||
|
this.prevPosY = this.posY;
|
||||||
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
if (this.particleAge++ >= this.particleMaxAge)
|
||||||
|
{
|
||||||
|
this.setExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionY -= 0.04D * (double)this.particleGravity;
|
||||||
|
this.moveEntity(this.motionX, this.motionY, this.motionZ);
|
||||||
|
this.motionX *= 0.9800000190734863D;
|
||||||
|
this.motionY *= 0.9800000190734863D;
|
||||||
|
this.motionZ *= 0.9800000190734863D;
|
||||||
|
|
||||||
if( this.isExpired )
|
if( this.isExpired )
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,9 +58,6 @@ public class CraftingFx extends ParticleBreaking
|
||||||
this.startBlkX = MathHelper.floor_double( this.posX );
|
this.startBlkX = MathHelper.floor_double( this.posX );
|
||||||
this.startBlkY = MathHelper.floor_double( this.posY );
|
this.startBlkY = MathHelper.floor_double( this.posY );
|
||||||
this.startBlkZ = MathHelper.floor_double( this.posZ );
|
this.startBlkZ = MathHelper.floor_double( this.posZ );
|
||||||
|
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -116,7 +113,20 @@ public class CraftingFx extends ParticleBreaking
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate()
|
public void onUpdate()
|
||||||
{
|
{
|
||||||
super.onUpdate();
|
this.prevPosX = this.posX;
|
||||||
|
this.prevPosY = this.posY;
|
||||||
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
if (this.particleAge++ >= this.particleMaxAge)
|
||||||
|
{
|
||||||
|
this.setExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionY -= 0.04D * (double)this.particleGravity;
|
||||||
|
this.moveEntity(this.motionX, this.motionY, this.motionZ);
|
||||||
|
this.motionX *= 0.9800000190734863D;
|
||||||
|
this.motionY *= 0.9800000190734863D;
|
||||||
|
this.motionZ *= 0.9800000190734863D;
|
||||||
this.particleScale *= 0.51f;
|
this.particleScale *= 0.51f;
|
||||||
this.particleAlpha *= 0.51f;
|
this.particleAlpha *= 0.51f;
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,9 +57,6 @@ public class EnergyFx extends ParticleBreaking
|
||||||
this.startBlkX = MathHelper.floor_double( this.posX );
|
this.startBlkX = MathHelper.floor_double( this.posX );
|
||||||
this.startBlkY = MathHelper.floor_double( this.posY );
|
this.startBlkY = MathHelper.floor_double( this.posY );
|
||||||
this.startBlkZ = MathHelper.floor_double( this.posZ );
|
this.startBlkZ = MathHelper.floor_double( this.posZ );
|
||||||
|
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -106,9 +103,23 @@ public class EnergyFx extends ParticleBreaking
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate()
|
public void onUpdate()
|
||||||
{
|
{
|
||||||
super.onUpdate();
|
this.prevPosX = this.posX;
|
||||||
this.particleScale *= 0.89f;
|
this.prevPosY = this.posY;
|
||||||
this.particleAlpha *= 0.89f;
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
if (this.particleAge++ >= this.particleMaxAge)
|
||||||
|
{
|
||||||
|
this.setExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionY -= 0.04D * (double)this.particleGravity;
|
||||||
|
this.moveEntity(this.motionX, this.motionY, this.motionZ);
|
||||||
|
this.motionX *= 0.9800000190734863D;
|
||||||
|
this.motionY *= 0.9800000190734863D;
|
||||||
|
this.motionZ *= 0.9800000190734863D;
|
||||||
|
|
||||||
|
this.particleScale *= 0.89f;
|
||||||
|
this.particleAlpha *= 0.89f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMotionX( float motionX )
|
public void setMotionX( float motionX )
|
||||||
|
|
|
@ -35,8 +35,6 @@ public class LightningArcFX extends LightningFX
|
||||||
public LightningArcFX( final World w, final double x, final double y, final double z, final double ex, final double ey, final double ez, final double r, final double g, final double b )
|
public LightningArcFX( final World w, final double x, final double y, final double z, final double ex, final double ey, final double ez, final double r, final double g, final double b )
|
||||||
{
|
{
|
||||||
super( w, x, y, z, r, g, b, 6 );
|
super( w, x, y, z, r, g, b, 6 );
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
|
|
||||||
this.rx = ex - x;
|
this.rx = ex - x;
|
||||||
this.ry = ey - y;
|
this.ry = ey - y;
|
||||||
|
|
|
@ -55,8 +55,6 @@ public class LightningFX extends Particle
|
||||||
this.motionY = 0;
|
this.motionY = 0;
|
||||||
this.motionZ = 0;
|
this.motionZ = 0;
|
||||||
this.particleMaxAge = maxAge;
|
this.particleMaxAge = maxAge;
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void regen()
|
protected void regen()
|
||||||
|
@ -83,6 +81,25 @@ public class LightningFX extends Particle
|
||||||
final int j1 = 13;
|
final int j1 = 13;
|
||||||
return j1 << 20 | j1 << 4;
|
return j1 << 20 | j1 << 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate()
|
||||||
|
{
|
||||||
|
this.prevPosX = this.posX;
|
||||||
|
this.prevPosY = this.posY;
|
||||||
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
if (this.particleAge++ >= this.particleMaxAge)
|
||||||
|
{
|
||||||
|
this.setExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionY -= 0.04D * (double)this.particleGravity;
|
||||||
|
this.moveEntity(this.motionX, this.motionY, this.motionZ);
|
||||||
|
this.motionX *= 0.9800000190734863D;
|
||||||
|
this.motionY *= 0.9800000190734863D;
|
||||||
|
this.motionZ *= 0.9800000190734863D;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderParticle( final VertexBuffer tess, final Entity p_180434_2_, final float l, final float rX, final float rY, final float rZ, final float rYZ, final float rXY )
|
public void renderParticle( final VertexBuffer tess, final Entity p_180434_2_, final float l, final float rX, final float rY, final float rZ, final float rYZ, final float rXY )
|
||||||
|
|
|
@ -48,8 +48,6 @@ public class MatterCannonFX extends ParticleBreaking
|
||||||
this.motionY = 0.0f;
|
this.motionY = 0.0f;
|
||||||
this.motionZ = 0.0f;
|
this.motionZ = 0.0f;
|
||||||
this.particleTextureIndex = ExtraBlockTextures.BlockMatterCannonParticle.getIcon().getAtlas();
|
this.particleTextureIndex = ExtraBlockTextures.BlockMatterCannonParticle.getIcon().getAtlas();
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fromItem( final AEPartLocation d )
|
public void fromItem( final AEPartLocation d )
|
||||||
|
@ -60,7 +58,21 @@ public class MatterCannonFX extends ParticleBreaking
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate()
|
public void onUpdate()
|
||||||
{
|
{
|
||||||
super.onUpdate();
|
this.prevPosX = this.posX;
|
||||||
|
this.prevPosY = this.posY;
|
||||||
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
if (this.particleAge++ >= this.particleMaxAge)
|
||||||
|
{
|
||||||
|
this.setExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionY -= 0.04D * (double)this.particleGravity;
|
||||||
|
this.moveEntity(this.motionX, this.motionY, this.motionZ);
|
||||||
|
this.motionX *= 0.9800000190734863D;
|
||||||
|
this.motionY *= 0.9800000190734863D;
|
||||||
|
this.motionZ *= 0.9800000190734863D;
|
||||||
|
|
||||||
this.particleScale *= 1.19f;
|
this.particleScale *= 1.19f;
|
||||||
this.particleAlpha *= 0.59f;
|
this.particleAlpha *= 0.59f;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,8 +46,6 @@ public class VibrantFX extends Particle
|
||||||
this.prevPosY = this.posY;
|
this.prevPosY = this.posY;
|
||||||
this.prevPosZ = this.posZ;
|
this.prevPosZ = this.posZ;
|
||||||
this.particleMaxAge = (int) ( 20.0D / ( Math.random() * 0.8D + 0.1D ) );
|
this.particleMaxAge = (int) ( 20.0D / ( Math.random() * 0.8D + 0.1D ) );
|
||||||
//TODO 1.9.4 - noClip => ?
|
|
||||||
this.noClip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -365,11 +365,10 @@ public class ContainerCraftConfirm extends AEBaseContainer
|
||||||
return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() );
|
return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() );
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - removeCraftingFromCrafters => ?
|
|
||||||
@Override
|
@Override
|
||||||
public void removeCraftingFromCrafters( final IContainerListener c )
|
public void removeListener( final IContainerListener c )
|
||||||
{
|
{
|
||||||
super.removeCraftingFromCrafters( c );
|
super.removeListener( c );
|
||||||
if( this.getJob() != null )
|
if( this.getJob() != null )
|
||||||
{
|
{
|
||||||
this.getJob().cancel( true );
|
this.getJob().cancel( true );
|
||||||
|
|
|
@ -152,11 +152,10 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
|
||||||
this.setEstimatedTime( -1 );
|
this.setEstimatedTime( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - removeCraftingFromCrafters => ?
|
|
||||||
@Override
|
@Override
|
||||||
public void removeCraftingFromCrafters( final IContainerListener c )
|
public void removeListener( final IContainerListener c )
|
||||||
{
|
{
|
||||||
super.removeCraftingFromCrafters( c );
|
super.removeListener( c );
|
||||||
|
|
||||||
if( this.listeners.isEmpty() && this.getMonitor() != null )
|
if( this.listeners.isEmpty() && this.getMonitor() != null )
|
||||||
{
|
{
|
||||||
|
|
|
@ -300,11 +300,10 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
|
||||||
super.onUpdate( field, oldValue, newValue );
|
super.onUpdate( field, oldValue, newValue );
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - onCraftGuiOpened => ?
|
|
||||||
@Override
|
@Override
|
||||||
public void onCraftGuiOpened( final IContainerListener c )
|
public void addListener( final IContainerListener c )
|
||||||
{
|
{
|
||||||
super.onCraftGuiOpened( c );
|
super.addListener( c );
|
||||||
|
|
||||||
this.queueInventory( c );
|
this.queueInventory( c );
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
|
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
|
||||||
|
@ -174,8 +175,7 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
|
||||||
if( item.stackSize == 0 )
|
if( item.stackSize == 0 )
|
||||||
{
|
{
|
||||||
this.getPlayerInv().mainInventory[this.getPlayerInv().currentItem] = null;
|
this.getPlayerInv().mainInventory[this.getPlayerInv().currentItem] = null;
|
||||||
//TODO 1.9.4 - 2 hands. Just do something!
|
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( this.getPlayerInv().player, item, null ) );
|
||||||
MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( this.getPlayerInv().player, item ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -70,12 +70,12 @@ public final class AppEng
|
||||||
public static final String ASSETS = "appliedenergistics2:";
|
public static final String ASSETS = "appliedenergistics2:";
|
||||||
|
|
||||||
public static final String MOD_DEPENDENCIES =
|
public static final String MOD_DEPENDENCIES =
|
||||||
// a few mods, AE should load after, probably.
|
// a few mods, AE should load after, probably.
|
||||||
// required-after:AppliedEnergistics2API|all;
|
// required-after:AppliedEnergistics2API|all;
|
||||||
// "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" +
|
// "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" +
|
||||||
|
|
||||||
// depend on version of forge used for build.
|
// depend on version of forge used for build.
|
||||||
"after:appliedenergistics2-core;" + "required-after:Forge@[" // require forge.
|
"after:appliedenergistics2-core;" + "required-after:Forge@[" // require forge.
|
||||||
+ net.minecraftforge.common.ForgeVersion.majorVersion + '.' // majorVersion
|
+ net.minecraftforge.common.ForgeVersion.majorVersion + '.' // majorVersion
|
||||||
+ net.minecraftforge.common.ForgeVersion.minorVersion + '.' // minorVersion
|
+ net.minecraftforge.common.ForgeVersion.minorVersion + '.' // minorVersion
|
||||||
+ net.minecraftforge.common.ForgeVersion.revisionVersion + '.' // revisionVersion
|
+ net.minecraftforge.common.ForgeVersion.revisionVersion + '.' // revisionVersion
|
||||||
|
|
|
@ -25,8 +25,9 @@ import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.common.config.Configuration;
|
import net.minecraftforge.common.config.Configuration;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
|
||||||
|
|
||||||
|
|
||||||
public class FacadeConfig extends Configuration
|
public class FacadeConfig extends Configuration
|
||||||
|
@ -48,8 +49,7 @@ public class FacadeConfig extends Configuration
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ResourceLocation ???
|
final ResourceLocation blk = Item.REGISTRY.getNameForObject( Item.getItemFromBlock( id ) );
|
||||||
final UniqueIdentifier blk = GameRegistry.findUniqueIdentifierFor( id );
|
|
||||||
if( blk == null )
|
if( blk == null )
|
||||||
{
|
{
|
||||||
for( final Field f : Block.class.getFields() )
|
for( final Field f : Block.class.getFields() )
|
||||||
|
@ -69,8 +69,8 @@ public class FacadeConfig extends Configuration
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final Matcher mod = this.replacementPattern.matcher( blk.modId );
|
final Matcher mod = this.replacementPattern.matcher( blk.getResourceDomain() );
|
||||||
final Matcher name = this.replacementPattern.matcher( blk.name );
|
final Matcher name = this.replacementPattern.matcher( blk.getResourcePath() );
|
||||||
return this.get( mod.replaceAll( "" ), name.replaceAll( "" ) + ( metadata == 0 ? "" : "." + metadata ), automatic ).getBoolean( automatic );
|
return this.get( mod.replaceAll( "" ), name.replaceAll( "" ) + ( metadata == 0 ? "" : "." + metadata ), automatic ).getBoolean( automatic );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@ package appeng.core;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
@ -46,7 +48,6 @@ import appeng.api.config.Upgrades;
|
||||||
import appeng.api.definitions.IBlocks;
|
import appeng.api.definitions.IBlocks;
|
||||||
import appeng.api.definitions.IDefinitions;
|
import appeng.api.definitions.IDefinitions;
|
||||||
import appeng.api.definitions.IItems;
|
import appeng.api.definitions.IItems;
|
||||||
import appeng.api.definitions.IMaterials;
|
|
||||||
import appeng.api.definitions.IParts;
|
import appeng.api.definitions.IParts;
|
||||||
import appeng.api.features.IRecipeHandlerRegistry;
|
import appeng.api.features.IRecipeHandlerRegistry;
|
||||||
import appeng.api.features.IRegistryContainer;
|
import appeng.api.features.IRegistryContainer;
|
||||||
|
@ -74,6 +75,7 @@ import appeng.core.localization.PlayerMessages;
|
||||||
import appeng.core.stats.PlayerStatsRegistration;
|
import appeng.core.stats.PlayerStatsRegistration;
|
||||||
import appeng.hooks.TickHandler;
|
import appeng.hooks.TickHandler;
|
||||||
import appeng.items.materials.MultiItem;
|
import appeng.items.materials.MultiItem;
|
||||||
|
import appeng.loot.ChestLoot;
|
||||||
import appeng.me.cache.CraftingGridCache;
|
import appeng.me.cache.CraftingGridCache;
|
||||||
import appeng.me.cache.EnergyGridCache;
|
import appeng.me.cache.EnergyGridCache;
|
||||||
import appeng.me.cache.GridStorageCache;
|
import appeng.me.cache.GridStorageCache;
|
||||||
|
@ -198,14 +200,19 @@ public final class Registration
|
||||||
|
|
||||||
if( config.storageProviderID == -1 && force )
|
if( config.storageProviderID == -1 && force )
|
||||||
{
|
{
|
||||||
|
final Set<Integer> ids = new HashSet<>();
|
||||||
|
for( DimensionType type : DimensionType.values() )
|
||||||
|
{
|
||||||
|
ids.add( type.getId() );
|
||||||
|
}
|
||||||
|
|
||||||
config.storageProviderID = -11;
|
config.storageProviderID = -11;
|
||||||
|
|
||||||
//TODO 1.9.4 - Storage provider ids aren't stored anywhere, so no way to find free one. Do something with this!
|
while( ids.contains( config.storageProviderID ) )
|
||||||
while( DimensionManager.isDimensionRegistered( config.storageProviderID ) )
|
|
||||||
{
|
{
|
||||||
config.storageProviderID--;
|
config.storageProviderID--;
|
||||||
}
|
}
|
||||||
|
|
||||||
storageDimensionType = DimensionType.register( "Storage Cell", "_cell", config.storageProviderID, StorageWorldProvider.class, false );
|
storageDimensionType = DimensionType.register( "Storage Cell", "_cell", config.storageProviderID, StorageWorldProvider.class, false );
|
||||||
|
|
||||||
config.save();
|
config.save();
|
||||||
|
@ -278,9 +285,13 @@ public final class Registration
|
||||||
FMLCommonHandler.instance().bus().register( TickHandler.INSTANCE );
|
FMLCommonHandler.instance().bus().register( TickHandler.INSTANCE );
|
||||||
MinecraftForge.EVENT_BUS.register( TickHandler.INSTANCE );
|
MinecraftForge.EVENT_BUS.register( TickHandler.INSTANCE );
|
||||||
|
|
||||||
final PartPlacement pp = new PartPlacement();
|
|
||||||
MinecraftForge.EVENT_BUS.register( pp );
|
MinecraftForge.EVENT_BUS.register( new PartPlacement() );
|
||||||
FMLCommonHandler.instance().bus().register( pp );
|
|
||||||
|
if( AEConfig.instance.isFeatureEnabled( AEFeature.ChestLoot ) )
|
||||||
|
{
|
||||||
|
MinecraftForge.EVENT_BUS.register( new ChestLoot() );
|
||||||
|
}
|
||||||
|
|
||||||
final IGridCacheRegistry gcr = registries.gridCache();
|
final IGridCacheRegistry gcr = registries.gridCache();
|
||||||
gcr.registerGridCache( ITickManager.class, TickManagerCache.class );
|
gcr.registerGridCache( ITickManager.class, TickManagerCache.class );
|
||||||
|
@ -417,23 +428,6 @@ public final class Registration
|
||||||
registries.wireless().registerWirelessHandler( (IWirelessTermHandler) wirelessTerminalItem );
|
registries.wireless().registerWirelessHandler( (IWirelessTermHandler) wirelessTerminalItem );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( AEConfig.instance.isFeatureEnabled( AEFeature.ChestLoot ) )
|
|
||||||
{
|
|
||||||
//TODO 1.9.4 - Chest Gen => Loot Tables
|
|
||||||
final ChestGenHooks d = ChestGenHooks.getInfo( ChestGenHooks.MINESHAFT_CORRIDOR );
|
|
||||||
|
|
||||||
final IMaterials materials = definitions.materials();
|
|
||||||
|
|
||||||
for( final ItemStack crystal : materials.certusQuartzCrystal().maybeStack( 1 ).asSet() )
|
|
||||||
{
|
|
||||||
d.addItem( new WeightedRandomChestContent( crystal, 1, 4, 2 ) );
|
|
||||||
}
|
|
||||||
for( final ItemStack dust : materials.certusQuartzDust().maybeStack( 1 ).asSet() )
|
|
||||||
{
|
|
||||||
d.addItem( new WeightedRandomChestContent( dust, 1, 4, 2 ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add villager trading to black smiths for a few basic materials
|
// add villager trading to black smiths for a few basic materials
|
||||||
if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) )
|
if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,6 +44,7 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -338,9 +339,9 @@ public class ApiPart implements IPartHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean placeBus( final ItemStack is, final BlockPos pos, final EnumFacing side, final EntityPlayer player, final World w )
|
public boolean placeBus( final ItemStack is, final BlockPos pos, final EnumFacing side, final EntityPlayer player, final EnumHand hand, final World w )
|
||||||
{
|
{
|
||||||
return PartPlacement.place( is, pos, side, player, w, PartPlacement.PlaceType.PLACE_ITEM, 0 );
|
return PartPlacement.place( is, pos, side, player, hand, w, PartPlacement.PlaceType.PLACE_ITEM, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -25,6 +25,7 @@ import io.netty.buffer.Unpooled;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
|
@ -44,10 +45,11 @@ public class PacketClick extends AppEngPacket
|
||||||
private final int x;
|
private final int x;
|
||||||
private final int y;
|
private final int y;
|
||||||
private final int z;
|
private final int z;
|
||||||
private final int side;
|
private EnumFacing side;
|
||||||
private final float hitX;
|
private final float hitX;
|
||||||
private final float hitY;
|
private final float hitY;
|
||||||
private final float hitZ;
|
private final float hitZ;
|
||||||
|
private EnumHand hand;
|
||||||
|
|
||||||
// automatic.
|
// automatic.
|
||||||
public PacketClick( final ByteBuf stream )
|
public PacketClick( final ByteBuf stream )
|
||||||
|
@ -55,14 +57,15 @@ public class PacketClick extends AppEngPacket
|
||||||
this.x = stream.readInt();
|
this.x = stream.readInt();
|
||||||
this.y = stream.readInt();
|
this.y = stream.readInt();
|
||||||
this.z = stream.readInt();
|
this.z = stream.readInt();
|
||||||
this.side = stream.readInt();
|
this.side = EnumFacing.values()[ stream.readByte() ];
|
||||||
this.hitX = stream.readFloat();
|
this.hitX = stream.readFloat();
|
||||||
this.hitY = stream.readFloat();
|
this.hitY = stream.readFloat();
|
||||||
this.hitZ = stream.readFloat();
|
this.hitZ = stream.readFloat();
|
||||||
|
this.hand = EnumHand.values()[ stream.readByte() ];
|
||||||
}
|
}
|
||||||
|
|
||||||
// api
|
// api
|
||||||
public PacketClick( final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
public PacketClick( final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ, final EnumHand hand )
|
||||||
{
|
{
|
||||||
|
|
||||||
final ByteBuf data = Unpooled.buffer();
|
final ByteBuf data = Unpooled.buffer();
|
||||||
|
@ -71,10 +74,11 @@ public class PacketClick extends AppEngPacket
|
||||||
data.writeInt( this.x = pos.getX() );
|
data.writeInt( this.x = pos.getX() );
|
||||||
data.writeInt( this.y = pos.getY() );
|
data.writeInt( this.y = pos.getY() );
|
||||||
data.writeInt( this.z = pos.getZ() );
|
data.writeInt( this.z = pos.getZ() );
|
||||||
data.writeInt( this.side = side.ordinal() );
|
data.writeByte( side.ordinal() );
|
||||||
data.writeFloat( this.hitX = hitX );
|
data.writeFloat( this.hitX = hitX );
|
||||||
data.writeFloat( this.hitY = hitY );
|
data.writeFloat( this.hitY = hitY );
|
||||||
data.writeFloat( this.hitZ = hitZ );
|
data.writeFloat( this.hitZ = hitZ );
|
||||||
|
data.writeByte( hand.ordinal() );
|
||||||
|
|
||||||
this.configureWrite( data );
|
this.configureWrite( data );
|
||||||
}
|
}
|
||||||
|
@ -92,7 +96,7 @@ public class PacketClick extends AppEngPacket
|
||||||
if( is.getItem() instanceof ToolNetworkTool )
|
if( is.getItem() instanceof ToolNetworkTool )
|
||||||
{
|
{
|
||||||
final ToolNetworkTool tnt = (ToolNetworkTool) is.getItem();
|
final ToolNetworkTool tnt = (ToolNetworkTool) is.getItem();
|
||||||
tnt.serverSideToolLogic( is, player, player.worldObj, new BlockPos( this.x, this.y, this.z ), EnumFacing.VALUES[this.side], this.hitX, this.hitY, this.hitZ );
|
tnt.serverSideToolLogic( is, player, this.hand, player.worldObj, new BlockPos( this.x, this.y, this.z ), this.side, this.hitX, this.hitY, this.hitZ );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( maybeMemoryCard.isSameAs( is ) )
|
else if( maybeMemoryCard.isSameAs( is ) )
|
||||||
|
|
|
@ -41,8 +41,8 @@ import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
import appeng.client.gui.implementations.GuICraftingCPU;
|
|
||||||
import appeng.client.gui.implementations.GuiCraftConfirm;
|
import appeng.client.gui.implementations.GuiCraftConfirm;
|
||||||
|
import appeng.client.gui.implementations.GuiCraftingCPU;
|
||||||
import appeng.client.gui.implementations.GuiMEMonitorable;
|
import appeng.client.gui.implementations.GuiMEMonitorable;
|
||||||
import appeng.client.gui.implementations.GuiNetworkStatus;
|
import appeng.client.gui.implementations.GuiNetworkStatus;
|
||||||
import appeng.core.AELog;
|
import appeng.core.AELog;
|
||||||
|
@ -154,9 +154,9 @@ public class PacketMEInventoryUpdate extends AppEngPacket
|
||||||
( (GuiCraftConfirm) gs ).postUpdate( this.list, this.ref );
|
( (GuiCraftConfirm) gs ).postUpdate( this.list, this.ref );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( gs instanceof GuICraftingCPU )
|
if( gs instanceof GuiCraftingCPU )
|
||||||
{
|
{
|
||||||
( (GuICraftingCPU) gs ).postUpdate( this.list, this.ref );
|
( (GuiCraftingCPU) gs ).postUpdate( this.list, this.ref );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( gs instanceof GuiMEMonitorable )
|
if( gs instanceof GuiMEMonitorable )
|
||||||
|
|
|
@ -25,6 +25,7 @@ import io.netty.buffer.Unpooled;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import appeng.core.CommonHelper;
|
import appeng.core.CommonHelper;
|
||||||
|
@ -41,6 +42,7 @@ public class PacketPartPlacement extends AppEngPacket
|
||||||
private int z;
|
private int z;
|
||||||
private int face;
|
private int face;
|
||||||
private float eyeHeight;
|
private float eyeHeight;
|
||||||
|
private EnumHand hand;
|
||||||
|
|
||||||
// automatic.
|
// automatic.
|
||||||
public PacketPartPlacement( final ByteBuf stream )
|
public PacketPartPlacement( final ByteBuf stream )
|
||||||
|
@ -50,10 +52,11 @@ public class PacketPartPlacement extends AppEngPacket
|
||||||
this.z = stream.readInt();
|
this.z = stream.readInt();
|
||||||
this.face = stream.readByte();
|
this.face = stream.readByte();
|
||||||
this.eyeHeight = stream.readFloat();
|
this.eyeHeight = stream.readFloat();
|
||||||
|
this.hand = EnumHand.values()[ stream.readByte() ];
|
||||||
}
|
}
|
||||||
|
|
||||||
// api
|
// api
|
||||||
public PacketPartPlacement( final BlockPos pos, final EnumFacing face, final float eyeHeight )
|
public PacketPartPlacement( final BlockPos pos, final EnumFacing face, final float eyeHeight, final EnumHand hand )
|
||||||
{
|
{
|
||||||
final ByteBuf data = Unpooled.buffer();
|
final ByteBuf data = Unpooled.buffer();
|
||||||
|
|
||||||
|
@ -63,6 +66,7 @@ public class PacketPartPlacement extends AppEngPacket
|
||||||
data.writeInt( pos.getZ() );
|
data.writeInt( pos.getZ() );
|
||||||
data.writeByte( face.ordinal() );
|
data.writeByte( face.ordinal() );
|
||||||
data.writeFloat( eyeHeight );
|
data.writeFloat( eyeHeight );
|
||||||
|
data.writeByte( hand.ordinal() );
|
||||||
|
|
||||||
this.configureWrite( data );
|
this.configureWrite( data );
|
||||||
}
|
}
|
||||||
|
@ -73,8 +77,7 @@ public class PacketPartPlacement extends AppEngPacket
|
||||||
final EntityPlayerMP sender = (EntityPlayerMP) player;
|
final EntityPlayerMP sender = (EntityPlayerMP) player;
|
||||||
CommonHelper.proxy.updateRenderMode( sender );
|
CommonHelper.proxy.updateRenderMode( sender );
|
||||||
PartPlacement.setEyeHeight( this.eyeHeight );
|
PartPlacement.setEyeHeight( this.eyeHeight );
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
PartPlacement.place( sender.getHeldItem( hand ), new BlockPos( this.x, this.y, this.z ), EnumFacing.VALUES[this.face], sender, hand, sender.worldObj, PartPlacement.PlaceType.INTERACT_FIRST_PASS, 0 );
|
||||||
PartPlacement.place( sender.getHeldItem(), new BlockPos( this.x, this.y, this.z ), EnumFacing.VALUES[this.face], sender, sender.worldObj, PartPlacement.PlaceType.INTERACT_FIRST_PASS, 0 );
|
|
||||||
CommonHelper.proxy.updateRenderMode( null );
|
CommonHelper.proxy.updateRenderMode( null );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,13 @@ import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
|
||||||
import appeng.api.config.FuzzyMode;
|
import appeng.api.config.FuzzyMode;
|
||||||
import appeng.api.config.Settings;
|
import appeng.api.config.Settings;
|
||||||
import appeng.api.util.IConfigManager;
|
import appeng.api.util.IConfigManager;
|
||||||
import appeng.api.util.IConfigurableObject;
|
import appeng.api.util.IConfigurableObject;
|
||||||
import appeng.client.gui.implementations.GuICraftingCPU;
|
import appeng.client.gui.implementations.GuiCraftingCPU;
|
||||||
import appeng.container.AEBaseContainer;
|
import appeng.container.AEBaseContainer;
|
||||||
import appeng.container.implementations.ContainerCellWorkbench;
|
import appeng.container.implementations.ContainerCellWorkbench;
|
||||||
import appeng.container.implementations.ContainerCraftConfirm;
|
import appeng.container.implementations.ContainerCraftConfirm;
|
||||||
|
@ -97,10 +98,23 @@ public class PacketValueConfig extends AppEngPacket
|
||||||
{
|
{
|
||||||
final Container c = player.openContainer;
|
final Container c = player.openContainer;
|
||||||
|
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
if( this.Name.equals( "Item" ) && ( ( player.getHeldItem( EnumHand.MAIN_HAND ) != null && player.getHeldItem(EnumHand.MAIN_HAND).getItem() instanceof IMouseWheelItem ) || ( player.getHeldItem( EnumHand.OFF_HAND ) != null && player.getHeldItem(EnumHand.OFF_HAND).getItem() instanceof IMouseWheelItem ) ) )
|
||||||
if( this.Name.equals( "Item" ) && player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IMouseWheelItem )
|
|
||||||
{
|
{
|
||||||
final ItemStack is = player.getHeldItem();
|
final EnumHand hand;
|
||||||
|
if( player.getHeldItem( EnumHand.MAIN_HAND ) != null && player.getHeldItem( EnumHand.MAIN_HAND ).getItem() instanceof IMouseWheelItem )
|
||||||
|
{
|
||||||
|
hand = EnumHand.MAIN_HAND;
|
||||||
|
}
|
||||||
|
else if( player.getHeldItem( EnumHand.OFF_HAND ) != null && player.getHeldItem( EnumHand.OFF_HAND ).getItem() instanceof IMouseWheelItem )
|
||||||
|
{
|
||||||
|
hand = EnumHand.OFF_HAND;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ItemStack is = player.getHeldItem( hand );
|
||||||
final IMouseWheelItem si = (IMouseWheelItem) is.getItem();
|
final IMouseWheelItem si = (IMouseWheelItem) is.getItem();
|
||||||
si.onWheel( is, this.Value.equals( "WheelUp" ) );
|
si.onWheel( is, this.Value.equals( "WheelUp" ) );
|
||||||
}
|
}
|
||||||
|
@ -250,9 +264,9 @@ public class PacketValueConfig extends AppEngPacket
|
||||||
else if( this.Name.equals( "CraftingStatus" ) && this.Value.equals( "Clear" ) )
|
else if( this.Name.equals( "CraftingStatus" ) && this.Value.equals( "Clear" ) )
|
||||||
{
|
{
|
||||||
final GuiScreen gs = Minecraft.getMinecraft().currentScreen;
|
final GuiScreen gs = Minecraft.getMinecraft().currentScreen;
|
||||||
if( gs instanceof GuICraftingCPU )
|
if( gs instanceof GuiCraftingCPU )
|
||||||
{
|
{
|
||||||
( (GuICraftingCPU) gs ).clearItems();
|
( (GuiCraftingCPU) gs ).clearItems();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( c instanceof IConfigurableObject )
|
else if( c instanceof IConfigurableObject )
|
||||||
|
|
|
@ -139,6 +139,7 @@ public class ToolReplicatorCard extends AEBaseItem
|
||||||
final BlockPos d = new BlockPos( i + rel_x, j + rel_y, k + rel_z );
|
final BlockPos d = new BlockPos( i + rel_x, j + rel_y, k + rel_z );
|
||||||
final IBlockState state = src_w.getBlockState( p );
|
final IBlockState state = src_w.getBlockState( p );
|
||||||
final Block blk = state.getBlock();
|
final Block blk = state.getBlock();
|
||||||
|
final IBlockState prev = world.getBlockState( d );
|
||||||
|
|
||||||
world.setBlockState( d, state );
|
world.setBlockState( d, state );
|
||||||
if( blk != null && blk.hasTileEntity( state ) )
|
if( blk != null && blk.hasTileEntity( state ) )
|
||||||
|
@ -150,8 +151,7 @@ public class ToolReplicatorCard extends AEBaseItem
|
||||||
nte.readFromNBT( (NBTTagCompound) data.copy() );
|
nte.readFromNBT( (NBTTagCompound) data.copy() );
|
||||||
world.setTileEntity( d, nte );
|
world.setTileEntity( d, nte );
|
||||||
}
|
}
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
world.notifyBlockUpdate( d, prev, state, 3 );
|
||||||
world.markBlockForUpdate( d );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import net.minecraft.world.World;
|
||||||
public final class EntityFloatingItem extends EntityItem
|
public final class EntityFloatingItem extends EntityItem
|
||||||
{
|
{
|
||||||
|
|
||||||
private final Entity parent;
|
private final ICanDie parent;
|
||||||
private int superDeath = 0;
|
private int superDeath = 0;
|
||||||
private float progress = 0;
|
private float progress = 0;
|
||||||
|
|
||||||
public EntityFloatingItem( final Entity parent, final World world, final double x, final double y, final double z, final ItemStack stack )
|
public EntityFloatingItem( final ICanDie parent, final World world, final double x, final double y, final double z, final ItemStack stack )
|
||||||
{
|
{
|
||||||
super( world, x, y, z, stack );
|
super( world, x, y, z, stack );
|
||||||
this.motionX = this.motionY = this.motionZ = 0.0d;
|
this.motionX = this.motionY = this.motionZ = 0.0d;
|
||||||
|
@ -46,7 +46,7 @@ public final class EntityFloatingItem extends EntityItem
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate()
|
public void onUpdate()
|
||||||
{
|
{
|
||||||
if( !this.isDead && this.parent.isDead )
|
if( !this.isDead && this.parent.isDead() )
|
||||||
{
|
{
|
||||||
this.setDead();
|
this.setDead();
|
||||||
}
|
}
|
||||||
|
|
8
src/main/java/appeng/entity/ICanDie.java
Normal file
8
src/main/java/appeng/entity/ICanDie.java
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package appeng.entity;
|
||||||
|
|
||||||
|
public interface ICanDie
|
||||||
|
{
|
||||||
|
|
||||||
|
public boolean isDead();
|
||||||
|
|
||||||
|
}
|
|
@ -65,7 +65,7 @@ public final class DispenserMatterCannon extends BehaviorDefaultDispenseItem
|
||||||
p.posY += dir.yOffset;
|
p.posY += dir.yOffset;
|
||||||
p.posZ += dir.zOffset;
|
p.posZ += dir.zOffset;
|
||||||
|
|
||||||
dispensedItem = tm.onItemRightClick( dispensedItem, w, p );
|
dispensedItem = tm.onItemRightClick( dispensedItem, w, p, null ).getResult();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dispensedItem;
|
return dispensedItem;
|
||||||
|
|
|
@ -22,12 +22,17 @@ package appeng.items.misc;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.ItemMeshDefinition;
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
import net.minecraft.client.renderer.color.IItemColor;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@ -36,6 +41,7 @@ import appeng.client.ClientHelper;
|
||||||
import appeng.core.features.AEFeature;
|
import appeng.core.features.AEFeature;
|
||||||
import appeng.core.localization.GuiText;
|
import appeng.core.localization.GuiText;
|
||||||
import appeng.items.AEBaseItem;
|
import appeng.items.AEBaseItem;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
|
||||||
|
|
||||||
public class ItemPaintBall extends AEBaseItem
|
public class ItemPaintBall extends AEBaseItem
|
||||||
|
@ -47,6 +53,11 @@ public class ItemPaintBall extends AEBaseItem
|
||||||
{
|
{
|
||||||
this.setFeature( EnumSet.of( AEFeature.PaintBalls ) );
|
this.setFeature( EnumSet.of( AEFeature.PaintBalls ) );
|
||||||
this.setHasSubtypes( true );
|
this.setHasSubtypes( true );
|
||||||
|
|
||||||
|
if( Platform.isClient() )
|
||||||
|
{
|
||||||
|
Minecraft.getMinecraft().getItemColors().registerItemColorHandler( new ItemPaintBallColor(), this );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -82,29 +93,6 @@ public class ItemPaintBall extends AEBaseItem
|
||||||
return ( is.getItemDamage() >= DAMAGE_THRESHOLD ? GuiText.Lumen.getLocal() + ' ' : "" ) + this.getColor( is );
|
return ( is.getItemDamage() >= DAMAGE_THRESHOLD ? GuiText.Lumen.getLocal() + ' ' : "" ) + this.getColor( is );
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - Move to IItemColor
|
|
||||||
@Override
|
|
||||||
public int getColorFromItemStack( final ItemStack stack, final int renderPass )
|
|
||||||
{
|
|
||||||
final AEColor col = this.getColor( stack );
|
|
||||||
|
|
||||||
final int colorValue = stack.getItemDamage() >= 20 ? col.mediumVariant : col.mediumVariant;
|
|
||||||
final int r = ( colorValue >> 16 ) & 0xff;
|
|
||||||
final int g = ( colorValue >> 8 ) & 0xff;
|
|
||||||
final int b = ( colorValue ) & 0xff;
|
|
||||||
|
|
||||||
if( stack.getItemDamage() >= 20 )
|
|
||||||
{
|
|
||||||
final float fail = 0.7f;
|
|
||||||
final int full = (int) ( 255 * 0.3 );
|
|
||||||
return (int) ( full + r * fail ) << 16 | (int) ( full + g * fail ) << 8 | (int) ( full + b * fail ) | 0xff << 24;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return r << 16 | g << 8 | b | 0xff << 24;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public AEColor getColor( final ItemStack is )
|
public AEColor getColor( final ItemStack is )
|
||||||
{
|
{
|
||||||
int dmg = is.getItemDamage();
|
int dmg = is.getItemDamage();
|
||||||
|
@ -146,4 +134,32 @@ public class ItemPaintBall extends AEBaseItem
|
||||||
final int dmg = is.getItemDamage();
|
final int dmg = is.getItemDamage();
|
||||||
return dmg >= DAMAGE_THRESHOLD;
|
return dmg >= DAMAGE_THRESHOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SideOnly( Side.CLIENT )
|
||||||
|
public class ItemPaintBallColor implements IItemColor
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColorFromItemstack( ItemStack stack, int tintIndex )
|
||||||
|
{
|
||||||
|
final AEColor col = getColor( stack );
|
||||||
|
|
||||||
|
final int colorValue = stack.getItemDamage() >= 20 ? col.mediumVariant : col.mediumVariant;
|
||||||
|
final int r = ( colorValue >> 16 ) & 0xff;
|
||||||
|
final int g = ( colorValue >> 8 ) & 0xff;
|
||||||
|
final int b = ( colorValue ) & 0xff;
|
||||||
|
|
||||||
|
if( stack.getItemDamage() >= 20 )
|
||||||
|
{
|
||||||
|
final float fail = 0.7f;
|
||||||
|
final int full = (int) ( 255 * 0.3 );
|
||||||
|
return (int) ( full + r * fail ) << 16 | (int) ( full + g * fail ) << 8 | (int) ( full + b * fail ) | 0xff << 24;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return r << 16 | g << 8 | b | 0xff << 24;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte
|
||||||
@Override
|
@Override
|
||||||
public EnumActionResult onItemUseFirst( final ItemStack is, final EntityPlayer player, final World world, final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ, final EnumHand hand )
|
public EnumActionResult onItemUseFirst( final ItemStack is, final EntityPlayer player, final World world, final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ, final EnumHand hand )
|
||||||
{
|
{
|
||||||
return AEApi.instance().partHelper().placeBus( is, pos, side, player, world ) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
|
return AEApi.instance().partHelper().placeBus( is, pos, side, player, hand, world ) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -169,10 +169,9 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte
|
||||||
ds[0] = Item.getIdFromItem( l.getItem() );
|
ds[0] = Item.getIdFromItem( l.getItem() );
|
||||||
ds[1] = metadata;
|
ds[1] = metadata;
|
||||||
data.setIntArray( "x", ds );
|
data.setIntArray( "x", ds );
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ResourceLocation ???
|
final ResourceLocation ui = Item.REGISTRY.getNameForObject( l.getItem() );
|
||||||
final UniqueIdentifier ui = GameRegistry.findUniqueIdentifierFor( l.getItem() );
|
data.setString( "modid", ui.getResourceDomain() );
|
||||||
data.setString( "modid", ui.modId );
|
data.setString( "itemname", ui.getResourcePath() );
|
||||||
data.setString( "itemname", ui.name );
|
|
||||||
is.setTagCompound( data );
|
is.setTagCompound( data );
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,7 +186,7 @@ public final class ItemMultiPart extends AEBaseItem implements IPartItem, IItemG
|
||||||
return EnumActionResult.PASS;
|
return EnumActionResult.PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return AEApi.instance().partHelper().placeBus( is, pos, side, player, w ) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
|
return AEApi.instance().partHelper().placeBus( is, pos, side, player, hand, w ) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -124,7 +124,7 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench /
|
||||||
|
|
||||||
if( Platform.isClient() )
|
if( Platform.isClient() )
|
||||||
{
|
{
|
||||||
NetworkHandler.instance.sendToServer( new PacketClick( pos, side, hitX, hitY, hitZ ) );
|
NetworkHandler.instance.sendToServer( new PacketClick( pos, side, hitX, hitY, hitZ, hand ) );
|
||||||
}
|
}
|
||||||
return EnumActionResult.SUCCESS;
|
return EnumActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -135,12 +135,10 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench /
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean serverSideToolLogic( final ItemStack is, final EntityPlayer p, final World w, final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
public boolean serverSideToolLogic( final ItemStack is, final EntityPlayer p, final EnumHand hand, final World w, final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
||||||
{
|
{
|
||||||
if( side != null )
|
if( side != null )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
|
||||||
final EnumHand hand = EnumHand.MAIN_HAND;
|
|
||||||
if( !Platform.hasPermissions( new DimensionalCoord( w, pos ), p ) )
|
if( !Platform.hasPermissions( new DimensionalCoord( w, pos ), p ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -226,8 +226,7 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final EnumHand hand )
|
public ActionResult<ItemStack> onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final EnumHand hand )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - getRayTraceResultFromPlayer => ?
|
final RayTraceResult target = this.rayTrace( w, p, true );
|
||||||
final RayTraceResult target = this.getRayTraceResultFromPlayer( w, p, true );
|
|
||||||
|
|
||||||
if( target == null )
|
if( target == null )
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,8 @@ package appeng.items.tools.powered;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.google.common.base.Optional;
|
import com.google.common.base.Optional;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -117,7 +119,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final EnumHand hand )
|
public ActionResult<ItemStack> onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final @Nullable EnumHand hand )
|
||||||
{
|
{
|
||||||
if( this.getAECurrentPower( item ) > 1600 )
|
if( this.getAECurrentPower( item ) > 1600 )
|
||||||
{
|
{
|
||||||
|
|
36
src/main/java/appeng/loot/ChestLoot.java
Normal file
36
src/main/java/appeng/loot/ChestLoot.java
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
package appeng.loot;
|
||||||
|
|
||||||
|
import com.google.common.collect.FluentIterable;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.storage.loot.LootEntry;
|
||||||
|
import net.minecraft.world.storage.loot.LootEntryItem;
|
||||||
|
import net.minecraft.world.storage.loot.LootPool;
|
||||||
|
import net.minecraft.world.storage.loot.LootTableList;
|
||||||
|
import net.minecraft.world.storage.loot.RandomValueRange;
|
||||||
|
import net.minecraft.world.storage.loot.conditions.LootCondition;
|
||||||
|
import net.minecraft.world.storage.loot.conditions.RandomChance;
|
||||||
|
import net.minecraft.world.storage.loot.functions.LootFunction;
|
||||||
|
import net.minecraft.world.storage.loot.functions.SetMetadata;
|
||||||
|
import net.minecraftforge.event.LootTableLoadEvent;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
|
||||||
|
import appeng.api.AEApi;
|
||||||
|
import appeng.api.definitions.IMaterials;
|
||||||
|
|
||||||
|
public class ChestLoot
|
||||||
|
{
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void loadLootTable( LootTableLoadEvent event ){
|
||||||
|
if( event.getName() == LootTableList.CHESTS_ABANDONED_MINESHAFT )
|
||||||
|
{
|
||||||
|
//TODO 1.9.4 aftermath - All these loot quality, pools and stuff. Figure it out and balance it.
|
||||||
|
final IMaterials materials = AEApi.instance().definitions().materials();
|
||||||
|
event.getTable().addPool( new LootPool( ( ( FluentIterable<LootEntryItem> ) Iterables.transform( materials.certusQuartzCrystal().maybeStack( 1 ).asSet(), ( ItemStack itemstack ) -> new LootEntryItem( itemstack.getItem(), 2, 3, new LootFunction[]{ new SetMetadata(null, new RandomValueRange( itemstack.getItemDamage() ))}, new LootCondition[]{ new RandomChance( 1 ) }, "AE2 Crystal_" + itemstack.getItemDamage() ) ) ).toArray( LootEntryItem.class ), null, new RandomValueRange( 1, 4 ), new RandomValueRange( 0, 2 ), "AE2 Crystals" ) );
|
||||||
|
event.getTable().addPool( new LootPool( ( ( FluentIterable<LootEntryItem> ) Iterables.transform( materials.certusQuartzDust().maybeStack( 1 ).asSet(), ( ItemStack itemstack ) -> new LootEntryItem( itemstack.getItem(), 2, 3, new LootFunction[]{ new SetMetadata(null, new RandomValueRange( itemstack.getItemDamage() ))}, new LootCondition[]{ new RandomChance( 1 ) }, "AE2 Dust_" + itemstack.getItemDamage() ) ) ).toArray( LootEntryItem.class ), null, new RandomValueRange( 1, 4 ), new RandomValueRange( 0, 2 ), "AE2 Dusts" ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,6 +39,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -493,39 +494,39 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onActivate( final EntityPlayer player, final Vec3d pos )
|
public final boolean onActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( this.useMemoryCard( player ) )
|
if( this.useMemoryCard( player ) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.onPartActivate( player, pos );
|
return this.onPartActivate( player, hand, pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onShiftActivate( final EntityPlayer player, final Vec3d pos )
|
public final boolean onShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( this.useMemoryCard( player ) )
|
if( this.useMemoryCard( player ) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.onPartShiftActivate( player, pos );
|
return this.onPartShiftActivate( player, hand, pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onPartShiftActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
this.proxy.setOwner( player );
|
this.proxy.setOwner( player );
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@ import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
@ -36,6 +38,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
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;
|
||||||
|
@ -178,7 +181,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AEPartLocation addPart( ItemStack is, final AEPartLocation side, final EntityPlayer player )
|
public AEPartLocation addPart( ItemStack is, final AEPartLocation side, final @Nullable EntityPlayer player, final @Nullable EnumHand hand )
|
||||||
{
|
{
|
||||||
if( this.canAddPart( is, side ) )
|
if( this.canAddPart( is, side ) )
|
||||||
{
|
{
|
||||||
|
@ -216,7 +219,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
|
|
||||||
if( player != null )
|
if( player != null )
|
||||||
{
|
{
|
||||||
bp.onPlacement( player, is, side );
|
bp.onPlacement( player, hand, is, side );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( this.inWorld )
|
if( this.inWorld )
|
||||||
|
@ -271,7 +274,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
|
|
||||||
if( player != null )
|
if( player != null )
|
||||||
{
|
{
|
||||||
bp.onPlacement( player, is, side );
|
bp.onPlacement( player, hand, is, side );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( this.inWorld )
|
if( this.inWorld )
|
||||||
|
@ -802,12 +805,12 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean activate( final EntityPlayer player, final Vec3d pos )
|
public boolean activate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
final SelectedPart p = this.selectPart( pos );
|
final SelectedPart p = this.selectPart( pos );
|
||||||
if( p != null && p.part != null )
|
if( p != null && p.part != null )
|
||||||
{
|
{
|
||||||
return p.part.onActivate( player, pos );
|
return p.part.onActivate( player, hand, pos );
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -972,7 +975,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.removePart( side, false );
|
this.removePart( side, false );
|
||||||
side = this.addPart( new ItemStack( myItem, 1, dmgValue ), side, null );
|
side = this.addPart( new ItemStack( myItem, 1, dmgValue ), side, null, null );
|
||||||
if( side != null )
|
if( side != null )
|
||||||
{
|
{
|
||||||
p = this.getPart( side );
|
p = this.getPart( side );
|
||||||
|
@ -1073,7 +1076,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.removePart( side, true );
|
this.removePart( side, true );
|
||||||
side = this.addPart( iss, side, null );
|
side = this.addPart( iss, side, null, null );
|
||||||
if( side != null )
|
if( side != null )
|
||||||
{
|
{
|
||||||
p = this.getPart( side );
|
p = this.getPart( side );
|
||||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -47,7 +48,7 @@ public interface ICableBusContainer
|
||||||
|
|
||||||
void onEntityCollision( Entity e );
|
void onEntityCollision( Entity e );
|
||||||
|
|
||||||
boolean activate( EntityPlayer player, Vec3d vecFromPool );
|
boolean activate( EntityPlayer player, EnumHand hand, Vec3d vecFromPool );
|
||||||
|
|
||||||
void onNeighborChanged();
|
void onNeighborChanged();
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -62,7 +63,7 @@ public class NullCableBusContainer implements ICableBusContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean activate( final EntityPlayer player, final Vec3d vecFromPool )
|
public boolean activate( final EntityPlayer player, final EnumHand hand, final Vec3d vecFromPool )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,10 +75,8 @@ public class PartPlacement
|
||||||
private final ThreadLocal<Object> placing = new ThreadLocal<Object>();
|
private final ThreadLocal<Object> placing = new ThreadLocal<Object>();
|
||||||
private boolean wasCanceled = false;
|
private boolean wasCanceled = false;
|
||||||
|
|
||||||
public static boolean place( final ItemStack held, final BlockPos pos, EnumFacing side, final EntityPlayer player, final World world, PlaceType pass, final int depth )
|
public static boolean place( final ItemStack held, final BlockPos pos, EnumFacing side, final EntityPlayer player, final EnumHand hand, final World world, PlaceType pass, final int depth )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
|
||||||
final EnumHand hand = EnumHand.MAIN_HAND;
|
|
||||||
if( depth > 3 )
|
if( depth > 3 )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -140,7 +138,7 @@ public class PartPlacement
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.swingArm( hand );
|
player.swingArm( hand );
|
||||||
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) );
|
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -191,7 +189,7 @@ public class PartPlacement
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.swingArm( hand );
|
player.swingArm( hand );
|
||||||
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) );
|
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,11 +227,11 @@ public class PartPlacement
|
||||||
final SelectedPart sPart = selectPart( player, host, mop.hitVec );
|
final SelectedPart sPart = selectPart( player, host, mop.hitVec );
|
||||||
if( sPart != null && sPart.part != null )
|
if( sPart != null && sPart.part != null )
|
||||||
{
|
{
|
||||||
if( sPart.part.onShiftActivate( player, mop.hitVec ) )
|
if( sPart.part.onShiftActivate( player, hand, mop.hitVec ) )
|
||||||
{
|
{
|
||||||
if( world.isRemote )
|
if( world.isRemote )
|
||||||
{
|
{
|
||||||
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) );
|
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +311,7 @@ public class PartPlacement
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.swingArm( hand );
|
player.swingArm( hand );
|
||||||
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) );
|
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,7 +344,7 @@ public class PartPlacement
|
||||||
// AEPartLocation.INTERNAL
|
// AEPartLocation.INTERNAL
|
||||||
// )
|
// )
|
||||||
{
|
{
|
||||||
return place( held, te_pos, side.getOpposite(), player, world, pass == PlaceType.INTERACT_FIRST_PASS ? PlaceType.INTERACT_SECOND_PASS : PlaceType.PLACE_ITEM, depth + 1 );
|
return place( held, te_pos, side.getOpposite(), player, hand, world, pass == PlaceType.INTERACT_FIRST_PASS ? PlaceType.INTERACT_SECOND_PASS : PlaceType.PLACE_ITEM, depth + 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -364,7 +362,7 @@ public class PartPlacement
|
||||||
|
|
||||||
if( sp.part != null )
|
if( sp.part != null )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() && sp.part.onActivate( player, mop.hitVec ) )
|
if( !player.isSneaking() && sp.part.onActivate( player, hand, mop.hitVec ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -377,7 +375,7 @@ public class PartPlacement
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player );
|
final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player, hand );
|
||||||
if( mySide != null )
|
if( mySide != null )
|
||||||
{
|
{
|
||||||
for( final Block multiPartBlock : multiPart.maybeBlock().asSet() )
|
for( final Block multiPartBlock : multiPart.maybeBlock().asSet() )
|
||||||
|
@ -401,7 +399,7 @@ public class PartPlacement
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.swingArm( hand );
|
player.swingArm( hand );
|
||||||
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) );
|
NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -482,7 +480,7 @@ public class PartPlacement
|
||||||
|
|
||||||
if( event.getEntityPlayer().isSneaking() && held != null && supportedItem )
|
if( event.getEntityPlayer().isSneaking() && held != null && supportedItem )
|
||||||
{
|
{
|
||||||
NetworkHandler.instance.sendToServer( new PacketClick( event.getPos(), event.getFace(), 0, 0, 0 ) );
|
NetworkHandler.instance.sendToServer( new PacketClick( event.getPos(), event.getFace(), 0, 0, 0, event.getHand() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -496,7 +494,7 @@ public class PartPlacement
|
||||||
this.placing.set( event );
|
this.placing.set( event );
|
||||||
|
|
||||||
final ItemStack held = event.getEntityPlayer().getHeldItem( event.getHand() );
|
final ItemStack held = event.getEntityPlayer().getHeldItem( event.getHand() );
|
||||||
if( place( held, event.getPos(), event.getFace(), event.getEntityPlayer(), event.getEntityPlayer().worldObj, PlaceType.INTERACT_FIRST_PASS, 0 ) )
|
if( place( held, event.getPos(), event.getFace(), event.getEntityPlayer(), event.getHand(), event.getEntityPlayer().worldObj, PlaceType.INTERACT_FIRST_PASS, 0 ) )
|
||||||
{
|
{
|
||||||
event.setCanceled( true );
|
event.setCanceled( true );
|
||||||
this.wasCanceled = true;
|
this.wasCanceled = true;
|
||||||
|
|
|
@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableSet;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
@ -234,7 +235,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -349,7 +349,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
@ -410,9 +410,6 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
|
||||||
@Override
|
@Override
|
||||||
public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final BaseActionSource src )
|
public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final BaseActionSource src )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
|
||||||
final EnumHand hand = EnumHand.MAIN_HAND;
|
|
||||||
|
|
||||||
if( this.blocked || input == null || input.getStackSize() <= 0 )
|
if( this.blocked || input == null || input.getStackSize() <= 0 )
|
||||||
{
|
{
|
||||||
return input;
|
return input;
|
||||||
|
@ -466,29 +463,29 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
|
||||||
|
|
||||||
if( side.xOffset == 0 && side.zOffset == 0 )
|
if( side.xOffset == 0 && side.zOffset == 0 )
|
||||||
{
|
{
|
||||||
Worked = i.onItemUse( is, player, w, tePos.offset( side.getFacing() ), hand, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
Worked = i.onItemUse( is, player, w, tePos.offset( side.getFacing() ), null, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !Worked && side.xOffset == 0 && side.zOffset == 0 )
|
if( !Worked && side.xOffset == 0 && side.zOffset == 0 )
|
||||||
{
|
{
|
||||||
Worked = i.onItemUse( is, player, w, tePos.offset( side.getFacing().getOpposite() ), hand, side.getFacing(), side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
Worked = i.onItemUse( is, player, w, tePos.offset( side.getFacing().getOpposite() ), null, side.getFacing(), side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !Worked && side.yOffset == 0 )
|
if( !Worked && side.yOffset == 0 )
|
||||||
{
|
{
|
||||||
Worked = i.onItemUse( is, player, w, tePos.offset( EnumFacing.DOWN ), hand, EnumFacing.UP, side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
Worked = i.onItemUse( is, player, w, tePos.offset( EnumFacing.DOWN ), null, EnumFacing.UP, side.xOffset, side.yOffset, side.zOffset ) == EnumActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !Worked )
|
if( !Worked )
|
||||||
{
|
{
|
||||||
i.onItemUse( is, player, w, tePos, hand, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset );
|
i.onItemUse( is, player, w, tePos, null, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
maxStorage -= is.stackSize;
|
maxStorage -= is.stackSize;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
i.onItemUse( is, player, w, tePos, hand, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset );
|
i.onItemUse( is, player, w, tePos, null, side.getFacing().getOpposite(), side.xOffset, side.yOffset, side.zOffset );
|
||||||
maxStorage -= is.stackSize;
|
maxStorage -= is.stackSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ package appeng.parts.automation;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
@ -144,7 +145,7 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,7 @@ package appeng.parts.automation;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.BlockModelRenderer;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -30,6 +31,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.EnumParticleTypes;
|
import net.minecraft.util.EnumParticleTypes;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
@ -595,8 +597,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
|
||||||
|
|
||||||
renderer.setRenderAllFaces( true );
|
renderer.setRenderAllFaces( true );
|
||||||
|
|
||||||
//TODO 1.9.4 - getMixedBrightnessForBlock => ?
|
renderer.setBrightness( rh.getBlock().getPackedLightmapCoords( this.getHost().getTile().getWorld().getBlockState( pos ), this.getHost().getTile().getWorld(), pos ) );
|
||||||
renderer.setBrightness( rh.getBlock().getMixedBrightnessForBlock( this.getHost().getTile().getWorld(), pos ) );
|
|
||||||
renderer.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
|
renderer.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
|
||||||
|
|
||||||
this.renderTorchAtAngle( pos.getX(), pos.getY(), pos.getZ(), renderer );
|
this.renderTorchAtAngle( pos.getX(), pos.getY(), pos.getZ(), renderer );
|
||||||
|
@ -643,7 +644,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -232,13 +233,13 @@ public class PartCableAnchor implements IPart
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onShiftActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -262,7 +263,7 @@ public class PartCableAnchor implements IPart
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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;
|
||||||
|
@ -200,7 +201,7 @@ public class PartInterface extends PartBasicState implements IGridTickable, ISto
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer p, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer p, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( p.isSneaking() )
|
if( p.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
@ -317,7 +318,7 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
@ -226,9 +227,9 @@ public class PartToggleBus extends PartBasicState
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
super.onPlacement( player, held, side );
|
super.onPlacement( player, hand, held, side );
|
||||||
this.getOuterProxy().setOwner( player );
|
this.getOuterProxy().setOwner( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ public class PartCable extends AEBasePart implements IPartCable
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getHost().removePart( AEPartLocation.INTERNAL, true );
|
this.getHost().removePart( AEPartLocation.INTERNAL, true );
|
||||||
this.getHost().addPart( newPart, AEPartLocation.INTERNAL, who );
|
this.getHost().addPart( newPart, AEPartLocation.INTERNAL, who, null );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
@ -146,9 +147,9 @@ public class PartQuartzFiber extends AEBasePart implements IEnergyGridProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
super.onPlacement( player, held, side );
|
super.onPlacement( player, hand, held, side );
|
||||||
this.outerProxy.setOwner( player );
|
this.outerProxy.setOwner( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
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.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
@ -227,7 +228,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
final ItemStack is = player.inventory.getCurrentItem();
|
final ItemStack is = player.inventory.getCurrentItem();
|
||||||
|
|
||||||
|
@ -251,7 +252,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
|
||||||
if( testPart instanceof PartP2PTunnel )
|
if( testPart instanceof PartP2PTunnel )
|
||||||
{
|
{
|
||||||
this.getHost().removePart( this.getSide(), true );
|
this.getHost().removePart( this.getSide(), true );
|
||||||
final AEPartLocation dir = this.getHost().addPart( newType, this.getSide(), player );
|
final AEPartLocation dir = this.getHost().addPart( newType, this.getSide(), player, hand );
|
||||||
final IPart newBus = this.getHost().getPart( dir );
|
final IPart newBus = this.getHost().getPart( dir );
|
||||||
|
|
||||||
if( newBus instanceof PartP2PTunnel )
|
if( newBus instanceof PartP2PTunnel )
|
||||||
|
@ -365,7 +366,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
|
||||||
final long myFreq = this.getFrequency();
|
final long myFreq = this.getFrequency();
|
||||||
|
|
||||||
this.getHost().removePart( this.getSide(), false );
|
this.getHost().removePart( this.getSide(), false );
|
||||||
final AEPartLocation dir = this.getHost().addPart( newType, this.getSide(), player );
|
final AEPartLocation dir = this.getHost().addPart( newType, this.getSide(), player, hand );
|
||||||
final IPart newBus = this.getHost().getPart( dir );
|
final IPart newBus = this.getHost().getPart( dir );
|
||||||
|
|
||||||
if( newBus instanceof PartP2PTunnel )
|
if( newBus instanceof PartP2PTunnel )
|
||||||
|
@ -394,7 +395,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartShiftActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
final ItemStack is = player.inventory.getCurrentItem();
|
final ItemStack is = player.inventory.getCurrentItem();
|
||||||
if( is != null && is.getItem() instanceof IMemoryCard )
|
if( is != null && is.getItem() instanceof IMemoryCard )
|
||||||
|
|
|
@ -27,6 +27,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.exceptions.FailedConnection;
|
import appeng.api.exceptions.FailedConnection;
|
||||||
|
@ -125,9 +126,9 @@ public class PartP2PTunnelME extends PartP2PTunnel<PartP2PTunnelME> implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
super.onPlacement( player, held, side );
|
super.onPlacement( player, hand, held, side );
|
||||||
this.outerProxy.setOwner( player );
|
this.outerProxy.setOwner( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,11 +160,8 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
|
||||||
final EnumHand hand = EnumHand.MAIN_HAND;
|
|
||||||
|
|
||||||
if( Platform.isClient() )
|
if( Platform.isClient() )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -27,6 +27,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
@ -189,7 +190,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
final TileEntity te = this.getTile();
|
final TileEntity te = this.getTile();
|
||||||
|
|
||||||
|
@ -225,14 +226,14 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return super.onPartActivate( player, pos );
|
return super.onPartActivate( player, hand, pos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void onPlacement( final EntityPlayer player, final ItemStack held, final AEPartLocation side )
|
public final void onPlacement( final EntityPlayer player, final EnumHand hand, final ItemStack held, final AEPartLocation side )
|
||||||
{
|
{
|
||||||
super.onPlacement( player, held, side );
|
super.onPlacement( player, hand, held, side );
|
||||||
|
|
||||||
final byte rotation = (byte) ( MathHelper.floor_double( ( player.rotationYaw * 4F ) / 360F + 2.5D ) & 3 );
|
final byte rotation = (byte) ( MathHelper.floor_double( ( player.rotationYaw * 4F ) / 360F + 2.5D ) & 3 );
|
||||||
if( side == AEPartLocation.UP )
|
if( side == AEPartLocation.UP )
|
||||||
|
|
|
@ -25,6 +25,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
import appeng.api.config.Settings;
|
import appeng.api.config.Settings;
|
||||||
|
@ -110,9 +111,9 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !super.onPartActivate( player, pos ) )
|
if( !super.onPartActivate( player, hand, pos ) )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,11 +55,8 @@ public class PartConversionMonitor extends AbstractPartMonitor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartShiftActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - 2 hands! Just do something!
|
|
||||||
final EnumHand hand = EnumHand.MAIN_HAND;
|
|
||||||
|
|
||||||
if( Platform.isClient() )
|
if( Platform.isClient() )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -21,6 +21,7 @@ package appeng.parts.reporting;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
import appeng.client.texture.CableBusTextures;
|
import appeng.client.texture.CableBusTextures;
|
||||||
|
@ -40,9 +41,9 @@ public class PartInterfaceTerminal extends AbstractPartDisplay
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPartActivate( final EntityPlayer player, final Vec3d pos )
|
public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos )
|
||||||
{
|
{
|
||||||
if( !super.onPartActivate( player, pos ) )
|
if( !super.onPartActivate( player, hand, pos ) )
|
||||||
{
|
{
|
||||||
if( !player.isSneaking() )
|
if( !player.isSneaking() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,8 +40,8 @@ import com.google.common.collect.HashMultimap;
|
||||||
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.fml.common.LoaderState;
|
import net.minecraftforge.fml.common.LoaderState;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.definitions.IBlocks;
|
import appeng.api.definitions.IBlocks;
|
||||||
|
@ -118,11 +118,10 @@ public class RecipeHandler implements IRecipeHandler
|
||||||
{
|
{
|
||||||
Preconditions.checkNotNull( is );
|
Preconditions.checkNotNull( is );
|
||||||
|
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ResourceLocation
|
final ResourceLocation id = Item.REGISTRY.getNameForObject( is.getItem() );
|
||||||
final UniqueIdentifier id = GameRegistry.findUniqueIdentifierFor( is.getItem() );
|
String realName = id.toString();
|
||||||
String realName = id.modId + ':' + id.name;
|
|
||||||
|
|
||||||
if( !id.modId.equals( AppEng.MOD_ID ) && !id.modId.equals( "minecraft" ) )
|
if( !id.getResourceDomain().equals( AppEng.MOD_ID ) && !id.getResourceDomain().equals( "minecraft" ) )
|
||||||
{
|
{
|
||||||
throw new RecipeError( "Not applicable for website" );
|
throw new RecipeError( "Not applicable for website" );
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,8 +312,7 @@ public class CachedPlane
|
||||||
if( c.c.isLoaded() )
|
if( c.c.isLoaded() )
|
||||||
{
|
{
|
||||||
this.world.addTileEntity( te );
|
this.world.addTileEntity( te );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
this.world.notifyBlockUpdate( pos, this.world.getBlockState( pos ), this.world.getBlockState( pos ), z );
|
||||||
this.world.markBlockForUpdate( pos );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,8 +55,7 @@ public class DefaultSpatialHandler implements IMovableHandler
|
||||||
if( c.isLoaded() )
|
if( c.isLoaded() )
|
||||||
{
|
{
|
||||||
w.addTileEntity( te );
|
w.addTileEntity( te );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
w.notifyBlockUpdate( newPosition, w.getBlockState( newPosition ), w.getBlockState( newPosition ), 0 );
|
||||||
w.markBlockForUpdate( newPosition );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
package appeng.spatial;
|
package appeng.spatial;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -54,6 +55,7 @@ public class StorageHelper
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO 1.9.4 aftermath - Check that this still works.
|
||||||
/**
|
/**
|
||||||
* Mostly from dimensional doors.. which mostly got it form X-Comp.
|
* Mostly from dimensional doors.. which mostly got it form X-Comp.
|
||||||
*
|
*
|
||||||
|
@ -87,28 +89,30 @@ public class StorageHelper
|
||||||
{
|
{
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - Multiple passangers & cell transfers. Take a look at portals.
|
|
||||||
|
|
||||||
// Is something riding? Handle it first.
|
// Are we riding something? Teleport it instead.
|
||||||
if( entity.isBeingRidden() )
|
if( entity.isRiding() )
|
||||||
{
|
{
|
||||||
return this.teleportEntity( entity.riddenByEntity, link );
|
return this.teleportEntity( entity.getRidingEntity(), link );
|
||||||
}
|
}
|
||||||
// Are we riding something? Dismount and tell the mount to go first.
|
|
||||||
Entity cart = entity.getRidingEntity();
|
// Is something riding us? Handle it first.
|
||||||
if( cart != null )
|
final List<Entity> passangers = entity.getPassengers();
|
||||||
|
final List<Entity> passangersOnOtherSide = new ArrayList<>();
|
||||||
|
if( !passangers.isEmpty() )
|
||||||
{
|
{
|
||||||
entity.dismountRidingEntity();
|
for( Entity passanger : passangers )
|
||||||
cart = this.teleportEntity( cart, link );
|
{
|
||||||
// We keep track of both so we can remount them on the other side.
|
passanger.dismountRidingEntity();
|
||||||
|
passangersOnOtherSide.add( teleportEntity( passanger, link ) );
|
||||||
|
}
|
||||||
|
// We keep track of all so we can remount them on the other side.
|
||||||
}
|
}
|
||||||
|
|
||||||
// load the chunk!
|
// load the chunk!
|
||||||
WorldServer.class.cast( newWorld ).getChunkProvider().provideChunk( MathHelper.floor_double( link.x ) >> 4, MathHelper.floor_double( link.z ) >> 4 );
|
newWorld.getChunkProvider().provideChunk( MathHelper.floor_double( link.x ) >> 4, MathHelper.floor_double( link.z ) >> 4 );
|
||||||
|
|
||||||
final boolean diffDestination = newWorld != oldWorld;
|
if( newWorld != oldWorld )
|
||||||
if( diffDestination )
|
|
||||||
{
|
{
|
||||||
if( player != null )
|
if( player != null )
|
||||||
{
|
{
|
||||||
|
@ -121,58 +125,21 @@ public class StorageHelper
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//TODO 1.9.4 - Whole entity transfer part, we now have changeDimension method. Evaluate it and remove this s...
|
entity.changeDimension( newWorld.provider.getDimension() );
|
||||||
final int entX = entity.chunkCoordX;
|
|
||||||
final int entZ = entity.chunkCoordZ;
|
|
||||||
|
|
||||||
if( ( entity.addedToChunk ) && ( oldWorld.getChunkProvider().chunkExists( entX, entZ ) ) )
|
|
||||||
{
|
|
||||||
oldWorld.getChunkFromChunkCoords( entX, entZ ).removeEntity( entity );
|
|
||||||
oldWorld.getChunkFromChunkCoords( entX, entZ ).setModified( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
final Entity newEntity = EntityList.createEntityByName( EntityList.getEntityString( entity ), newWorld );
|
|
||||||
if( newEntity != null )
|
|
||||||
{
|
|
||||||
entity.lastTickPosX = entity.prevPosX = entity.posX = link.x;
|
|
||||||
entity.lastTickPosY = entity.prevPosY = entity.posY = link.y;
|
|
||||||
entity.lastTickPosZ = entity.prevPosZ = entity.posZ = link.z;
|
|
||||||
|
|
||||||
if( entity instanceof EntityHanging )
|
|
||||||
{
|
|
||||||
final EntityHanging h = (EntityHanging) entity;
|
|
||||||
h.setPosition( link.x, link.y, link.z ); // TODO: VERIFIY THIS WORKS
|
|
||||||
}
|
|
||||||
|
|
||||||
newEntity.copyDataFromOld( entity );
|
|
||||||
newEntity.dimension = newWorld.provider.getDimension();
|
|
||||||
newEntity.forceSpawn = true;
|
|
||||||
|
|
||||||
entity.isDead = true;
|
|
||||||
entity = newEntity;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// myChunk.addEntity( entity );
|
|
||||||
// newWorld.loadedEntityList.add( entity );
|
|
||||||
// newWorld.onEntityAdded( entity );
|
|
||||||
newWorld.spawnEntityInWorld( entity );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.worldObj.updateEntityWithOptionalForce( entity, false );
|
if( !passangersOnOtherSide.isEmpty() )
|
||||||
|
|
||||||
if( cart != null )
|
|
||||||
{
|
{
|
||||||
if( player != null )
|
if( player != null )
|
||||||
{
|
{
|
||||||
entity.worldObj.updateEntityWithOptionalForce( entity, true );
|
entity.worldObj.updateEntityWithOptionalForce( entity, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.startRiding( cart, false );
|
for( Entity passanger : passangersOnOtherSide )
|
||||||
|
{
|
||||||
|
passanger.startRiding( entity, true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
|
|
|
@ -74,6 +74,8 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
|
||||||
private EnumFacing forward = null;
|
private EnumFacing forward = null;
|
||||||
private EnumFacing up = null;
|
private EnumFacing up = null;
|
||||||
|
|
||||||
|
private IBlockState state;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldRefresh( final World world, final BlockPos pos, final IBlockState oldState, final IBlockState newSate )
|
public boolean shouldRefresh( final World world, final BlockPos pos, final IBlockState oldState, final IBlockState newSate )
|
||||||
{
|
{
|
||||||
|
@ -113,6 +115,15 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
|
||||||
return src.stack( 1 );
|
return src.stack( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public IBlockState getBlockState(){
|
||||||
|
if( state == null )
|
||||||
|
{
|
||||||
|
state = worldObj.getBlockState( getPos() );
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* for dormant chunk cache.
|
* for dormant chunk cache.
|
||||||
*/
|
*/
|
||||||
|
@ -299,8 +310,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
|
||||||
if( this.worldObj != null )
|
if( this.worldObj != null )
|
||||||
{
|
{
|
||||||
AELog.blockUpdate( this.pos, this );
|
AELog.blockUpdate( this.pos, this );
|
||||||
//TODO 1.9.4 - markBlockForUpdate => ?
|
this.worldObj.notifyBlockUpdate( this.pos, getBlockState(), getBlockState(), 3 );
|
||||||
this.worldObj.markBlockForUpdate( this.pos );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
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;
|
||||||
|
@ -240,9 +241,9 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AEPartLocation addPart( final ItemStack is, final AEPartLocation side, final EntityPlayer player )
|
public AEPartLocation addPart( final ItemStack is, final AEPartLocation side, final EntityPlayer player, final EnumHand hand )
|
||||||
{
|
{
|
||||||
return this.getCableBus().addPart( is, side, player );
|
return this.getCableBus().addPart( is, side, player, hand );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -60,6 +60,7 @@ import net.minecraft.nbt.NBTTagString;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.network.play.server.SPacketChunkData;
|
import net.minecraft.network.play.server.SPacketChunkData;
|
||||||
import net.minecraft.server.management.PlayerChunkMap;
|
import net.minecraft.server.management.PlayerChunkMap;
|
||||||
|
import net.minecraft.server.management.PlayerChunkMapEntry;
|
||||||
import net.minecraft.stats.Achievement;
|
import net.minecraft.stats.Achievement;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.tileentity.TileEntityChest;
|
import net.minecraft.tileentity.TileEntityChest;
|
||||||
|
@ -160,9 +161,7 @@ public class Platform
|
||||||
private static final Random RANDOM_GENERATOR = new Random();
|
private static final Random RANDOM_GENERATOR = new Random();
|
||||||
private static final WeakHashMap<World, EntityPlayer> FAKE_PLAYERS = new WeakHashMap<World, EntityPlayer>();
|
private static final WeakHashMap<World, EntityPlayer> FAKE_PLAYERS = new WeakHashMap<World, EntityPlayer>();
|
||||||
private static Field tagList;
|
private static Field tagList;
|
||||||
private static Class playerInstance;
|
private static Method getEntry;
|
||||||
private static Method getOrCreateChunkWatcher;
|
|
||||||
private static Method sendToAllPlayersWatchingChunk;
|
|
||||||
|
|
||||||
public static Random getRandom()
|
public static Random getRandom()
|
||||||
{
|
{
|
||||||
|
@ -2129,7 +2128,6 @@ public class Platform
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - What do we want to do with this? Seriously, it wont work now, so JUST DO SOMETHING!
|
|
||||||
public static void sendChunk( final Chunk c, final int verticalBits )
|
public static void sendChunk( final Chunk c, final int verticalBits )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -2137,27 +2135,17 @@ public class Platform
|
||||||
final WorldServer ws = (WorldServer) c.getWorld();
|
final WorldServer ws = (WorldServer) c.getWorld();
|
||||||
final PlayerChunkMap pm = ws.getPlayerChunkMap();
|
final PlayerChunkMap pm = ws.getPlayerChunkMap();
|
||||||
|
|
||||||
if( getOrCreateChunkWatcher == null )
|
if( getEntry == null )
|
||||||
{
|
{
|
||||||
getOrCreateChunkWatcher = ReflectionHelper.findMethod( PlayerChunkMap.class, pm, new String[] { "getOrCreateChunkWatcher", "func_72690_a" }, int.class, int.class, boolean.class );
|
getEntry = ReflectionHelper.findMethod( PlayerChunkMap.class, pm, new String[] { "getEntry", "func_187301_b" }, int.class, int.class );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( getOrCreateChunkWatcher != null )
|
if( getEntry != null )
|
||||||
{
|
{
|
||||||
final Object playerInstance = getOrCreateChunkWatcher.invoke( pm, c.xPosition, c.zPosition, false );
|
final PlayerChunkMapEntry playerInstance = (PlayerChunkMapEntry) getEntry.invoke( pm, c.xPosition, c.zPosition );
|
||||||
if( playerInstance != null )
|
if( playerInstance != null )
|
||||||
{
|
{
|
||||||
Platform.playerInstance = playerInstance.getClass();
|
playerInstance.sendPacket( new SPacketChunkData( c, verticalBits ) );
|
||||||
|
|
||||||
if( sendToAllPlayersWatchingChunk == null )
|
|
||||||
{
|
|
||||||
sendToAllPlayersWatchingChunk = ReflectionHelper.findMethod( Platform.playerInstance, playerInstance, new String[] { "sendToAllPlayersWatchingChunk", "func_151251_a" }, Packet.class );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( sendToAllPlayersWatchingChunk != null )
|
|
||||||
{
|
|
||||||
sendToAllPlayersWatchingChunk.invoke( playerInstance, new SPacketChunkData( c, verticalBits ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@ -48,9 +49,8 @@ public class AEItemDef
|
||||||
private String displayName;
|
private String displayName;
|
||||||
@SideOnly( Side.CLIENT )
|
@SideOnly( Side.CLIENT )
|
||||||
private List tooltip;
|
private List tooltip;
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ?
|
|
||||||
@SideOnly( Side.CLIENT )
|
@SideOnly( Side.CLIENT )
|
||||||
private UniqueIdentifier uniqueID;
|
private ResourceLocation uniqueID;
|
||||||
private OreReference isOre;
|
private OreReference isOre;
|
||||||
|
|
||||||
public AEItemDef( final Item it )
|
public AEItemDef( final Item it )
|
||||||
|
@ -176,12 +176,12 @@ public class AEItemDef
|
||||||
return tooltip;
|
return tooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
UniqueIdentifier getUniqueID()
|
ResourceLocation getUniqueID()
|
||||||
{
|
{
|
||||||
return this.uniqueID;
|
return this.uniqueID;
|
||||||
}
|
}
|
||||||
|
|
||||||
UniqueIdentifier setUniqueID( final UniqueIdentifier uniqueID )
|
ResourceLocation setUniqueID( final ResourceLocation uniqueID )
|
||||||
{
|
{
|
||||||
this.uniqueID = uniqueID;
|
this.uniqueID = uniqueID;
|
||||||
return uniqueID;
|
return uniqueID;
|
||||||
|
|
|
@ -35,7 +35,7 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompressedStreamTools;
|
import net.minecraft.nbt.CompressedStreamTools;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@ -591,7 +591,6 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
|
||||||
return this.getDefinition().getDisplayName();
|
return this.getDefinition().getDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 1.9.4 - UniqueIdentifier => ResourceLocation ?
|
|
||||||
@SideOnly( Side.CLIENT )
|
@SideOnly( Side.CLIENT )
|
||||||
public String getModID()
|
public String getModID()
|
||||||
{
|
{
|
||||||
|
@ -600,17 +599,17 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
|
||||||
return this.getModName( this.getDefinition().getUniqueID() );
|
return this.getModName( this.getDefinition().getUniqueID() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.getModName( this.getDefinition().setUniqueID( GameRegistry.findUniqueIdentifierFor( this.getDefinition().getItem() ) ) );
|
return this.getModName( this.getDefinition().setUniqueID( Item.REGISTRY.getNameForObject( this.getDefinition().getItem() ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getModName( final UniqueIdentifier uniqueIdentifier )
|
private String getModName( final ResourceLocation uniqueIdentifier )
|
||||||
{
|
{
|
||||||
if( uniqueIdentifier == null )
|
if( uniqueIdentifier == null )
|
||||||
{
|
{
|
||||||
return "** Null";
|
return "** Null";
|
||||||
}
|
}
|
||||||
|
|
||||||
return uniqueIdentifier.modId == null ? "** Null" : uniqueIdentifier.modId;
|
return uniqueIdentifier.getResourceDomain() == null ? "** Null" : uniqueIdentifier.getResourceDomain();
|
||||||
}
|
}
|
||||||
|
|
||||||
IAEItemStack getLow( final FuzzyMode fuzzy, final boolean ignoreMeta )
|
IAEItemStack getLow( final FuzzyMode fuzzy, final boolean ignoreMeta )
|
||||||
|
|
Loading…
Reference in a new issue