From 05aa6972c4b0d42f7b0f41feffeb1f417f8ce032 Mon Sep 17 00:00:00 2001 From: elix-x Date: Tue, 21 Jun 2016 11:03:10 +0200 Subject: [PATCH] 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. --- src/api/java/appeng/api/parts/IPart.java | 7 +- .../java/appeng/api/parts/IPartHelper.java | 3 +- src/api/java/appeng/api/parts/IPartHost.java | 3 +- .../java/appeng/api/util/ModelGenerator.java | 4 +- src/main/java/appeng/block/AEBaseBlock.java | 45 +++++--- .../java/appeng/block/AEBaseTileBlock.java | 5 +- .../appeng/block/grindstone/BlockCrank.java | 3 +- .../appeng/block/misc/BlockLightDetector.java | 4 +- .../appeng/block/misc/BlockQuartzTorch.java | 4 +- .../appeng/block/misc/BlockSkyCompass.java | 4 +- .../java/appeng/block/misc/BlockTinyTNT.java | 8 +- .../block/networking/BlockCableBus.java | 2 +- .../appeng/block/qnb/BlockQuantumBase.java | 4 +- src/main/java/appeng/client/ClientHelper.java | 27 +++-- src/main/java/appeng/client/SmartModel.java | 4 +- .../java/appeng/client/gui/AEBaseGui.java | 4 +- .../gui/implementations/GuiCraftingCPU.java | 6 +- .../implementations/GuiCraftingStatus.java | 4 +- .../gui/implementations/GuiCraftingTerm.java | 4 +- .../client/render/BakingModelGenerator.java | 105 +++++++++++------- .../appeng/client/render/BaseBlockRender.java | 2 +- .../appeng/client/render/WorldRender.java | 4 +- .../client/render/effects/AssemblerFX.java | 26 ++++- .../client/render/effects/CraftingFx.java | 18 ++- .../client/render/effects/EnergyFx.java | 23 +++- .../client/render/effects/LightningArcFX.java | 2 - .../client/render/effects/LightningFX.java | 21 +++- .../client/render/effects/MatterCannonFX.java | 18 ++- .../client/render/effects/VibrantFX.java | 2 - .../ContainerCraftConfirm.java | 5 +- .../implementations/ContainerCraftingCPU.java | 5 +- .../ContainerMEMonitorable.java | 5 +- .../implementations/ContainerQuartzKnife.java | 4 +- src/main/java/appeng/core/AppEng.java | 10 +- src/main/java/appeng/core/FacadeConfig.java | 10 +- src/main/java/appeng/core/Registration.java | 42 +++---- src/main/java/appeng/core/api/ApiPart.java | 5 +- .../appeng/core/sync/packets/PacketClick.java | 14 ++- .../sync/packets/PacketMEInventoryUpdate.java | 6 +- .../sync/packets/PacketPartPlacement.java | 9 +- .../core/sync/packets/PacketValueConfig.java | 26 ++++- .../java/appeng/debug/ToolReplicatorCard.java | 4 +- .../appeng/entity/EntityFloatingItem.java | 6 +- src/main/java/appeng/entity/ICanDie.java | 8 ++ .../appeng/hooks/DispenserMatterCannon.java | 2 +- .../java/appeng/items/misc/ItemPaintBall.java | 62 +++++++---- .../java/appeng/items/parts/ItemFacade.java | 9 +- .../appeng/items/parts/ItemMultiPart.java | 2 +- .../appeng/items/tools/ToolNetworkTool.java | 6 +- .../tools/powered/ToolEntropyManipulator.java | 3 +- .../items/tools/powered/ToolMassCannon.java | 4 +- src/main/java/appeng/loot/ChestLoot.java | 36 ++++++ src/main/java/appeng/parts/AEBasePart.java | 15 +-- .../java/appeng/parts/CableBusContainer.java | 17 +-- .../java/appeng/parts/ICableBusContainer.java | 3 +- .../appeng/parts/NullCableBusContainer.java | 3 +- src/main/java/appeng/parts/PartPlacement.java | 26 ++--- .../parts/automation/PartExportBus.java | 3 +- .../parts/automation/PartFormationPlane.java | 15 +-- .../parts/automation/PartImportBus.java | 3 +- .../parts/automation/PartLevelEmitter.java | 7 +- .../appeng/parts/misc/PartCableAnchor.java | 7 +- .../java/appeng/parts/misc/PartInterface.java | 3 +- .../appeng/parts/misc/PartStorageBus.java | 3 +- .../java/appeng/parts/misc/PartToggleBus.java | 5 +- .../appeng/parts/networking/PartCable.java | 2 +- .../parts/networking/PartQuartzFiber.java | 5 +- .../java/appeng/parts/p2p/PartP2PTunnel.java | 9 +- .../appeng/parts/p2p/PartP2PTunnelME.java | 5 +- .../parts/reporting/AbstractPartMonitor.java | 7 +- .../reporting/AbstractPartReporting.java | 9 +- .../parts/reporting/AbstractPartTerminal.java | 5 +- .../reporting/PartConversionMonitor.java | 5 +- .../reporting/PartInterfaceTerminal.java | 5 +- .../java/appeng/recipes/RecipeHandler.java | 9 +- src/main/java/appeng/spatial/CachedPlane.java | 3 +- .../appeng/spatial/DefaultSpatialHandler.java | 3 +- .../java/appeng/spatial/StorageHelper.java | 81 ++++---------- src/main/java/appeng/tile/AEBaseTile.java | 14 ++- .../appeng/tile/networking/TileCableBus.java | 5 +- src/main/java/appeng/util/Platform.java | 26 ++--- src/main/java/appeng/util/item/AEItemDef.java | 8 +- .../java/appeng/util/item/AEItemStack.java | 9 +- 83 files changed, 564 insertions(+), 405 deletions(-) create mode 100644 src/main/java/appeng/entity/ICanDie.java create mode 100644 src/main/java/appeng/loot/ChestLoot.java diff --git a/src/api/java/appeng/api/parts/IPart.java b/src/api/java/appeng/api/parts/IPart.java index eb9a722b..faf1e7ad 100644 --- a/src/api/java/appeng/api/parts/IPart.java +++ b/src/api/java/appeng/api/parts/IPart.java @@ -37,6 +37,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -241,7 +242,7 @@ public interface IPart extends IBoxProvider * * @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 @@ -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. */ - 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 @@ -283,7 +284,7 @@ public interface IPart extends IBoxProvider * @param held held item * @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. diff --git a/src/api/java/appeng/api/parts/IPartHelper.java b/src/api/java/appeng/api/parts/IPartHelper.java index 34be5ade..9202f426 100644 --- a/src/api/java/appeng/api/parts/IPartHelper.java +++ b/src/api/java/appeng/api/parts/IPartHelper.java @@ -27,6 +27,7 @@ package appeng.api.parts; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -76,7 +77,7 @@ public interface IPartHelper * * @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 diff --git a/src/api/java/appeng/api/parts/IPartHost.java b/src/api/java/appeng/api/parts/IPartHost.java index 331a2535..337cd280 100644 --- a/src/api/java/appeng/api/parts/IPartHost.java +++ b/src/api/java/appeng/api/parts/IPartHost.java @@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.Vec3d; 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, * {@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 ) diff --git a/src/api/java/appeng/api/util/ModelGenerator.java b/src/api/java/appeng/api/util/ModelGenerator.java index 22d2efb8..7d1adb71 100644 --- a/src/api/java/appeng/api/util/ModelGenerator.java +++ b/src/api/java/appeng/api/util/ModelGenerator.java @@ -3,6 +3,8 @@ package appeng.api.util; import java.util.EnumSet; +import javax.annotation.Nullable; + import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.IBakedModel; @@ -49,7 +51,7 @@ public interface ModelGenerator 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 ); diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 2a54e4dc..24b796e1 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -35,6 +35,7 @@ import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.IResource; import net.minecraft.creativetab.CreativeTabs; @@ -61,6 +62,7 @@ import appeng.api.util.AEPartLocation; import appeng.api.util.IAESprite; import appeng.api.util.IOrientable; import appeng.api.util.IOrientableBlock; +import appeng.block.AEBaseBlock.AEBaseBlockColor; import appeng.client.render.BaseBlockRender; import appeng.client.render.BlockRenderInfo; import appeng.client.texture.BaseIcon; @@ -76,9 +78,9 @@ import appeng.helpers.ICustomCollision; import appeng.util.LookDirection; import appeng.util.Platform; -//TODO 1.9.4 - setBlockBounds => ? public abstract class AEBaseBlock extends Block implements IAEFeature { + public static final PropertyEnum AXIS_ORIENTATION = PropertyEnum.create( "axis", EnumFacing.Axis.class ); private final String featureFullName; @@ -91,6 +93,8 @@ public abstract class AEBaseBlock extends Block implements IAEFeature @SideOnly( Side.CLIENT ) private BlockRenderInfo renderInfo; private String textureName; + + protected AxisAlignedBB boundingBox; @Override public boolean isVisuallyOpaque() @@ -105,6 +109,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature this.setLightLevel( 0 ); this.setHardness( 2.2F ); this.setHarvestLevel( "pickaxe", 0 ); + + if( Platform.isClient() ) + { + Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler( new AEBaseBlockColor(), this ); + } } protected AEBaseBlock( final Material mat, final Optional 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 ) protected Class getRenderer() { @@ -264,6 +266,12 @@ public abstract class AEBaseBlock extends Block implements IAEFeature return this.getRendererInstance().getTexture( AEPartLocation.fromFacing( side ) ); } + @Override + public AxisAlignedBB getBoundingBox( IBlockState state, IBlockAccess source, BlockPos pos ) + { + return boundingBox; + } + @Override public void addCollisionBoxToList( final IBlockState state, final World w, final BlockPos pos, final AxisAlignedBB bb, final List out, final Entity e ) { @@ -308,11 +316,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature 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() ); - this.setBlockBounds( 0, 0, 0, 1, 1, 1 ); + this.boundingBox = FULL_BLOCK_AABB; if( r != null ) { @@ -392,11 +400,11 @@ public abstract class AEBaseBlock extends Block implements IAEFeature 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 ); - this.setBlockBounds( 0, 0, 0, 1, 1, 1 ); + this.boundingBox = FULL_BLOCK_AABB; if( r != null ) { @@ -421,7 +429,7 @@ public abstract class AEBaseBlock extends Block implements IAEFeature return null; } - this.setBlockBounds( 0, 0, 0, 1, 1, 1 ); + this.boundingBox = FULL_BLOCK_AABB; return super.collisionRayTrace( state, w, pos, a, b ); } @@ -712,4 +720,15 @@ public abstract class AEBaseBlock extends Block implements IAEFeature 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; + } + + } } diff --git a/src/main/java/appeng/block/AEBaseTileBlock.java b/src/main/java/appeng/block/AEBaseTileBlock.java index 753fbe9b..223b4bc6 100644 --- a/src/main/java/appeng/block/AEBaseTileBlock.java +++ b/src/main/java/appeng/block/AEBaseTileBlock.java @@ -225,11 +225,10 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, return 0; } - //TODO 1.9.4 - Move to IBlockState @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 ); return tileentity != null ? tileentity.receiveClientEvent( eventID, eventParam ) : false; } diff --git a/src/main/java/appeng/block/grindstone/BlockCrank.java b/src/main/java/appeng/block/grindstone/BlockCrank.java index c91c5381..1875d47e 100644 --- a/src/main/java/appeng/block/grindstone/BlockCrank.java +++ b/src/main/java/appeng/block/grindstone/BlockCrank.java @@ -90,8 +90,7 @@ public class BlockCrank extends AEBaseTileBlock private void dropCrank( final World world, final BlockPos pos ) { world.destroyBlock( pos, true ); // w.destroyBlock( x, y, z, true ); - //TODO 1.9.4 - markBlockForUpdate => ? - world.markBlockForUpdate( pos ); + world.notifyBlockUpdate( pos, getDefaultState(), world.getBlockState( pos ), 3 ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockLightDetector.java b/src/main/java/appeng/block/misc/BlockLightDetector.java index d3f6f342..312e73f9 100644 --- a/src/main/java/appeng/block/misc/BlockLightDetector.java +++ b/src/main/java/appeng/block/misc/BlockLightDetector.java @@ -158,9 +158,9 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl private void dropTorch( final World w, final BlockPos pos ) { + final IBlockState prev = w.getBlockState( pos ); w.destroyBlock( pos, true ); - //TODO 1.9.4 - markBlockForUpdate => ? - w.markBlockForUpdate( pos ); + w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockQuartzTorch.java b/src/main/java/appeng/block/misc/BlockQuartzTorch.java index 86323f37..63b742a0 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzTorch.java +++ b/src/main/java/appeng/block/misc/BlockQuartzTorch.java @@ -161,9 +161,9 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I private void dropTorch( final World w, final BlockPos pos ) { + final IBlockState prev = w.getBlockState( pos ); w.destroyBlock( pos, true ); - //TODO 1.9.4 - markBlockForUpdate => ? - w.markBlockForUpdate( pos ); + w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockSkyCompass.java b/src/main/java/appeng/block/misc/BlockSkyCompass.java index 94eb40b2..fad7360f 100644 --- a/src/main/java/appeng/block/misc/BlockSkyCompass.java +++ b/src/main/java/appeng/block/misc/BlockSkyCompass.java @@ -87,9 +87,9 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision private void dropTorch( final World w, final BlockPos pos ) { + final IBlockState prev = w.getBlockState( pos ); w.destroyBlock( pos, true ); - //TODO 1.9.4 - markBlockForUpdate => ? - w.markBlockForUpdate( pos ); + w.notifyBlockUpdate( pos, prev, w.getBlockState( pos ), 3 ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockTinyTNT.java b/src/main/java/appeng/block/misc/BlockTinyTNT.java index 4aebee1c..57e2535f 100644 --- a/src/main/java/appeng/block/misc/BlockTinyTNT.java +++ b/src/main/java/appeng/block/misc/BlockTinyTNT.java @@ -35,10 +35,12 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; +import net.minecraft.init.SoundEvents; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.Explosion; @@ -62,8 +64,7 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision { super( Material.TNT ); this.setLightOpacity( 1 ); - //TODO 1.9.4 - setBlockBounds => ? - this.setBlockBounds( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f ); + this.boundingBox = new AxisAlignedBB( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f ); this.setFullSize( this.setOpaque( false ) ); this.setSoundType( SoundType.GROUND ); 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 ); w.spawnEntityInWorld( primedTinyTNTEntity ); - //TODO 1.9.4 - playSoundAtEntity => ? - w.playSoundAtEntity( primedTinyTNTEntity, "game.tnt.primed", 1.0F, 1.0F ); + w.playSound( null, primedTinyTNTEntity.posX, primedTinyTNTEntity.posY, primedTinyTNTEntity.posZ, SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1, 1 ); } } diff --git a/src/main/java/appeng/block/networking/BlockCableBus.java b/src/main/java/appeng/block/networking/BlockCableBus.java index 351227f5..08469d5a 100644 --- a/src/main/java/appeng/block/networking/BlockCableBus.java +++ b/src/main/java/appeng/block/networking/BlockCableBus.java @@ -332,7 +332,7 @@ public class BlockCableBus extends AEBaseTileBlock // implements @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 ) { - 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 diff --git a/src/main/java/appeng/block/qnb/BlockQuantumBase.java b/src/main/java/appeng/block/qnb/BlockQuantumBase.java index 7f3c2941..54dece94 100644 --- a/src/main/java/appeng/block/qnb/BlockQuantumBase.java +++ b/src/main/java/appeng/block/qnb/BlockQuantumBase.java @@ -25,6 +25,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -43,8 +44,7 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto super( mat ); this.setTileEntity( TileQuantumBridge.class ); final float shave = 2.0f / 16.0f; - //TODO 1.9.4 - setBlockBounds => ? - this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave ); + this.boundingBox = new AxisAlignedBB( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave ); this.setLightOpacity( 0 ); this.setFullSize( this.setOpaque( false ) ); this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) ); diff --git a/src/main/java/appeng/client/ClientHelper.java b/src/main/java/appeng/client/ClientHelper.java index 11741c2b..e742bc11 100644 --- a/src/main/java/appeng/client/ClientHelper.java +++ b/src/main/java/appeng/client/ClientHelper.java @@ -44,6 +44,7 @@ import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; @@ -55,7 +56,6 @@ import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.registry.GameRegistry; import appeng.api.parts.CableRenderMode; import appeng.api.parts.IPartItem; @@ -495,9 +495,8 @@ public class ClientHelper extends ServerHelper { if( reg.item instanceof IPartItem || reg.item instanceof IFacadeItem ) { - //TODO 1.9.4 - UniqueIdentifier => ? - final UniqueIdentifier i = GameRegistry.findUniqueIdentifierFor( (Item) reg.item ); - event.getModelRegistry().putObject( new ModelResourceLocation( new ResourceLocation( i.modId, i.name ), "inventory" ), buses ); + final ResourceLocation i = Item.REGISTRY.getNameForObject( (Item) reg.item ); + event.getModelRegistry().putObject( new ModelResourceLocation( new ResourceLocation( i.getResourceDomain(), i.getResourcePath() ), "inventory" ), buses ); } if( reg.item instanceof AEBaseBlock ) @@ -531,11 +530,23 @@ public class ClientHelper extends ServerHelper final Minecraft mc = Minecraft.getMinecraft(); final EntityPlayer player = mc.thePlayer; - //TODO 1.9.4 - 2 hands. Just do something! - final ItemStack is = player.getItemStackFromSlot( EntityEquipmentSlot.MAINHAND ); - - if( is != null && is.getItem() instanceof IMouseWheelItem && player.isSneaking() ) + if( 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 { NetworkHandler.instance.sendToServer( new PacketValueConfig( "Item", me.getDwheel() > 0 ? "WheelUp" : "WheelDown" ) ); diff --git a/src/main/java/appeng/client/SmartModel.java b/src/main/java/appeng/client/SmartModel.java index 16058913..6d50c282 100644 --- a/src/main/java/appeng/client/SmartModel.java +++ b/src/main/java/appeng/client/SmartModel.java @@ -78,7 +78,7 @@ public class SmartModel implements IBakedModel final BlockPos pos = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_POS ); final IBlockAccess world = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_ACCESS ); helper.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() ); - helper.setRenderBoundsFromBlock( blk ); + helper.setRenderBoundsFromBlock( state, pos ); helper.setBlockAccess( world ); this.aeRenderer.getRendererInstance().renderInWorld( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, world, pos, helper ); helper.finalizeModel( false ); @@ -95,7 +95,7 @@ public class SmartModel implements IBakedModel { final ModelGenerator helper = new BakingModelGenerator(); 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 ); helper.finalizeModel( true ); return helper.getOutput(); diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index caa619a9..8e56a9fd 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -89,7 +89,7 @@ public abstract class AEBaseGui extends GuiContainer private final List meSlots = new LinkedList(); // drag y private final Set drag_click = new HashSet(); - 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 boolean disableShiftClick = false; 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 protected void handleMouseClick( final Slot slot, final int slotIdx, final int key, final ClickType clickType ) { diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java index 38093db5..a297eb52 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java @@ -55,7 +55,7 @@ import appeng.util.Platform; 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_WIDTH = 238; @@ -92,12 +92,12 @@ public class GuICraftingCPU extends AEBaseGui implements ISortSource private GuiButton cancel; 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 ) ); } - protected GuICraftingCPU( final ContainerCraftingCPU container ) + protected GuiCraftingCPU( final ContainerCraftingCPU container ) { super( container ); this.craftingCpu = container; diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java index 4cd2475e..58916bf4 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java @@ -49,7 +49,7 @@ import appeng.parts.reporting.PartPatternTerminal; import appeng.parts.reporting.PartTerminal; -public class GuIContainerListenerStatus extends GuICraftingCPU +public class GuiCraftingStatus extends GuiCraftingCPU { private final ContainerCraftingStatus status; @@ -59,7 +59,7 @@ public class GuIContainerListenerStatus extends GuICraftingCPU private GuiBridge originalGui; 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 ) ); diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingTerm.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingTerm.java index f489c4e1..36a52eb0 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingTerm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingTerm.java @@ -36,12 +36,12 @@ import appeng.core.sync.packets.PacketInventoryAction; import appeng.helpers.InventoryAction; -public class GuIContainerListenerTerm extends GuiMEMonitorable +public class GuiCraftingTerm extends GuiMEMonitorable { 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 ) ); this.setReservedSpace( 73 ); diff --git a/src/main/java/appeng/client/render/BakingModelGenerator.java b/src/main/java/appeng/client/render/BakingModelGenerator.java index 4999ba25..8e7c6a9d 100644 --- a/src/main/java/appeng/client/render/BakingModelGenerator.java +++ b/src/main/java/appeng/client/render/BakingModelGenerator.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import javax.annotation.Nullable; + import org.lwjgl.util.vector.Vector3f; 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.ModelRotation; 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.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.MinecraftForgeClient; @@ -35,7 +41,6 @@ import appeng.client.texture.MissingIcon; import appeng.items.AEBaseItem; import appeng.items.parts.ItemMultiPart; -//TODO 1.9.4 - Just all public class BakingModelGenerator implements ModelGenerator { private static final class CachedModel implements IBakedModel @@ -133,19 +138,28 @@ public class BakingModelGenerator implements ModelGenerator private EnumFacing currentFace = EnumFacing.UP; 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; } - this.setRenderMinX( block.getBlockBoundsMinX() ); - this.setRenderMinY( block.getBlockBoundsMinY() ); - this.setRenderMinZ( block.getBlockBoundsMinZ() ); - this.setRenderMaxX( block.getBlockBoundsMaxX() ); - this.setRenderMaxY( block.getBlockBoundsMaxY() ); - this.setRenderMaxZ( block.getBlockBoundsMaxZ() ); + AxisAlignedBB boundingBox; + try + { + boundingBox = state.getBoundingBox( getBlockAccess(), pos ); + } + 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 ) @@ -289,6 +303,7 @@ public class BakingModelGenerator implements ModelGenerator 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 ) { 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; final int[] vertData = { - Float.floatToRawIntBits( this.points[0][0] ), - Float.floatToRawIntBits( this.points[0][1] ), - Float.floatToRawIntBits( this.points[0][2] ), - this.brightness, - Float.floatToRawIntBits( this.points[0][3] ), - Float.floatToRawIntBits( this.points[0][4] ), - 0, + Float.floatToRawIntBits( this.points[0][0] ), + Float.floatToRawIntBits( this.points[0][1] ), + Float.floatToRawIntBits( this.points[0][2] ), + // this.brightness, + Float.floatToRawIntBits( this.points[0][3] ), + Float.floatToRawIntBits( this.points[0][4] ), + // 0, - Float.floatToRawIntBits( this.points[1][0] ), - Float.floatToRawIntBits( this.points[1][1] ), - Float.floatToRawIntBits( this.points[1][2] ), - this.brightness, - Float.floatToRawIntBits( this.points[1][3] ), - Float.floatToRawIntBits( this.points[1][4] ), - 0, + Float.floatToRawIntBits( this.points[1][0] ), + Float.floatToRawIntBits( this.points[1][1] ), + Float.floatToRawIntBits( this.points[1][2] ), + // this.brightness, + Float.floatToRawIntBits( this.points[1][3] ), + Float.floatToRawIntBits( this.points[1][4] ), + // 0, - Float.floatToRawIntBits( this.points[2][0] ), - Float.floatToRawIntBits( this.points[2][1] ), - Float.floatToRawIntBits( this.points[2][2] ), - this.brightness, - Float.floatToRawIntBits( this.points[2][3] ), - Float.floatToRawIntBits( this.points[2][4] ), - 0, + Float.floatToRawIntBits( this.points[2][0] ), + Float.floatToRawIntBits( this.points[2][1] ), + Float.floatToRawIntBits( this.points[2][2] ), + // this.brightness, + Float.floatToRawIntBits( this.points[2][3] ), + Float.floatToRawIntBits( this.points[2][4] ), + // 0, - Float.floatToRawIntBits( this.points[3][0] ), - Float.floatToRawIntBits( this.points[3][1] ), - Float.floatToRawIntBits( this.points[3][2] ), - this.brightness, - Float.floatToRawIntBits( this.points[3][3] ), - Float.floatToRawIntBits( this.points[3][4] ), - 0, - }; + Float.floatToRawIntBits( this.points[3][0] ), + Float.floatToRawIntBits( this.points[3][1] ), + Float.floatToRawIntBits( this.points[3][2] ), + // this.brightness, + Float.floatToRawIntBits( this.points[3][3] ), + Float.floatToRawIntBits( this.points[3][4] ), + // 0, + }; - this.generatedModel.general.add( new IColoredBakedQuad.ColoredBakedQuad( vertData, this.color, face ) ); + for( List 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; } @@ -556,15 +574,18 @@ public class BakingModelGenerator implements ModelGenerator 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 ); - 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() ) { - this.generatedModel.getFaceQuads( myFace ).add( bf ); + this.generatedModel.faces[myFace.ordinal()].add( bf ); } else { - this.generatedModel.getGeneralQuads().add( bf ); + for( List list : this.generatedModel.faces ) + { + list.add( bf ); + } } } } diff --git a/src/main/java/appeng/client/render/BaseBlockRender.java b/src/main/java/appeng/client/render/BaseBlockRender.java index 6b8701be..288983e5 100644 --- a/src/main/java/appeng/client/render/BaseBlockRender.java +++ b/src/main/java/appeng/client/render/BaseBlockRender.java @@ -694,7 +694,7 @@ public class BaseBlockRender renderer.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() ); // note that this is a terrible approach... - renderer.setRenderBoundsFromBlock( block ); + renderer.setRenderBoundsFromBlock( block.getDefaultState(), pos ); renderer.renderStandardBlock( block, pos ); renderer.setTranslation( 0, 0, 0 ); diff --git a/src/main/java/appeng/client/render/WorldRender.java b/src/main/java/appeng/client/render/WorldRender.java index e857e132..1dde4ed5 100644 --- a/src/main/java/appeng/client/render/WorldRender.java +++ b/src/main/java/appeng/client/render/WorldRender.java @@ -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 ) { final AEBaseBlock blk = (AEBaseBlock) block; - renderer.setRenderBoundsFromBlock( block ); + renderer.setRenderBoundsFromBlock( world.getBlockState( pos ), pos ); return this.getRender( blk ).renderInWorld( blk, world, pos, renderer ); } @@ -77,7 +77,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler if( blk instanceof AEBaseBlock ) { 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.getRender( block ).renderInventory( block, item, this.renderer, type, data ); diff --git a/src/main/java/appeng/client/render/effects/AssemblerFX.java b/src/main/java/appeng/client/render/effects/AssemblerFX.java index 1e63daa2..b21cb8f1 100644 --- a/src/main/java/appeng/client/render/effects/AssemblerFX.java +++ b/src/main/java/appeng/client/render/effects/AssemblerFX.java @@ -28,9 +28,10 @@ import appeng.api.storage.data.IAEItemStack; import appeng.client.EffectType; import appeng.core.CommonHelper; import appeng.entity.EntityFloatingItem; +import appeng.entity.ICanDie; -public class AssemblerFX extends Particle +public class AssemblerFX extends Particle implements ICanDie { private final EntityFloatingItem fi; @@ -47,8 +48,12 @@ public class AssemblerFX extends Particle this.fi = new EntityFloatingItem( this, w, x, y, z, is.getItemStack() ); w.spawnEntityInWorld( this.fi ); 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 @@ -61,7 +66,20 @@ public class AssemblerFX extends Particle @Override 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 ) { diff --git a/src/main/java/appeng/client/render/effects/CraftingFx.java b/src/main/java/appeng/client/render/effects/CraftingFx.java index 0ac19c8f..1630825d 100644 --- a/src/main/java/appeng/client/render/effects/CraftingFx.java +++ b/src/main/java/appeng/client/render/effects/CraftingFx.java @@ -58,9 +58,6 @@ public class CraftingFx extends ParticleBreaking this.startBlkX = MathHelper.floor_double( this.posX ); this.startBlkY = MathHelper.floor_double( this.posY ); this.startBlkZ = MathHelper.floor_double( this.posZ ); - - //TODO 1.9.4 - noClip => ? - this.noClip = true; } @Override @@ -116,7 +113,20 @@ public class CraftingFx extends ParticleBreaking @Override 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.particleAlpha *= 0.51f; } diff --git a/src/main/java/appeng/client/render/effects/EnergyFx.java b/src/main/java/appeng/client/render/effects/EnergyFx.java index 6a49f8d1..c21b83f3 100644 --- a/src/main/java/appeng/client/render/effects/EnergyFx.java +++ b/src/main/java/appeng/client/render/effects/EnergyFx.java @@ -57,9 +57,6 @@ public class EnergyFx extends ParticleBreaking this.startBlkX = MathHelper.floor_double( this.posX ); this.startBlkY = MathHelper.floor_double( this.posY ); this.startBlkZ = MathHelper.floor_double( this.posZ ); - - //TODO 1.9.4 - noClip => ? - this.noClip = true; } @Override @@ -106,9 +103,23 @@ public class EnergyFx extends ParticleBreaking @Override public void onUpdate() { - super.onUpdate(); - this.particleScale *= 0.89f; - this.particleAlpha *= 0.89f; + 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.89f; + this.particleAlpha *= 0.89f; } public void setMotionX( float motionX ) diff --git a/src/main/java/appeng/client/render/effects/LightningArcFX.java b/src/main/java/appeng/client/render/effects/LightningArcFX.java index d0e76171..f88b44ca 100644 --- a/src/main/java/appeng/client/render/effects/LightningArcFX.java +++ b/src/main/java/appeng/client/render/effects/LightningArcFX.java @@ -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 ) { super( w, x, y, z, r, g, b, 6 ); - //TODO 1.9.4 - noClip => ? - this.noClip = true; this.rx = ex - x; this.ry = ey - y; diff --git a/src/main/java/appeng/client/render/effects/LightningFX.java b/src/main/java/appeng/client/render/effects/LightningFX.java index 9b8a038f..0691c27f 100644 --- a/src/main/java/appeng/client/render/effects/LightningFX.java +++ b/src/main/java/appeng/client/render/effects/LightningFX.java @@ -55,8 +55,6 @@ public class LightningFX extends Particle this.motionY = 0; this.motionZ = 0; this.particleMaxAge = maxAge; - //TODO 1.9.4 - noClip => ? - this.noClip = true; } protected void regen() @@ -83,6 +81,25 @@ public class LightningFX extends Particle final int j1 = 13; 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 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 ) diff --git a/src/main/java/appeng/client/render/effects/MatterCannonFX.java b/src/main/java/appeng/client/render/effects/MatterCannonFX.java index 1a2583d8..6bc89432 100644 --- a/src/main/java/appeng/client/render/effects/MatterCannonFX.java +++ b/src/main/java/appeng/client/render/effects/MatterCannonFX.java @@ -48,8 +48,6 @@ public class MatterCannonFX extends ParticleBreaking this.motionY = 0.0f; this.motionZ = 0.0f; this.particleTextureIndex = ExtraBlockTextures.BlockMatterCannonParticle.getIcon().getAtlas(); - //TODO 1.9.4 - noClip => ? - this.noClip = true; } public void fromItem( final AEPartLocation d ) @@ -60,7 +58,21 @@ public class MatterCannonFX extends ParticleBreaking @Override 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.particleAlpha *= 0.59f; } diff --git a/src/main/java/appeng/client/render/effects/VibrantFX.java b/src/main/java/appeng/client/render/effects/VibrantFX.java index 0c58cf36..2a412b4c 100644 --- a/src/main/java/appeng/client/render/effects/VibrantFX.java +++ b/src/main/java/appeng/client/render/effects/VibrantFX.java @@ -46,8 +46,6 @@ public class VibrantFX extends Particle this.prevPosY = this.posY; this.prevPosZ = this.posZ; this.particleMaxAge = (int) ( 20.0D / ( Math.random() * 0.8D + 0.1D ) ); - //TODO 1.9.4 - noClip => ? - this.noClip = true; } @Override diff --git a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java index 1dcc3fac..17fc515c 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java @@ -365,11 +365,10 @@ public class ContainerCraftConfirm extends AEBaseContainer return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() ); } - //TODO 1.9.4 - removeCraftingFromCrafters => ? @Override - public void removeCraftingFromCrafters( final IContainerListener c ) + public void removeListener( final IContainerListener c ) { - super.removeCraftingFromCrafters( c ); + super.removeListener( c ); if( this.getJob() != null ) { this.getJob().cancel( true ); diff --git a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java index ab26e449..53450b28 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java @@ -152,11 +152,10 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH this.setEstimatedTime( -1 ); } - //TODO 1.9.4 - removeCraftingFromCrafters => ? @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 ) { diff --git a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java index a6fe1d1d..9182503c 100644 --- a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java +++ b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java @@ -300,11 +300,10 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa super.onUpdate( field, oldValue, newValue ); } - //TODO 1.9.4 - onCraftGuiOpened => ? @Override - public void onCraftGuiOpened( final IContainerListener c ) + public void addListener( final IContainerListener c ) { - super.onCraftGuiOpened( c ); + super.addListener( c ); this.queueInventory( c ); } diff --git a/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java b/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java index 99e4d56a..fa22e680 100644 --- a/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java +++ b/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java @@ -24,6 +24,7 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumHand; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent; @@ -174,8 +175,7 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn if( item.stackSize == 0 ) { 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 ) ); + MinecraftForge.EVENT_BUS.post( new PlayerDestroyItemEvent( this.getPlayerInv().player, item, null ) ); } return true; diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 1a931520..f618e415 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -70,12 +70,12 @@ public final class AppEng public static final String ASSETS = "appliedenergistics2:"; public static final String MOD_DEPENDENCIES = - // a few mods, AE should load after, probably. - // required-after:AppliedEnergistics2API|all; - // "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" + + // a few mods, AE should load after, probably. + // required-after:AppliedEnergistics2API|all; + // "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" + - // depend on version of forge used for build. - "after:appliedenergistics2-core;" + "required-after:Forge@[" // require forge. + // depend on version of forge used for build. + "after:appliedenergistics2-core;" + "required-after:Forge@[" // require forge. + net.minecraftforge.common.ForgeVersion.majorVersion + '.' // majorVersion + net.minecraftforge.common.ForgeVersion.minorVersion + '.' // minorVersion + net.minecraftforge.common.ForgeVersion.revisionVersion + '.' // revisionVersion diff --git a/src/main/java/appeng/core/FacadeConfig.java b/src/main/java/appeng/core/FacadeConfig.java index b153c57c..dda88f33 100644 --- a/src/main/java/appeng/core/FacadeConfig.java +++ b/src/main/java/appeng/core/FacadeConfig.java @@ -25,8 +25,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.fml.common.registry.GameRegistry; public class FacadeConfig extends Configuration @@ -48,8 +49,7 @@ public class FacadeConfig extends Configuration return false; } - //TODO 1.9.4 - UniqueIdentifier => ResourceLocation ??? - final UniqueIdentifier blk = GameRegistry.findUniqueIdentifierFor( id ); + final ResourceLocation blk = Item.REGISTRY.getNameForObject( Item.getItemFromBlock( id ) ); if( blk == null ) { for( final Field f : Block.class.getFields() ) @@ -69,8 +69,8 @@ public class FacadeConfig extends Configuration } else { - final Matcher mod = this.replacementPattern.matcher( blk.modId ); - final Matcher name = this.replacementPattern.matcher( blk.name ); + final Matcher mod = this.replacementPattern.matcher( blk.getResourceDomain() ); + final Matcher name = this.replacementPattern.matcher( blk.getResourcePath() ); return this.get( mod.replaceAll( "" ), name.replaceAll( "" ) + ( metadata == 0 ? "" : "." + metadata ), automatic ).getBoolean( automatic ); } diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 6bf484bb..e7c2212c 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -20,6 +20,8 @@ package appeng.core; import java.io.File; +import java.util.HashSet; +import java.util.Set; import javax.annotation.Nonnull; @@ -46,7 +48,6 @@ import appeng.api.config.Upgrades; import appeng.api.definitions.IBlocks; import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IItems; -import appeng.api.definitions.IMaterials; import appeng.api.definitions.IParts; import appeng.api.features.IRecipeHandlerRegistry; import appeng.api.features.IRegistryContainer; @@ -74,6 +75,7 @@ import appeng.core.localization.PlayerMessages; import appeng.core.stats.PlayerStatsRegistration; import appeng.hooks.TickHandler; import appeng.items.materials.MultiItem; +import appeng.loot.ChestLoot; import appeng.me.cache.CraftingGridCache; import appeng.me.cache.EnergyGridCache; import appeng.me.cache.GridStorageCache; @@ -198,14 +200,19 @@ public final class Registration if( config.storageProviderID == -1 && force ) { + final Set ids = new HashSet<>(); + for( DimensionType type : DimensionType.values() ) + { + ids.add( type.getId() ); + } + 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( DimensionManager.isDimensionRegistered( config.storageProviderID ) ) + while( ids.contains( config.storageProviderID ) ) { config.storageProviderID--; } - + storageDimensionType = DimensionType.register( "Storage Cell", "_cell", config.storageProviderID, StorageWorldProvider.class, false ); config.save(); @@ -278,9 +285,13 @@ public final class Registration FMLCommonHandler.instance().bus().register( TickHandler.INSTANCE ); MinecraftForge.EVENT_BUS.register( TickHandler.INSTANCE ); - final PartPlacement pp = new PartPlacement(); - MinecraftForge.EVENT_BUS.register( pp ); - FMLCommonHandler.instance().bus().register( pp ); + + MinecraftForge.EVENT_BUS.register( new PartPlacement() ); + + if( AEConfig.instance.isFeatureEnabled( AEFeature.ChestLoot ) ) + { + MinecraftForge.EVENT_BUS.register( new ChestLoot() ); + } final IGridCacheRegistry gcr = registries.gridCache(); gcr.registerGridCache( ITickManager.class, TickManagerCache.class ); @@ -417,23 +428,6 @@ public final class Registration 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 if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) ) { diff --git a/src/main/java/appeng/core/api/ApiPart.java b/src/main/java/appeng/core/api/ApiPart.java index 63a943a4..cf5b7099 100644 --- a/src/main/java/appeng/core/api/ApiPart.java +++ b/src/main/java/appeng/core/api/ApiPart.java @@ -44,6 +44,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -338,9 +339,9 @@ public class ApiPart implements IPartHelper } @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 diff --git a/src/main/java/appeng/core/sync/packets/PacketClick.java b/src/main/java/appeng/core/sync/packets/PacketClick.java index 0f827296..1b0d1c75 100644 --- a/src/main/java/appeng/core/sync/packets/PacketClick.java +++ b/src/main/java/appeng/core/sync/packets/PacketClick.java @@ -25,6 +25,7 @@ import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import appeng.api.AEApi; @@ -44,10 +45,11 @@ public class PacketClick extends AppEngPacket private final int x; private final int y; private final int z; - private final int side; + private EnumFacing side; private final float hitX; private final float hitY; private final float hitZ; + private EnumHand hand; // automatic. public PacketClick( final ByteBuf stream ) @@ -55,14 +57,15 @@ public class PacketClick extends AppEngPacket this.x = stream.readInt(); this.y = stream.readInt(); this.z = stream.readInt(); - this.side = stream.readInt(); + this.side = EnumFacing.values()[ stream.readByte() ]; this.hitX = stream.readFloat(); this.hitY = stream.readFloat(); this.hitZ = stream.readFloat(); + this.hand = EnumHand.values()[ stream.readByte() ]; } // 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(); @@ -71,10 +74,11 @@ public class PacketClick extends AppEngPacket data.writeInt( this.x = pos.getX() ); data.writeInt( this.y = pos.getY() ); data.writeInt( this.z = pos.getZ() ); - data.writeInt( this.side = side.ordinal() ); + data.writeByte( side.ordinal() ); data.writeFloat( this.hitX = hitX ); data.writeFloat( this.hitY = hitY ); data.writeFloat( this.hitZ = hitZ ); + data.writeByte( hand.ordinal() ); this.configureWrite( data ); } @@ -92,7 +96,7 @@ public class PacketClick extends AppEngPacket if( is.getItem() instanceof ToolNetworkTool ) { 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 ) ) diff --git a/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java b/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java index d95e2424..057050d3 100644 --- a/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java +++ b/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java @@ -41,8 +41,8 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import appeng.api.storage.data.IAEItemStack; -import appeng.client.gui.implementations.GuICraftingCPU; import appeng.client.gui.implementations.GuiCraftConfirm; +import appeng.client.gui.implementations.GuiCraftingCPU; import appeng.client.gui.implementations.GuiMEMonitorable; import appeng.client.gui.implementations.GuiNetworkStatus; import appeng.core.AELog; @@ -154,9 +154,9 @@ public class PacketMEInventoryUpdate extends AppEngPacket ( (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 ) diff --git a/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java b/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java index 99fd864b..0d4e4c6f 100644 --- a/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java +++ b/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java @@ -25,6 +25,7 @@ import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import appeng.core.CommonHelper; @@ -41,6 +42,7 @@ public class PacketPartPlacement extends AppEngPacket private int z; private int face; private float eyeHeight; + private EnumHand hand; // automatic. public PacketPartPlacement( final ByteBuf stream ) @@ -50,10 +52,11 @@ public class PacketPartPlacement extends AppEngPacket this.z = stream.readInt(); this.face = stream.readByte(); this.eyeHeight = stream.readFloat(); + this.hand = EnumHand.values()[ stream.readByte() ]; } // 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(); @@ -63,6 +66,7 @@ public class PacketPartPlacement extends AppEngPacket data.writeInt( pos.getZ() ); data.writeByte( face.ordinal() ); data.writeFloat( eyeHeight ); + data.writeByte( hand.ordinal() ); this.configureWrite( data ); } @@ -73,8 +77,7 @@ public class PacketPartPlacement extends AppEngPacket final EntityPlayerMP sender = (EntityPlayerMP) player; CommonHelper.proxy.updateRenderMode( sender ); PartPlacement.setEyeHeight( this.eyeHeight ); - //TODO 1.9.4 - 2 hands! Just do something! - 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 ); + 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 ); CommonHelper.proxy.updateRenderMode( null ); } } diff --git a/src/main/java/appeng/core/sync/packets/PacketValueConfig.java b/src/main/java/appeng/core/sync/packets/PacketValueConfig.java index a2fe1be3..53b4a49e 100644 --- a/src/main/java/appeng/core/sync/packets/PacketValueConfig.java +++ b/src/main/java/appeng/core/sync/packets/PacketValueConfig.java @@ -33,12 +33,13 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; import appeng.api.config.FuzzyMode; import appeng.api.config.Settings; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigurableObject; -import appeng.client.gui.implementations.GuICraftingCPU; +import appeng.client.gui.implementations.GuiCraftingCPU; import appeng.container.AEBaseContainer; import appeng.container.implementations.ContainerCellWorkbench; import appeng.container.implementations.ContainerCraftConfirm; @@ -97,10 +98,23 @@ public class PacketValueConfig extends AppEngPacket { final Container c = player.openContainer; - //TODO 1.9.4 - 2 hands! Just do something! - if( this.Name.equals( "Item" ) && player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IMouseWheelItem ) + 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 ) ) ) { - 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(); 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" ) ) { 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 ) diff --git a/src/main/java/appeng/debug/ToolReplicatorCard.java b/src/main/java/appeng/debug/ToolReplicatorCard.java index 45fa8c8c..b2c0f578 100644 --- a/src/main/java/appeng/debug/ToolReplicatorCard.java +++ b/src/main/java/appeng/debug/ToolReplicatorCard.java @@ -139,6 +139,7 @@ public class ToolReplicatorCard extends AEBaseItem final BlockPos d = new BlockPos( i + rel_x, j + rel_y, k + rel_z ); final IBlockState state = src_w.getBlockState( p ); final Block blk = state.getBlock(); + final IBlockState prev = world.getBlockState( d ); world.setBlockState( d, state ); if( blk != null && blk.hasTileEntity( state ) ) @@ -150,8 +151,7 @@ public class ToolReplicatorCard extends AEBaseItem nte.readFromNBT( (NBTTagCompound) data.copy() ); world.setTileEntity( d, nte ); } - //TODO 1.9.4 - markBlockForUpdate => ? - world.markBlockForUpdate( d ); + world.notifyBlockUpdate( d, prev, state, 3 ); } } } diff --git a/src/main/java/appeng/entity/EntityFloatingItem.java b/src/main/java/appeng/entity/EntityFloatingItem.java index 217612e4..37074795 100644 --- a/src/main/java/appeng/entity/EntityFloatingItem.java +++ b/src/main/java/appeng/entity/EntityFloatingItem.java @@ -28,11 +28,11 @@ import net.minecraft.world.World; public final class EntityFloatingItem extends EntityItem { - private final Entity parent; + private final ICanDie parent; private int superDeath = 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 ); this.motionX = this.motionY = this.motionZ = 0.0d; @@ -46,7 +46,7 @@ public final class EntityFloatingItem extends EntityItem @Override public void onUpdate() { - if( !this.isDead && this.parent.isDead ) + if( !this.isDead && this.parent.isDead() ) { this.setDead(); } diff --git a/src/main/java/appeng/entity/ICanDie.java b/src/main/java/appeng/entity/ICanDie.java new file mode 100644 index 00000000..30eb84c6 --- /dev/null +++ b/src/main/java/appeng/entity/ICanDie.java @@ -0,0 +1,8 @@ +package appeng.entity; + +public interface ICanDie +{ + + public boolean isDead(); + +} diff --git a/src/main/java/appeng/hooks/DispenserMatterCannon.java b/src/main/java/appeng/hooks/DispenserMatterCannon.java index 0bc904e3..b7e7a9a6 100644 --- a/src/main/java/appeng/hooks/DispenserMatterCannon.java +++ b/src/main/java/appeng/hooks/DispenserMatterCannon.java @@ -65,7 +65,7 @@ public final class DispenserMatterCannon extends BehaviorDefaultDispenseItem p.posY += dir.yOffset; p.posZ += dir.zOffset; - dispensedItem = tm.onItemRightClick( dispensedItem, w, p ); + dispensedItem = tm.onItemRightClick( dispensedItem, w, p, null ).getResult(); } } return dispensedItem; diff --git a/src/main/java/appeng/items/misc/ItemPaintBall.java b/src/main/java/appeng/items/misc/ItemPaintBall.java index 5856dcf6..4932c6ce 100644 --- a/src/main/java/appeng/items/misc/ItemPaintBall.java +++ b/src/main/java/appeng/items/misc/ItemPaintBall.java @@ -22,12 +22,17 @@ package appeng.items.misc; import java.util.EnumSet; import java.util.List; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemMeshDefinition; 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.item.Item; 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.SideOnly; @@ -36,6 +41,7 @@ import appeng.client.ClientHelper; import appeng.core.features.AEFeature; import appeng.core.localization.GuiText; import appeng.items.AEBaseItem; +import appeng.util.Platform; public class ItemPaintBall extends AEBaseItem @@ -47,6 +53,11 @@ public class ItemPaintBall extends AEBaseItem { this.setFeature( EnumSet.of( AEFeature.PaintBalls ) ); this.setHasSubtypes( true ); + + if( Platform.isClient() ) + { + Minecraft.getMinecraft().getItemColors().registerItemColorHandler( new ItemPaintBallColor(), this ); + } } @Override @@ -82,29 +93,6 @@ public class ItemPaintBall extends AEBaseItem 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 ) { int dmg = is.getItemDamage(); @@ -146,4 +134,32 @@ public class ItemPaintBall extends AEBaseItem final int dmg = is.getItemDamage(); 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; + } + } + + } } diff --git a/src/main/java/appeng/items/parts/ItemFacade.java b/src/main/java/appeng/items/parts/ItemFacade.java index 718070ae..a522d2c7 100644 --- a/src/main/java/appeng/items/parts/ItemFacade.java +++ b/src/main/java/appeng/items/parts/ItemFacade.java @@ -71,7 +71,7 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte @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 ) { - 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 @@ -169,10 +169,9 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte ds[0] = Item.getIdFromItem( l.getItem() ); ds[1] = metadata; data.setIntArray( "x", ds ); - //TODO 1.9.4 - UniqueIdentifier => ResourceLocation ??? - final UniqueIdentifier ui = GameRegistry.findUniqueIdentifierFor( l.getItem() ); - data.setString( "modid", ui.modId ); - data.setString( "itemname", ui.name ); + final ResourceLocation ui = Item.REGISTRY.getNameForObject( l.getItem() ); + data.setString( "modid", ui.getResourceDomain() ); + data.setString( "itemname", ui.getResourcePath() ); is.setTagCompound( data ); return is; } diff --git a/src/main/java/appeng/items/parts/ItemMultiPart.java b/src/main/java/appeng/items/parts/ItemMultiPart.java index 8d6320d6..455c84ff 100644 --- a/src/main/java/appeng/items/parts/ItemMultiPart.java +++ b/src/main/java/appeng/items/parts/ItemMultiPart.java @@ -186,7 +186,7 @@ public final class ItemMultiPart extends AEBaseItem implements IPartItem, IItemG 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 diff --git a/src/main/java/appeng/items/tools/ToolNetworkTool.java b/src/main/java/appeng/items/tools/ToolNetworkTool.java index 8acc3687..30fb23b0 100644 --- a/src/main/java/appeng/items/tools/ToolNetworkTool.java +++ b/src/main/java/appeng/items/tools/ToolNetworkTool.java @@ -124,7 +124,7 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench / 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; } @@ -135,12 +135,10 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench / 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 ) { - //TODO 1.9.4 - 2 hands! Just do something! - final EnumHand hand = EnumHand.MAIN_HAND; if( !Platform.hasPermissions( new DimensionalCoord( w, pos ), p ) ) { return false; diff --git a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java index 93cd9a5e..ae594a8e 100644 --- a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java +++ b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java @@ -226,8 +226,7 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT @Override public ActionResult onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final EnumHand hand ) { - //TODO 1.9.4 - getRayTraceResultFromPlayer => ? - final RayTraceResult target = this.getRayTraceResultFromPlayer( w, p, true ); + final RayTraceResult target = this.rayTrace( w, p, true ); if( target == null ) { diff --git a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java index 05963c62..5a77964c 100644 --- a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java +++ b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java @@ -22,6 +22,8 @@ package appeng.items.tools.powered; import java.util.EnumSet; import java.util.List; +import javax.annotation.Nullable; + import com.google.common.base.Optional; import net.minecraft.block.Block; @@ -117,7 +119,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell } @Override - public ActionResult onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final EnumHand hand ) + public ActionResult onItemRightClick( final ItemStack item, final World w, final EntityPlayer p, final @Nullable EnumHand hand ) { if( this.getAECurrentPower( item ) > 1600 ) { diff --git a/src/main/java/appeng/loot/ChestLoot.java b/src/main/java/appeng/loot/ChestLoot.java new file mode 100644 index 00000000..105bf2f1 --- /dev/null +++ b/src/main/java/appeng/loot/ChestLoot.java @@ -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 ) 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 ) 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" ) ); + } + } + +} \ No newline at end of file diff --git a/src/main/java/appeng/parts/AEBasePart.java b/src/main/java/appeng/parts/AEBasePart.java index c1c885ad..93fe1efa 100644 --- a/src/main/java/appeng/parts/AEBasePart.java +++ b/src/main/java/appeng/parts/AEBasePart.java @@ -39,6 +39,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -493,39 +494,39 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, } @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 ) ) { return true; } - return this.onPartActivate( player, pos ); + return this.onPartActivate( player, hand, pos ); } @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 ) ) { 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; } - public boolean onPartShiftActivate( final EntityPlayer player, final Vec3d pos ) + public boolean onPartShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos ) { return false; } @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 ); } diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 6c3e54dc..a813748a 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Random; import java.util.Set; +import javax.annotation.Nullable; + import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -36,6 +38,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -178,7 +181,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I } @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 ) ) { @@ -216,7 +219,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I if( player != null ) { - bp.onPlacement( player, is, side ); + bp.onPlacement( player, hand, is, side ); } if( this.inWorld ) @@ -271,7 +274,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I if( player != null ) { - bp.onPlacement( player, is, side ); + bp.onPlacement( player, hand, is, side ); } if( this.inWorld ) @@ -802,12 +805,12 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I } @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 ); if( p != null && p.part != null ) { - return p.part.onActivate( player, pos ); + return p.part.onActivate( player, hand, pos ); } return false; } @@ -972,7 +975,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I else { 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 ) { p = this.getPart( side ); @@ -1073,7 +1076,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I else { this.removePart( side, true ); - side = this.addPart( iss, side, null ); + side = this.addPart( iss, side, null, null ); if( side != null ) { p = this.getPart( side ); diff --git a/src/main/java/appeng/parts/ICableBusContainer.java b/src/main/java/appeng/parts/ICableBusContainer.java index 8b0f61e1..826c7c7c 100644 --- a/src/main/java/appeng/parts/ICableBusContainer.java +++ b/src/main/java/appeng/parts/ICableBusContainer.java @@ -26,6 +26,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -47,7 +48,7 @@ public interface ICableBusContainer void onEntityCollision( Entity e ); - boolean activate( EntityPlayer player, Vec3d vecFromPool ); + boolean activate( EntityPlayer player, EnumHand hand, Vec3d vecFromPool ); void onNeighborChanged(); diff --git a/src/main/java/appeng/parts/NullCableBusContainer.java b/src/main/java/appeng/parts/NullCableBusContainer.java index 8903505d..af8b4b6d 100644 --- a/src/main/java/appeng/parts/NullCableBusContainer.java +++ b/src/main/java/appeng/parts/NullCableBusContainer.java @@ -26,6 +26,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -62,7 +63,7 @@ public class NullCableBusContainer implements ICableBusContainer } @Override - public boolean activate( final EntityPlayer player, final Vec3d vecFromPool ) + public boolean activate( final EntityPlayer player, final EnumHand hand, final Vec3d vecFromPool ) { return false; } diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index cee2c871..dec45c84 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -75,10 +75,8 @@ public class PartPlacement private final ThreadLocal placing = new ThreadLocal(); 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 ) { return false; @@ -140,7 +138,7 @@ public class PartPlacement else { player.swingArm( hand ); - NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) ); + NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); } return true; } @@ -191,7 +189,7 @@ public class PartPlacement else { player.swingArm( hand ); - NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) ); + NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); return true; } } @@ -229,11 +227,11 @@ public class PartPlacement final SelectedPart sPart = selectPart( player, host, mop.hitVec ); if( sPart != null && sPart.part != null ) { - if( sPart.part.onShiftActivate( player, mop.hitVec ) ) + if( sPart.part.onShiftActivate( player, hand, mop.hitVec ) ) { if( world.isRemote ) { - NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) ); + NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); } return true; } @@ -313,7 +311,7 @@ public class PartPlacement else { player.swingArm( hand ); - NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) ); + NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); return true; } } @@ -346,7 +344,7 @@ public class PartPlacement // 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; @@ -364,7 +362,7 @@ public class PartPlacement 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; } @@ -377,7 +375,7 @@ public class PartPlacement 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 ) { for( final Block multiPartBlock : multiPart.maybeBlock().asSet() ) @@ -401,7 +399,7 @@ public class PartPlacement else { player.swingArm( hand ); - NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ) ) ); + NetworkHandler.instance.sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); } return true; } @@ -482,7 +480,7 @@ public class PartPlacement 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 ); 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 ); this.wasCanceled = true; diff --git a/src/main/java/appeng/parts/automation/PartExportBus.java b/src/main/java/appeng/parts/automation/PartExportBus.java index 1d17837f..035770e6 100644 --- a/src/main/java/appeng/parts/automation/PartExportBus.java +++ b/src/main/java/appeng/parts/automation/PartExportBus.java @@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableSet; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraftforge.fml.relauncher.Side; @@ -234,7 +235,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest } @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() ) { diff --git a/src/main/java/appeng/parts/automation/PartFormationPlane.java b/src/main/java/appeng/parts/automation/PartFormationPlane.java index eb06233f..ebc576e8 100644 --- a/src/main/java/appeng/parts/automation/PartFormationPlane.java +++ b/src/main/java/appeng/parts/automation/PartFormationPlane.java @@ -349,7 +349,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine } @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() ) { @@ -410,9 +410,6 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine @Override 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 ) { return input; @@ -466,29 +463,29 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine 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 ) { - 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 ) { - 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 ) { - 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; } 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; } } diff --git a/src/main/java/appeng/parts/automation/PartImportBus.java b/src/main/java/appeng/parts/automation/PartImportBus.java index 97116ec9..8a6a5973 100644 --- a/src/main/java/appeng/parts/automation/PartImportBus.java +++ b/src/main/java/appeng/parts/automation/PartImportBus.java @@ -21,6 +21,7 @@ package appeng.parts.automation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraftforge.fml.relauncher.Side; @@ -144,7 +145,7 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin } @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() ) { diff --git a/src/main/java/appeng/parts/automation/PartLevelEmitter.java b/src/main/java/appeng/parts/automation/PartLevelEmitter.java index ee1eedd5..5611e841 100644 --- a/src/main/java/appeng/parts/automation/PartLevelEmitter.java +++ b/src/main/java/appeng/parts/automation/PartLevelEmitter.java @@ -22,6 +22,7 @@ package appeng.parts.automation; import java.util.Collection; import java.util.Random; +import net.minecraft.client.renderer.BlockModelRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; @@ -30,6 +31,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -595,8 +597,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH renderer.setRenderAllFaces( true ); - //TODO 1.9.4 - getMixedBrightnessForBlock => ? - renderer.setBrightness( rh.getBlock().getMixedBrightnessForBlock( this.getHost().getTile().getWorld(), pos ) ); + renderer.setBrightness( rh.getBlock().getPackedLightmapCoords( this.getHost().getTile().getWorld().getBlockState( pos ), this.getHost().getTile().getWorld(), pos ) ); renderer.setColorOpaque_F( 1.0F, 1.0F, 1.0F ); this.renderTorchAtAngle( pos.getX(), pos.getY(), pos.getZ(), renderer ); @@ -643,7 +644,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH } @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() ) { diff --git a/src/main/java/appeng/parts/misc/PartCableAnchor.java b/src/main/java/appeng/parts/misc/PartCableAnchor.java index fb248669..42020385 100644 --- a/src/main/java/appeng/parts/misc/PartCableAnchor.java +++ b/src/main/java/appeng/parts/misc/PartCableAnchor.java @@ -32,6 +32,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -232,13 +233,13 @@ public class PartCableAnchor implements IPart } @Override - public boolean onActivate( final EntityPlayer player, final Vec3d pos ) + public boolean onActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos ) { return false; } @Override - public boolean onShiftActivate( final EntityPlayer player, final Vec3d pos ) + public boolean onShiftActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos ) { return false; } @@ -262,7 +263,7 @@ public class PartCableAnchor implements IPart } @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 ) { } diff --git a/src/main/java/appeng/parts/misc/PartInterface.java b/src/main/java/appeng/parts/misc/PartInterface.java index 133054d5..442df321 100644 --- a/src/main/java/appeng/parts/misc/PartInterface.java +++ b/src/main/java/appeng/parts/misc/PartInterface.java @@ -33,6 +33,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.text.ITextComponent; @@ -200,7 +201,7 @@ public class PartInterface extends PartBasicState implements IGridTickable, ISto } @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() ) { diff --git a/src/main/java/appeng/parts/misc/PartStorageBus.java b/src/main/java/appeng/parts/misc/PartStorageBus.java index c02ca8c9..07ae6cd7 100644 --- a/src/main/java/appeng/parts/misc/PartStorageBus.java +++ b/src/main/java/appeng/parts/misc/PartStorageBus.java @@ -28,6 +28,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraftforge.fml.relauncher.Side; @@ -317,7 +318,7 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC } @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() ) { diff --git a/src/main/java/appeng/parts/misc/PartToggleBus.java b/src/main/java/appeng/parts/misc/PartToggleBus.java index eaf5fad0..c4e524c2 100644 --- a/src/main/java/appeng/parts/misc/PartToggleBus.java +++ b/src/main/java/appeng/parts/misc/PartToggleBus.java @@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -226,9 +227,9 @@ public class PartToggleBus extends PartBasicState } @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 ); } diff --git a/src/main/java/appeng/parts/networking/PartCable.java b/src/main/java/appeng/parts/networking/PartCable.java index f069893d..110be776 100644 --- a/src/main/java/appeng/parts/networking/PartCable.java +++ b/src/main/java/appeng/parts/networking/PartCable.java @@ -145,7 +145,7 @@ public class PartCable extends AEBasePart implements IPartCable } this.getHost().removePart( AEPartLocation.INTERNAL, true ); - this.getHost().addPart( newPart, AEPartLocation.INTERNAL, who ); + this.getHost().addPart( newPart, AEPartLocation.INTERNAL, who, null ); return true; } } diff --git a/src/main/java/appeng/parts/networking/PartQuartzFiber.java b/src/main/java/appeng/parts/networking/PartQuartzFiber.java index 2df2e2d7..6f83bb80 100644 --- a/src/main/java/appeng/parts/networking/PartQuartzFiber.java +++ b/src/main/java/appeng/parts/networking/PartQuartzFiber.java @@ -28,6 +28,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -146,9 +147,9 @@ public class PartQuartzFiber extends AEBasePart implements IEnergyGridProvider } @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 ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java index 12f4126c..f6b07fbc 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java @@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraftforge.fml.relauncher.Side; @@ -227,7 +228,7 @@ public abstract class PartP2PTunnel extends PartBasicSt } @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(); @@ -251,7 +252,7 @@ public abstract class PartP2PTunnel extends PartBasicSt if( testPart instanceof PartP2PTunnel ) { 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 ); if( newBus instanceof PartP2PTunnel ) @@ -365,7 +366,7 @@ public abstract class PartP2PTunnel extends PartBasicSt final long myFreq = this.getFrequency(); 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 ); if( newBus instanceof PartP2PTunnel ) @@ -394,7 +395,7 @@ public abstract class PartP2PTunnel extends PartBasicSt } @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(); if( is != null && is.getItem() instanceof IMemoryCard ) diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java index 32243289..00b6ce40 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java @@ -27,6 +27,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import appeng.api.AEApi; import appeng.api.exceptions.FailedConnection; @@ -125,9 +126,9 @@ public class PartP2PTunnelME extends PartP2PTunnel implements I } @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 ); } diff --git a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java index 843b84ac..bdca4d40 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java @@ -160,11 +160,8 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements } @Override - public boolean onPartActivate( final EntityPlayer player, final Vec3d pos ) - { - //TODO 1.9.4 - 2 hands! Just do something! - final EnumHand hand = EnumHand.MAIN_HAND; - + public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos ) + { if( Platform.isClient() ) { return true; diff --git a/src/main/java/appeng/parts/reporting/AbstractPartReporting.java b/src/main/java/appeng/parts/reporting/AbstractPartReporting.java index ef810870..b005844d 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartReporting.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartReporting.java @@ -27,6 +27,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; @@ -189,7 +190,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM } @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(); @@ -225,14 +226,14 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM } else { - return super.onPartActivate( player, pos ); + return super.onPartActivate( player, hand, pos ); } } @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 ); if( side == AEPartLocation.UP ) diff --git a/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java b/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java index 72f1fbad..22f7aded 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartTerminal.java @@ -25,6 +25,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.Vec3d; import appeng.api.config.Settings; @@ -110,9 +111,9 @@ public abstract class AbstractPartTerminal extends AbstractPartDisplay implement } @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() ) { diff --git a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java index 45a77f38..bbf5b8ba 100644 --- a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java +++ b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java @@ -55,11 +55,8 @@ public class PartConversionMonitor extends AbstractPartMonitor } @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() ) { return true; diff --git a/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java b/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java index e63f5f39..d62a07a3 100644 --- a/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java @@ -21,6 +21,7 @@ package appeng.parts.reporting; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.Vec3d; import appeng.client.texture.CableBusTextures; @@ -40,9 +41,9 @@ public class PartInterfaceTerminal extends AbstractPartDisplay } @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() ) { diff --git a/src/main/java/appeng/recipes/RecipeHandler.java b/src/main/java/appeng/recipes/RecipeHandler.java index 45f28b29..b66071cc 100644 --- a/src/main/java/appeng/recipes/RecipeHandler.java +++ b/src/main/java/appeng/recipes/RecipeHandler.java @@ -40,8 +40,8 @@ import com.google.common.collect.HashMultimap; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.LoaderState; -import net.minecraftforge.fml.common.registry.GameRegistry; import appeng.api.AEApi; import appeng.api.definitions.IBlocks; @@ -118,11 +118,10 @@ public class RecipeHandler implements IRecipeHandler { Preconditions.checkNotNull( is ); - //TODO 1.9.4 - UniqueIdentifier => ResourceLocation - final UniqueIdentifier id = GameRegistry.findUniqueIdentifierFor( is.getItem() ); - String realName = id.modId + ':' + id.name; + final ResourceLocation id = Item.REGISTRY.getNameForObject( is.getItem() ); + String realName = id.toString(); - 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" ); } diff --git a/src/main/java/appeng/spatial/CachedPlane.java b/src/main/java/appeng/spatial/CachedPlane.java index 4d0933d3..85b6cbd4 100644 --- a/src/main/java/appeng/spatial/CachedPlane.java +++ b/src/main/java/appeng/spatial/CachedPlane.java @@ -312,8 +312,7 @@ public class CachedPlane if( c.c.isLoaded() ) { this.world.addTileEntity( te ); - //TODO 1.9.4 - markBlockForUpdate => ? - this.world.markBlockForUpdate( pos ); + this.world.notifyBlockUpdate( pos, this.world.getBlockState( pos ), this.world.getBlockState( pos ), z ); } } diff --git a/src/main/java/appeng/spatial/DefaultSpatialHandler.java b/src/main/java/appeng/spatial/DefaultSpatialHandler.java index dd0a96b8..011e448d 100644 --- a/src/main/java/appeng/spatial/DefaultSpatialHandler.java +++ b/src/main/java/appeng/spatial/DefaultSpatialHandler.java @@ -55,8 +55,7 @@ public class DefaultSpatialHandler implements IMovableHandler if( c.isLoaded() ) { w.addTileEntity( te ); - //TODO 1.9.4 - markBlockForUpdate => ? - w.markBlockForUpdate( newPosition ); + w.notifyBlockUpdate( newPosition, w.getBlockState( newPosition ), w.getBlockState( newPosition ), 0 ); } } } diff --git a/src/main/java/appeng/spatial/StorageHelper.java b/src/main/java/appeng/spatial/StorageHelper.java index 161ccc6f..b0c36cfb 100644 --- a/src/main/java/appeng/spatial/StorageHelper.java +++ b/src/main/java/appeng/spatial/StorageHelper.java @@ -19,6 +19,7 @@ package appeng.spatial; +import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; @@ -54,6 +55,7 @@ public class StorageHelper return instance; } + //TODO 1.9.4 aftermath - Check that this still works. /** * Mostly from dimensional doors.. which mostly got it form X-Comp. * @@ -87,28 +89,30 @@ public class StorageHelper { return entity; } - - //TODO 1.9.4 - Multiple passangers & cell transfers. Take a look at portals. - // Is something riding? Handle it first. - if( entity.isBeingRidden() ) + // Are we riding something? Teleport it instead. + 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(); - if( cart != null ) + + // Is something riding us? Handle it first. + final List passangers = entity.getPassengers(); + final List passangersOnOtherSide = new ArrayList<>(); + if( !passangers.isEmpty() ) { - entity.dismountRidingEntity(); - cart = this.teleportEntity( cart, link ); - // We keep track of both so we can remount them on the other side. + for( Entity passanger : passangers ) + { + passanger.dismountRidingEntity(); + passangersOnOtherSide.add( teleportEntity( passanger, link ) ); + } + // We keep track of all so we can remount them on the other side. } // 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( diffDestination ) + if( newWorld != oldWorld ) { if( player != null ) { @@ -121,58 +125,21 @@ public class StorageHelper } else { - //TODO 1.9.4 - Whole entity transfer part, we now have changeDimension method. Evaluate it and remove this s... - 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.changeDimension( newWorld.provider.getDimension() ); } } - entity.worldObj.updateEntityWithOptionalForce( entity, false ); - - if( cart != null ) + if( !passangersOnOtherSide.isEmpty() ) { if( player != null ) { entity.worldObj.updateEntityWithOptionalForce( entity, true ); } - entity.startRiding( cart, false ); + for( Entity passanger : passangersOnOtherSide ) + { + passanger.startRiding( entity, true ); + } } return entity; diff --git a/src/main/java/appeng/tile/AEBaseTile.java b/src/main/java/appeng/tile/AEBaseTile.java index 4851b423..abf45e47 100644 --- a/src/main/java/appeng/tile/AEBaseTile.java +++ b/src/main/java/appeng/tile/AEBaseTile.java @@ -74,6 +74,8 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, private EnumFacing forward = null; private EnumFacing up = null; + private IBlockState state; + @Override 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 ); } + @Nonnull + public IBlockState getBlockState(){ + if( state == null ) + { + state = worldObj.getBlockState( getPos() ); + } + return state; + } + /** * for dormant chunk cache. */ @@ -299,8 +310,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, if( this.worldObj != null ) { AELog.blockUpdate( this.pos, this ); - //TODO 1.9.4 - markBlockForUpdate => ? - this.worldObj.markBlockForUpdate( this.pos ); + this.worldObj.notifyBlockUpdate( this.pos, getBlockState(), getBlockState(), 3 ); } } } diff --git a/src/main/java/appeng/tile/networking/TileCableBus.java b/src/main/java/appeng/tile/networking/TileCableBus.java index cb645f93..19cc1cde 100644 --- a/src/main/java/appeng/tile/networking/TileCableBus.java +++ b/src/main/java/appeng/tile/networking/TileCableBus.java @@ -30,6 +30,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -240,9 +241,9 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl } @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 diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 5b05a85c..1c1f7ee4 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -60,6 +60,7 @@ import net.minecraft.nbt.NBTTagString; import net.minecraft.network.Packet; import net.minecraft.network.play.server.SPacketChunkData; import net.minecraft.server.management.PlayerChunkMap; +import net.minecraft.server.management.PlayerChunkMapEntry; import net.minecraft.stats.Achievement; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; @@ -160,9 +161,7 @@ public class Platform private static final Random RANDOM_GENERATOR = new Random(); private static final WeakHashMap FAKE_PLAYERS = new WeakHashMap(); private static Field tagList; - private static Class playerInstance; - private static Method getOrCreateChunkWatcher; - private static Method sendToAllPlayersWatchingChunk; + private static Method getEntry; public static Random getRandom() { @@ -2129,7 +2128,6 @@ public class Platform 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 ) { try @@ -2137,27 +2135,17 @@ public class Platform final WorldServer ws = (WorldServer) c.getWorld(); 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 ) { - Platform.playerInstance = playerInstance.getClass(); - - 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 ) ); - } + playerInstance.sendPacket( new SPacketChunkData( c, verticalBits ) ); } } } diff --git a/src/main/java/appeng/util/item/AEItemDef.java b/src/main/java/appeng/util/item/AEItemDef.java index 90acae08..672bad95 100644 --- a/src/main/java/appeng/util/item/AEItemDef.java +++ b/src/main/java/appeng/util/item/AEItemDef.java @@ -24,6 +24,7 @@ import java.util.List; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -48,9 +49,8 @@ public class AEItemDef private String displayName; @SideOnly( Side.CLIENT ) private List tooltip; - //TODO 1.9.4 - UniqueIdentifier => ? @SideOnly( Side.CLIENT ) - private UniqueIdentifier uniqueID; + private ResourceLocation uniqueID; private OreReference isOre; public AEItemDef( final Item it ) @@ -176,12 +176,12 @@ public class AEItemDef return tooltip; } - UniqueIdentifier getUniqueID() + ResourceLocation getUniqueID() { return this.uniqueID; } - UniqueIdentifier setUniqueID( final UniqueIdentifier uniqueID ) + ResourceLocation setUniqueID( final ResourceLocation uniqueID ) { this.uniqueID = uniqueID; return uniqueID; diff --git a/src/main/java/appeng/util/item/AEItemStack.java b/src/main/java/appeng/util/item/AEItemStack.java index 5e50a169..06d830df 100644 --- a/src/main/java/appeng/util/item/AEItemStack.java +++ b/src/main/java/appeng/util/item/AEItemStack.java @@ -35,7 +35,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; 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.SideOnly; @@ -591,7 +591,6 @@ public final class AEItemStack extends AEStack implements IAEItemS return this.getDefinition().getDisplayName(); } - //TODO 1.9.4 - UniqueIdentifier => ResourceLocation ? @SideOnly( Side.CLIENT ) public String getModID() { @@ -600,17 +599,17 @@ public final class AEItemStack extends AEStack implements IAEItemS 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 ) { return "** Null"; } - return uniqueIdentifier.modId == null ? "** Null" : uniqueIdentifier.modId; + return uniqueIdentifier.getResourceDomain() == null ? "** Null" : uniqueIdentifier.getResourceDomain(); } IAEItemStack getLow( final FuzzyMode fuzzy, final boolean ignoreMeta )