diff --git a/src/api/java/appeng/api/config/Actionable.java b/src/api/java/appeng/api/config/Actionable.java index 8e5f1f542..f8edf0cf1 100644 --- a/src/api/java/appeng/api/config/Actionable.java +++ b/src/api/java/appeng/api/config/Actionable.java @@ -24,15 +24,30 @@ package appeng.api.config; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; + + public enum Actionable { /** * Perform the intended action. */ - MODULATE, + MODULATE( FluidAction.EXECUTE ), /** * Pretend to perform the action. */ - SIMULATE + SIMULATE( FluidAction.SIMULATE ); + + private final FluidAction fluidAction; + + Actionable( FluidAction fluidAction ) + { + this.fluidAction = fluidAction; + } + + public FluidAction getFluidAction() + { + return fluidAction; + } } diff --git a/src/api/java/appeng/api/networking/IGridNode.java b/src/api/java/appeng/api/networking/IGridNode.java index 0bb68f156..1ec23bb3d 100644 --- a/src/api/java/appeng/api/networking/IGridNode.java +++ b/src/api/java/appeng/api/networking/IGridNode.java @@ -29,6 +29,7 @@ import java.util.EnumSet; import javax.annotation.Nonnull; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.world.IWorld; import net.minecraft.world.World; import appeng.api.IAppEngApi; @@ -91,7 +92,7 @@ public interface IGridNode * @return the world the node is located in */ @Nonnull - World getWorld(); + IWorld getWorld(); /** * @return a set of the connected sides, INTERNAL represents an invisible connection @@ -169,4 +170,4 @@ public interface IGridNode * @param playerID new player id */ void setPlayerID( int playerID ); -} \ No newline at end of file +} diff --git a/src/api/java/appeng/api/parts/IPartBakedModel.java b/src/api/java/appeng/api/parts/IPartBakedModel.java index 2f1f7b9ae..14f10c737 100644 --- a/src/api/java/appeng/api/parts/IPartBakedModel.java +++ b/src/api/java/appeng/api/parts/IPartBakedModel.java @@ -3,6 +3,7 @@ package appeng.api.parts; import java.util.List; +import java.util.Random; import javax.annotation.Nullable; @@ -11,5 +12,5 @@ import net.minecraft.client.renderer.model.BakedQuad; public interface IPartBakedModel { - List getPartQuads( @Nullable Long partFlags, long rand ); + List getPartQuads( @Nullable Long partFlags, Random rand ); } diff --git a/src/api/java/appeng/api/parts/IPartHelper.java b/src/api/java/appeng/api/parts/IPartHelper.java index ffe9a7c58..b7d33f538 100644 --- a/src/api/java/appeng/api/parts/IPartHelper.java +++ b/src/api/java/appeng/api/parts/IPartHelper.java @@ -26,7 +26,7 @@ package appeng.api.parts; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -46,7 +46,8 @@ public interface IPartHelper * * @return true if placing was successful */ - ActionResult placeBus( ItemStack is, BlockPos pos, Direction side, PlayerEntity player, Hand hand, World world ); + //TODO, this should probably take ItemStack + ItemUseContext + ActionResultType placeBus( ItemStack is, BlockPos pos, Direction side, PlayerEntity player, Hand hand, World world ); /** * @return the render mode diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 918a71294..a02af52f4 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -75,6 +75,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; +//TODO, pass generic up here for Container public abstract class AEBaseGui extends ContainerScreen { private final List meSlots = new ArrayList<>(); diff --git a/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java b/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java index 8be6a2125..4eee523d9 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java +++ b/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java @@ -71,7 +71,7 @@ public class GuiUpgradeable extends AEBaseGui protected boolean hasToolbox() { - return ( (ContainerUpgradeable) this.inventorySlots ).hasToolbox(); + return ( (ContainerUpgradeable) this.container ).hasToolbox(); } @Override diff --git a/src/main/java/appeng/client/gui/widgets/GuiTabButton.java b/src/main/java/appeng/client/gui/widgets/GuiTabButton.java index 3a3fc9a8e..deb7a62e2 100644 --- a/src/main/java/appeng/client/gui/widgets/GuiTabButton.java +++ b/src/main/java/appeng/client/gui/widgets/GuiTabButton.java @@ -22,6 +22,7 @@ package appeng.client.gui.widgets; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderItem; import net.minecraft.item.ItemStack; @@ -30,13 +31,13 @@ import net.minecraft.util.ResourceLocation; public class GuiTabButton extends Button implements ITooltip { - private final RenderItem itemRenderer; + private final ItemRenderer itemRenderer; private final String message; private int hideEdge = 0; private int myIcon = -1; private ItemStack myItem; - public GuiTabButton( final int x, final int y, final int ico, final String message, final RenderItem ir ) + public GuiTabButton( final int x, final int y, final int ico, final String message, final ItemRenderer ir ) { super( 0, 0, 16, "" ); @@ -58,7 +59,7 @@ public class GuiTabButton extends Button implements ITooltip * @param message mouse over message * @param ir renderer */ - public GuiTabButton( final int x, final int y, final ItemStack ico, final String message, final RenderItem ir ) + public GuiTabButton( final int x, final int y, final ItemStack ico, final String message, final ItemRenderer ir ) { super( 0, 0, 16, "" ); this.x = x; diff --git a/src/main/java/appeng/client/render/FacadeItemModel.java b/src/main/java/appeng/client/render/FacadeItemModel.java index 20e14bb8f..3a4c9a0f1 100644 --- a/src/main/java/appeng/client/render/FacadeItemModel.java +++ b/src/main/java/appeng/client/render/FacadeItemModel.java @@ -21,15 +21,18 @@ package appeng.client.render; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; -import net.minecraft.client.renderer.block.model.IBakedModel; +import com.mojang.datafixers.util.Pair; + +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.common.model.IModelState; import appeng.client.render.cablebus.FacadeBuilder; import appeng.core.AppEng; @@ -39,47 +42,29 @@ import appeng.core.AppEng; * The model class for facades. Since facades wrap existing models, they don't declare any dependencies here other * than the cable anchor. */ -public class FacadeItemModel implements IModel +public class FacadeItemModel implements IUnbakedModel { // We use this to get the default item transforms and make our lives easier private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/facade_base" ); - private IModel getBaseModel() - { - try - { - return ModelLoaderRegistry.getModel( MODEL_BASE ); - } - catch( Exception e ) - { - throw new RuntimeException( e ); - } - } - @Override public Collection getDependencies() { - return Collections.emptyList(); + return Collections.singleton( MODEL_BASE ); } @Override - public Collection getTextures() + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) { return Collections.emptyList(); } @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { - IBakedModel bakedBaseModel = this.getBaseModel().bake( state, format, bakedTextureGetter ); + IBakedModel bakedBaseModel = modelBakeryIn.getBakedModel( MODEL_BASE, transformIn, spriteGetterIn ); FacadeBuilder facadeBuilder = new FacadeBuilder(); return new FacadeDispatcherBakedModel( bakedBaseModel, facadeBuilder ); } - - @Override - public IModelState getDefaultState() - { - return this.getBaseModel().getDefaultState(); - } } diff --git a/src/main/java/appeng/client/render/cablebus/CubeBuilder.java b/src/main/java/appeng/client/render/cablebus/CubeBuilder.java index 096ccaab4..3dcd40590 100644 --- a/src/main/java/appeng/client/render/cablebus/CubeBuilder.java +++ b/src/main/java/appeng/client/render/cablebus/CubeBuilder.java @@ -29,13 +29,10 @@ import com.google.common.base.Preconditions; import net.minecraft.client.renderer.Vector4f; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.util.Direction; -import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; - -import appeng.client.render.VertexFormats; +import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; /** @@ -44,8 +41,6 @@ import appeng.client.render.VertexFormats; public class CubeBuilder { - private VertexFormat format; - private final List output; private final EnumMap textures = new EnumMap<>( Direction.class ); @@ -62,15 +57,14 @@ public class CubeBuilder private boolean renderFullBright; - public CubeBuilder( VertexFormat format, List output ) + public CubeBuilder( List output ) { this.output = output; - this.format = format; } - public CubeBuilder( VertexFormat format ) + public CubeBuilder() { - this( format, new ArrayList<>( 6 ) ); + this( new ArrayList<>( 6 ) ); } public void addCube( float x1, float y1, float z1, float x2, float y2, float z2 ) @@ -82,49 +76,15 @@ public class CubeBuilder y2 /= 16.0f; z2 /= 16.0f; - // If brightness is forced to specific values, extend the vertex format to contain the multi-texturing lightmap - // offset - VertexFormat savedFormat = null; - if( this.renderFullBright ) - { - savedFormat = this.format; - this.format = VertexFormats.getFormatWithLightMap( this.format ); - } - for( Direction face : this.drawFaces ) { this.putFace( face, x1, y1, z1, x2, y2, z2 ); } - - // Restore old format - if( savedFormat != null ) - { - this.format = savedFormat; - } } public void addQuad( Direction face, float x1, float y1, float z1, float x2, float y2, float z2 ) { - // If brightness is forced to specific values, extend the vertex format to contain the multi-texturing lightmap - // offset - VertexFormat savedFormat = null; - if( this.renderFullBright ) - { - savedFormat = this.format; - this.format = new VertexFormat( savedFormat ); - if( !this.format.getElements().contains( DefaultVertexFormats.TEX_2S ) ) - { - this.format.addElement( DefaultVertexFormats.TEX_2S ); - } - } - this.putFace( face, x1, y1, z1, x2, y2, z2 ); - - // Restore old format - if( savedFormat != null ) - { - this.format = savedFormat; - } } private static final class UvVector @@ -140,8 +100,7 @@ public class CubeBuilder TextureAtlasSprite texture = this.textures.get( face ); - UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder( this.format ); - builder.setTexture( texture ); + BakedQuadBuilder builder = new BakedQuadBuilder( texture ); builder.setQuadOrientation( face ); builder.setQuadTint( -1 ); builder.setApplyDiffuseLighting( true ); @@ -152,10 +111,10 @@ public class CubeBuilder Vector4f customUv = this.customUv.get( face ); if( customUv != null ) { - uv.u1 = texture.getInterpolatedU( customUv.x ); - uv.v1 = texture.getInterpolatedV( customUv.y ); - uv.u2 = texture.getInterpolatedU( customUv.z ); - uv.v2 = texture.getInterpolatedV( customUv.w ); + uv.u1 = texture.getInterpolatedU( customUv.getX() ); + uv.v1 = texture.getInterpolatedV( customUv.getY() ); + uv.u2 = texture.getInterpolatedU( customUv.getZ() ); + uv.v2 = texture.getInterpolatedV( customUv.getW() ); } else if( this.useStandardUV ) { @@ -303,7 +262,7 @@ public class CubeBuilder } // uv.u1, uv.v1 - private void putVertexTL( UnpackedBakedQuad.Builder builder, Direction face, float x, float y, float z, UvVector uv ) + private void putVertexTL( BakedQuadBuilder builder, Direction face, float x, float y, float z, UvVector uv ) { float u, v; @@ -332,7 +291,7 @@ public class CubeBuilder } // uv.u2, uv.v1 - private void putVertexTR( UnpackedBakedQuad.Builder builder, Direction face, float x, float y, float z, UvVector uv ) + private void putVertexTR( BakedQuadBuilder builder, Direction face, float x, float y, float z, UvVector uv ) { float u, v; @@ -360,7 +319,7 @@ public class CubeBuilder } // uv.u2, uv.v2 - private void putVertexBR( UnpackedBakedQuad.Builder builder, Direction face, float x, float y, float z, UvVector uv ) + private void putVertexBR( BakedQuadBuilder builder, Direction face, float x, float y, float z, UvVector uv ) { float u; @@ -391,7 +350,7 @@ public class CubeBuilder } // uv.u1, uv.v2 - private void putVertexBL( UnpackedBakedQuad.Builder builder, Direction face, float x, float y, float z, UvVector uv ) + private void putVertexBL( BakedQuadBuilder builder, Direction face, float x, float y, float z, UvVector uv ) { float u; @@ -421,13 +380,14 @@ public class CubeBuilder this.putVertex( builder, face, x, y, z, u, v ); } - private void putVertex( UnpackedBakedQuad.Builder builder, Direction face, float x, float y, float z, float u, float v ) + private void putVertex( BakedQuadBuilder builder, Direction face, float x, float y, float z, float u, float v ) { VertexFormat format = builder.getVertexFormat(); - for( int i = 0; i < format.getElementCount(); i++ ) + List elements = format.getElements(); + for( int i = 0; i < elements.size(); i++ ) { - VertexFormatElement e = format.getElement( i ); + VertexFormatElement e = elements.get( i ); switch( e.getUsage() ) { case POSITION: @@ -449,7 +409,7 @@ public class CubeBuilder { builder.put( i, u, v ); } - else + else if( e.getIndex() == 2 && renderFullBright ) { // Force Brightness to 15, this is for full bright mode // this vertex element will only be present in that case diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java index c9d4657c9..c24890a4a 100644 --- a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java @@ -4,6 +4,7 @@ package appeng.client.render.cablebus; import java.util.Collections; import java.util.List; +import java.util.Random; import java.util.concurrent.ExecutionException; import com.google.common.cache.Cache; @@ -11,10 +12,9 @@ import com.google.common.cache.CacheBuilder; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.Direction; import appeng.api.parts.IPartBakedModel; @@ -24,7 +24,6 @@ import appeng.util.Platform; public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedModel { - private final VertexFormat format; private final TextureAtlasSprite texture; private final static Cache> modelCache = CacheBuilder.newBuilder().maximumSize( 100 ).build(); @@ -36,14 +35,13 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode { 10, 4, 2 } }; - public P2PTunnelFrequencyBakedModel( final VertexFormat format, final TextureAtlasSprite texture ) + public P2PTunnelFrequencyBakedModel( final TextureAtlasSprite texture ) { - this.format = format; this.texture = texture; } @Override - public List getPartQuads( Long partFlags, long rand ) + public List getPartQuads( Long partFlags, Random rand ) { try { @@ -66,7 +64,7 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode } @Override - public List getQuads( BlockState state, Direction side, long rand ) + public List getQuads( BlockState state, Direction side, Random rand ) { if( side != null ) { @@ -78,7 +76,7 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode private List getQuadsForFrequency( final short frequency, final boolean active ) { final AEColor[] colors = Platform.p2p().toColors( frequency ); - final CubeBuilder cb = new CubeBuilder( this.format ); + final CubeBuilder cb = new CubeBuilder(); cb.setTexture( this.texture ); cb.useStandardUV(); @@ -122,6 +120,12 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode return false; } + @Override + public boolean func_230044_c_() + { + return false;//TODO + } + @Override public boolean isBuiltInRenderer() { diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java index 6e6fcb927..0e9fd7633 100644 --- a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java @@ -1,43 +1,54 @@ - package appeng.client.render.cablebus; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; +import javax.annotation.Nullable; -import net.minecraft.client.renderer.block.model.IBakedModel; +import com.mojang.datafixers.util.Pair; + +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.common.model.IModelState; import appeng.core.AppEng; -public class P2PTunnelFrequencyModel implements IModel +public class P2PTunnelFrequencyModel implements IUnbakedModel { - private static final ResourceLocation TEXTURE = new ResourceLocation( AppEng.MOD_ID, "parts/p2p_tunnel_frequency" ); + private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "parts/p2p_tunnel_frequency" ) ); @Override - public Collection getTextures() + public Collection getDependencies() { - return Collections.singletonList( TEXTURE ); + return Collections.emptyList(); } @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) + { + return Collections.singleton( TEXTURE ); + } + + @Nullable + @Override + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { try { - final TextureAtlasSprite texture = bakedTextureGetter.apply( TEXTURE ); - return new P2PTunnelFrequencyBakedModel( format, texture ); + final TextureAtlasSprite texture = spriteGetterIn.apply( TEXTURE ); + return new P2PTunnelFrequencyBakedModel( texture ); } catch( Exception e ) { throw new RuntimeException( e ); } } - } diff --git a/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java b/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java index 3b875fea4..8d581ea18 100644 --- a/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java +++ b/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java @@ -1,34 +1,29 @@ - package appeng.client.render.model; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Random; import java.util.concurrent.ExecutionException; - import javax.annotation.Nullable; -import javax.vecmath.Matrix4f; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.ImmutableList; import com.mojang.authlib.GameProfile; - -import org.apache.commons.lang3.tuple.Pair; +import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemCameraTransforms; +import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; import net.minecraft.world.World; -import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.client.model.data.EmptyModelData; import appeng.api.implementations.items.IBiometricCard; import appeng.api.util.AEColor; @@ -39,8 +34,6 @@ import appeng.core.AELog; class BiometricCardBakedModel implements IBakedModel { - private final VertexFormat format; - private final IBakedModel baseModel; private final TextureAtlasSprite texture; @@ -51,14 +44,13 @@ class BiometricCardBakedModel implements IBakedModel private final ImmutableList generalQuads; - BiometricCardBakedModel( VertexFormat format, IBakedModel baseModel, TextureAtlasSprite texture ) + BiometricCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture ) { - this( format, baseModel, texture, 0, createCache() ); + this( baseModel, texture, 0, createCache() ); } - private BiometricCardBakedModel( VertexFormat format, IBakedModel baseModel, TextureAtlasSprite texture, int hash, Cache modelCache ) + private BiometricCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture, int hash, Cache modelCache ) { - this.format = format; this.baseModel = baseModel; this.texture = texture; this.hash = hash; @@ -68,16 +60,14 @@ class BiometricCardBakedModel implements IBakedModel private static Cache createCache() { - return CacheBuilder.newBuilder() - .maximumSize( 100 ) - .build(); + return CacheBuilder.newBuilder().maximumSize( 100 ).build(); } @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) { - List quads = this.baseModel.getQuads( state, side, rand ); + List quads = this.baseModel.getQuads( state, side, rand, EmptyModelData.INSTANCE ); if( side != null ) { @@ -92,7 +82,7 @@ class BiometricCardBakedModel implements IBakedModel private List buildGeneralQuads() { - CubeBuilder builder = new CubeBuilder( this.format ); + CubeBuilder builder = new CubeBuilder(); builder.setTexture( this.texture ); @@ -125,8 +115,7 @@ class BiometricCardBakedModel implements IBakedModel else { final float scale = 0.3f / 255.0f; - builder.setColorRGB( ( ( col.blackVariant >> 16 ) & 0xff ) * scale, ( ( col.blackVariant >> 8 ) & 0xff ) * scale, - ( col.blackVariant & 0xff ) * scale ); + builder.setColorRGB( ( ( col.blackVariant >> 16 ) & 0xff ) * scale, ( ( col.blackVariant >> 8 ) & 0xff ) * scale, ( col.blackVariant & 0xff ) * scale ); } builder.addCube( 4 + x, 6 + y, 7.5f, 4 + x + 1, 6 + y + 1, 8.5f ); @@ -147,6 +136,12 @@ class BiometricCardBakedModel implements IBakedModel return this.baseModel.isGui3d(); } + @Override + public boolean func_230044_c_() + { + return false;//TODO + } + @Override public boolean isBuiltInRenderer() { @@ -168,10 +163,10 @@ class BiometricCardBakedModel implements IBakedModel @Override public ItemOverrideList getOverrides() { - return new ItemOverrideList( Collections.emptyList() ) + return new ItemOverrideList() { @Override - public IBakedModel handleItemState( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity ) + public IBakedModel getModelWithOverrides( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity ) { String username = ""; if( stack.getItem() instanceof IBiometricCard ) @@ -199,8 +194,7 @@ class BiometricCardBakedModel implements IBakedModel try { - return BiometricCardBakedModel.this.modelCache.get( hash, - () -> new BiometricCardBakedModel( BiometricCardBakedModel.this.format, BiometricCardBakedModel.this.baseModel, BiometricCardBakedModel.this.texture, hash, BiometricCardBakedModel.this.modelCache ) ); + return BiometricCardBakedModel.this.modelCache.get( hash, () -> new BiometricCardBakedModel( BiometricCardBakedModel.this.baseModel, BiometricCardBakedModel.this.texture, hash, BiometricCardBakedModel.this.modelCache ) ); } catch( ExecutionException e ) { @@ -212,15 +206,15 @@ class BiometricCardBakedModel implements IBakedModel } @Override - public Pair handlePerspective( ItemCameraTransforms.TransformType type ) + public boolean doesHandlePerspectives() { - // Delegate to the base model if possible - if( this.baseModel instanceof IBakedModel ) - { - IBakedModel pam = this.baseModel; - Pair pair = pam.handlePerspective( type ); - return Pair.of( this, pair.getValue() ); - } - return Pair.of( this, TRSRTransformation.identity().getMatrix() ); + return true; + } + + @Override + public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat ) + { + baseModel.handlePerspective( cameraTransformType, mat ); + return this; } } diff --git a/src/main/java/appeng/client/render/model/BiometricCardModel.java b/src/main/java/appeng/client/render/model/BiometricCardModel.java index 9ebf4c879..c5bc9b9d6 100644 --- a/src/main/java/appeng/client/render/model/BiometricCardModel.java +++ b/src/main/java/appeng/client/render/model/BiometricCardModel.java @@ -1,19 +1,22 @@ - package appeng.client.render.model; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; +import javax.annotation.Nullable; -import net.minecraft.client.renderer.block.model.IBakedModel; +import com.mojang.datafixers.util.Pair; + +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.common.model.IModelState; -import net.minecraftforge.common.model.TRSRTransformation; import appeng.core.AppEng; @@ -22,11 +25,11 @@ import appeng.core.AppEng; * Model wrapper for the biometric card item model, which combines a base card layer with a "visual hash" of the player * name */ -public class BiometricCardModel implements IModel +public class BiometricCardModel implements IUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/biometric_card" ); - private static final ResourceLocation TEXTURE = new ResourceLocation( AppEng.MOD_ID, "items/biometric_card_hash" ); + private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/biometric_card_hash" ) ); @Override public Collection getDependencies() @@ -35,37 +38,19 @@ public class BiometricCardModel implements IModel } @Override - public Collection getTextures() + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) { - return Collections.singletonList( TEXTURE ); + return Collections.singleton( TEXTURE ); } + @Nullable @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { - TextureAtlasSprite texture = bakedTextureGetter.apply( TEXTURE ); + TextureAtlasSprite texture = spriteGetterIn.apply( TEXTURE ); - IBakedModel baseModel = this.getBaseModel( state, format, bakedTextureGetter ); + IBakedModel baseModel = modelBakeryIn.getBakedModel( MODEL_BASE, transformIn, spriteGetterIn ); - return new BiometricCardBakedModel( format, baseModel, texture ); - } - - private IBakedModel getBaseModel( IModelState state, VertexFormat format, Function bakedTextureGetter ) - { - // Load the base model - try - { - return ModelLoaderRegistry.getModel( MODEL_BASE ).bake( state, format, bakedTextureGetter ); - } - catch( Exception e ) - { - throw new RuntimeException( e ); - } - } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); + return new BiometricCardBakedModel( baseModel, texture ); } } diff --git a/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java b/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java index 6456ddc0b..d7eedb6dc 100644 --- a/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java +++ b/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java @@ -1,27 +1,24 @@ - package appeng.client.render.model; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; - +import java.util.Random; import javax.annotation.Nullable; -import javax.vecmath.Matrix4f; -import com.google.common.collect.ImmutableMap; - -import org.apache.commons.lang3.tuple.Pair; +import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.ItemCameraTransforms; +import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.Direction; import net.minecraftforge.client.model.PerspectiveMapWrapper; -import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.client.model.data.EmptyModelData; class ColorApplicatorBakedModel implements IBakedModel @@ -29,16 +26,16 @@ class ColorApplicatorBakedModel implements IBakedModel private final IBakedModel baseModel; - private final ImmutableMap transforms; + private final IModelTransform transforms; private final EnumMap> quadsBySide; private final List generalQuads; - ColorApplicatorBakedModel( IBakedModel baseModel, ImmutableMap map, TextureAtlasSprite texDark, TextureAtlasSprite texMedium, TextureAtlasSprite texBright ) + ColorApplicatorBakedModel( IBakedModel baseModel, IModelTransform transforms, TextureAtlasSprite texDark, TextureAtlasSprite texMedium, TextureAtlasSprite texBright ) { this.baseModel = baseModel; - this.transforms = map; + this.transforms = transforms; // Put the tint indices in... Since this is an item model, we are ignoring rand this.generalQuads = this.fixQuadTint( null, texDark, texMedium, texBright ); @@ -51,21 +48,21 @@ class ColorApplicatorBakedModel implements IBakedModel private List fixQuadTint( Direction facing, TextureAtlasSprite texDark, TextureAtlasSprite texMedium, TextureAtlasSprite texBright ) { - List quads = this.baseModel.getQuads( null, facing, 0 ); + List quads = this.baseModel.getQuads( null, facing, new Random( 0 ), EmptyModelData.INSTANCE ); List result = new ArrayList<>( quads.size() ); for( BakedQuad quad : quads ) { int tint; - if( quad.getSprite() == texDark ) + if( quad.func_187508_a() == texDark ) { tint = 1; } - else if( quad.getSprite() == texMedium ) + else if( quad.func_187508_a() == texMedium ) { tint = 2; } - else if( quad.getSprite() == texBright ) + else if( quad.func_187508_a() == texBright ) { tint = 3; } @@ -75,8 +72,7 @@ class ColorApplicatorBakedModel implements IBakedModel continue; } - BakedQuad newQuad = new BakedQuad( quad.getVertexData(), tint, quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(), quad - .getFormat() ); + BakedQuad newQuad = new BakedQuad( quad.getVertexData(), tint, quad.getFace(), quad.func_187508_a(), quad.shouldApplyDiffuseLighting() ); result.add( newQuad ); } @@ -84,7 +80,7 @@ class ColorApplicatorBakedModel implements IBakedModel } @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) { if( side == null ) { @@ -105,6 +101,12 @@ class ColorApplicatorBakedModel implements IBakedModel return this.baseModel.isGui3d(); } + @Override + public boolean func_230044_c_() + { + return false;//TODO + } + @Override public boolean isBuiltInRenderer() { @@ -130,8 +132,8 @@ class ColorApplicatorBakedModel implements IBakedModel } @Override - public Pair handlePerspective( ItemCameraTransforms.TransformType type ) + public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat ) { - return PerspectiveMapWrapper.handlePerspective( this, this.transforms, type ); + return PerspectiveMapWrapper.handlePerspective( this, transforms, cameraTransformType, mat ); } } diff --git a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java index 23a5fa9d9..fbf9b31ab 100644 --- a/src/main/java/appeng/client/render/model/ColorApplicatorModel.java +++ b/src/main/java/appeng/client/render/model/ColorApplicatorModel.java @@ -1,24 +1,24 @@ - package appeng.client.render.model; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; +import javax.annotation.Nullable; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; +import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.client.model.PerspectiveMapWrapper; -import net.minecraftforge.common.model.IModelState; -import net.minecraftforge.common.model.TRSRTransformation; import appeng.core.AppEng; @@ -27,14 +27,14 @@ import appeng.core.AppEng; * A color applicator uses the base model, and extends it with additional layers that are colored according to the * selected color of the applicator. */ -public class ColorApplicatorModel implements IModel +public class ColorApplicatorModel implements IUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/color_applicator_colored" ); - private static final ResourceLocation TEXTURE_DARK = new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_dark" ); - private static final ResourceLocation TEXTURE_MEDIUM = new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_medium" ); - private static final ResourceLocation TEXTURE_BRIGHT = new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_bright" ); + private static final Material TEXTURE_DARK = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_dark" ) ); + private static final Material TEXTURE_MEDIUM = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_medium" ) ); + private static final Material TEXTURE_BRIGHT = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/color_applicator_tip_bright" ) ); @Override public Collection getDependencies() @@ -43,44 +43,21 @@ public class ColorApplicatorModel implements IModel } @Override - public Collection getTextures() + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) { - return ImmutableList.of( - TEXTURE_DARK, - TEXTURE_MEDIUM, - TEXTURE_BRIGHT ); + return Arrays.asList( TEXTURE_DARK, TEXTURE_MEDIUM, TEXTURE_DARK ); } + @Nullable @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { - IBakedModel baseModel = this.getBaseModel( state, format, bakedTextureGetter ); + IBakedModel baseModel = modelBakeryIn.getBakedModel( MODEL_BASE, transformIn, spriteGetterIn ); - TextureAtlasSprite texDark = bakedTextureGetter.apply( TEXTURE_DARK ); - TextureAtlasSprite texMedium = bakedTextureGetter.apply( TEXTURE_MEDIUM ); - TextureAtlasSprite texBright = bakedTextureGetter.apply( TEXTURE_BRIGHT ); + TextureAtlasSprite texDark = spriteGetterIn.apply( TEXTURE_DARK ); + TextureAtlasSprite texMedium = spriteGetterIn.apply( TEXTURE_MEDIUM ); + TextureAtlasSprite texBright = spriteGetterIn.apply( TEXTURE_BRIGHT ); - ImmutableMap map = PerspectiveMapWrapper.getTransforms( state ); - - return new ColorApplicatorBakedModel( baseModel, map, texDark, texMedium, texBright ); - } - - private IBakedModel getBaseModel( IModelState state, VertexFormat format, Function bakedTextureGetter ) - { - // Load the base model - try - { - return ModelLoaderRegistry.getModel( MODEL_BASE ).bake( state, format, bakedTextureGetter ); - } - catch( Exception e ) - { - throw new RuntimeException( e ); - } - } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); + return new ColorApplicatorBakedModel( baseModel, transformIn, texDark, texMedium, texBright ); } } diff --git a/src/main/java/appeng/client/render/model/MemoryCardBakedModel.java b/src/main/java/appeng/client/render/model/MemoryCardBakedModel.java index 8d62a4a2c..759bf6166 100644 --- a/src/main/java/appeng/client/render/model/MemoryCardBakedModel.java +++ b/src/main/java/appeng/client/render/model/MemoryCardBakedModel.java @@ -1,4 +1,3 @@ - package appeng.client.render.model; @@ -6,29 +5,29 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Random; import java.util.concurrent.ExecutionException; - import javax.annotation.Nullable; -import javax.vecmath.Matrix4f; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; import org.apache.commons.lang3.tuple.Pair; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemCameraTransforms; +import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; import net.minecraft.world.World; -import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.client.model.data.EmptyModelData; import appeng.api.implementations.items.IMemoryCard; import appeng.api.util.AEColor; @@ -43,8 +42,6 @@ class MemoryCardBakedModel implements IBakedModel AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, }; - private final VertexFormat format; - private final IBakedModel baseModel; private final TextureAtlasSprite texture; @@ -55,14 +52,13 @@ class MemoryCardBakedModel implements IBakedModel private final ImmutableList generalQuads; - MemoryCardBakedModel( VertexFormat format, IBakedModel baseModel, TextureAtlasSprite texture ) + MemoryCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture ) { - this( format, baseModel, texture, DEFAULT_COLOR_CODE, createCache() ); + this( baseModel, texture, DEFAULT_COLOR_CODE, createCache() ); } - private MemoryCardBakedModel( VertexFormat format, IBakedModel baseModel, TextureAtlasSprite texture, AEColor[] hash, Cache modelCache ) + private MemoryCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture, AEColor[] hash, Cache modelCache ) { - this.format = format; this.baseModel = baseModel; this.texture = texture; this.colorCode = hash; @@ -72,16 +68,14 @@ class MemoryCardBakedModel implements IBakedModel private static Cache createCache() { - return CacheBuilder.newBuilder() - .maximumSize( 100 ) - .build(); + return CacheBuilder.newBuilder().maximumSize( 100 ).build(); } @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) { - List quads = this.baseModel.getQuads( state, side, rand ); + List quads = this.baseModel.getQuads( state, side, rand, EmptyModelData.INSTANCE ); if( side != null ) { @@ -96,7 +90,7 @@ class MemoryCardBakedModel implements IBakedModel private List buildGeneralQuads() { - CubeBuilder builder = new CubeBuilder( this.format ); + CubeBuilder builder = new CubeBuilder(); builder.setTexture( this.texture ); @@ -126,6 +120,12 @@ class MemoryCardBakedModel implements IBakedModel return this.baseModel.isGui3d(); } + @Override + public boolean func_230044_c_() + { + return false;//TODO + } + @Override public boolean isBuiltInRenderer() { @@ -147,10 +147,10 @@ class MemoryCardBakedModel implements IBakedModel @Override public ItemOverrideList getOverrides() { - return new ItemOverrideList( Collections.emptyList() ) + return new ItemOverrideList() { @Override - public IBakedModel handleItemState( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity ) + public IBakedModel getModelWithOverrides( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity ) { try { @@ -160,7 +160,7 @@ class MemoryCardBakedModel implements IBakedModel final AEColor[] colors = memoryCard.getColorCode( stack ); return MemoryCardBakedModel.this.modelCache.get( new CacheKey( colors ), - () -> new MemoryCardBakedModel( MemoryCardBakedModel.this.format, MemoryCardBakedModel.this.baseModel, MemoryCardBakedModel.this.texture, colors, MemoryCardBakedModel.this.modelCache ) ); + () -> new MemoryCardBakedModel( MemoryCardBakedModel.this.baseModel, MemoryCardBakedModel.this.texture, colors, MemoryCardBakedModel.this.modelCache ) ); } } catch( ExecutionException e ) @@ -171,20 +171,13 @@ class MemoryCardBakedModel implements IBakedModel return MemoryCardBakedModel.this; } }; - } @Override - public Pair handlePerspective( ItemCameraTransforms.TransformType type ) + public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat ) { - // Delegate to the base model if possible - if( this.baseModel instanceof IBakedModel ) - { - IBakedModel pam = this.baseModel; - Pair pair = pam.handlePerspective( type ); - return Pair.of( this, pair.getValue() ); - } - return Pair.of( this, TRSRTransformation.identity().getMatrix() ); + baseModel.handlePerspective( cameraTransformType, mat ); + return this; } private static class CacheKey @@ -223,6 +216,5 @@ class MemoryCardBakedModel implements IBakedModel CacheKey other = (CacheKey) obj; return Arrays.equals( this.key, other.key ); } - } } diff --git a/src/main/java/appeng/client/render/model/MemoryCardModel.java b/src/main/java/appeng/client/render/model/MemoryCardModel.java index da2af481a..d3cbfbacb 100644 --- a/src/main/java/appeng/client/render/model/MemoryCardModel.java +++ b/src/main/java/appeng/client/render/model/MemoryCardModel.java @@ -1,19 +1,22 @@ - package appeng.client.render.model; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; +import javax.annotation.Nullable; -import net.minecraft.client.renderer.block.model.IBakedModel; +import com.mojang.datafixers.util.Pair; + +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.common.model.IModelState; -import net.minecraftforge.common.model.TRSRTransformation; import appeng.core.AppEng; @@ -21,11 +24,11 @@ import appeng.core.AppEng; /** * Model wrapper for the memory card item model, which combines a base card layer with a "visual hash" of the part/tile. */ -public class MemoryCardModel implements IModel +public class MemoryCardModel implements IUnbakedModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/memory_card" ); - private static final ResourceLocation TEXTURE = new ResourceLocation( AppEng.MOD_ID, "items/memory_card_hash" ); + private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "items/memory_card_hash" ) ); @Override public Collection getDependencies() @@ -34,37 +37,19 @@ public class MemoryCardModel implements IModel } @Override - public Collection getTextures() + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) { - return Collections.singletonList( TEXTURE ); + return Collections.singleton( TEXTURE ); } + @Nullable @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { - TextureAtlasSprite texture = bakedTextureGetter.apply( TEXTURE ); + TextureAtlasSprite texture = spriteGetterIn.apply( TEXTURE ); - IBakedModel baseModel = this.getBaseModel( state, format, bakedTextureGetter ); + IBakedModel baseModel = modelBakeryIn.getBakedModel( MODEL_BASE, transformIn, spriteGetterIn ); - return new MemoryCardBakedModel( format, baseModel, texture ); - } - - private IBakedModel getBaseModel( IModelState state, VertexFormat format, Function bakedTextureGetter ) - { - // Load the base model - try - { - return ModelLoaderRegistry.getModel( MODEL_BASE ).bake( state, format, bakedTextureGetter ); - } - catch( Exception e ) - { - throw new RuntimeException( e ); - } - } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity().toItemTransform(); + return new MemoryCardBakedModel( baseModel, texture ); } } diff --git a/src/main/java/appeng/core/PluginLoader.java b/src/main/java/appeng/core/PluginLoader.java index 916adb710..af7ab5363 100644 --- a/src/main/java/appeng/core/PluginLoader.java +++ b/src/main/java/appeng/core/PluginLoader.java @@ -19,6 +19,7 @@ package appeng.core; +import java.lang.annotation.ElementType; import java.lang.reflect.Constructor; import java.util.Collection; import java.util.HashSet; @@ -28,7 +29,10 @@ import java.util.stream.Collectors; import com.google.common.collect.ImmutableMap; -import net.minecraftforge.fml.common.discovery.ASMDataTable; +import org.objectweb.asm.Type; + +import net.minecraftforge.fml.ModList; +import net.minecraftforge.forgespi.language.ModFileScanData; import appeng.api.AEInjectable; import appeng.api.AEPlugin; @@ -40,28 +44,30 @@ import appeng.api.AEPlugin; class PluginLoader { - public void loadPlugins( Collection injectables, ASMDataTable asmDataTable ) + public void loadPlugins( Collection injectables ) { Map, Object> injectableMap = mapInjectables( injectables ); - findAndInstantiatePlugins( asmDataTable, injectableMap ); + findAndInstantiatePlugins( injectableMap ); } - private static void findAndInstantiatePlugins( ASMDataTable dataTable, Map, Object> injectableMap ) + private static void findAndInstantiatePlugins( Map, Object> injectableMap ) { - Set allAnnotated = dataTable.getAll( AEPlugin.class.getCanonicalName() ); + Type aType = Type.getType( AEPlugin.class ); + Set allAnnotated = ModList.get().getAllScanData().stream().map( ModFileScanData::getAnnotations ).flatMap( Collection::stream ).filter( a -> a.getAnnotationType().equals( aType ) ).filter( a -> a.getTargetType() == ElementType.TYPE ).collect( Collectors.toSet() ); - for( ASMDataTable.ASMData candidate : allAnnotated ) + for( ModFileScanData.AnnotationData candidate : allAnnotated ) { + String cName = candidate.getMemberName(); Class aClass; try { - aClass = Class.forName( candidate.getClassName() ); + aClass = Class.forName( cName ); } catch( ClassNotFoundException e ) { - AELog.error( e, "Couldn't find annotated AE plugin class " + candidate.getClassName() ); - throw new RuntimeException( "Couldn't find annotated AE plugin class " + candidate.getClassName(), e ); + AELog.error( e, "Couldn't find annotated AE plugin class " + cName ); + throw new RuntimeException( "Couldn't find annotated AE plugin class " + cName, e ); } // Try instantiating the plugin @@ -72,8 +78,8 @@ class PluginLoader } catch( Exception e ) { - AELog.error( e, "Unable to instantiate AE plugin " + candidate.getClassName() ); - throw new RuntimeException( "Unable to instantiate AE plugin " + candidate.getClassName(), e ); + AELog.error( e, "Unable to instantiate AE plugin " + cName ); + throw new RuntimeException( "Unable to instantiate AE plugin " + cName, e ); } } } diff --git a/src/main/java/appeng/core/api/ApiPart.java b/src/main/java/appeng/core/api/ApiPart.java index 7c87af888..62ba3e000 100644 --- a/src/main/java/appeng/core/api/ApiPart.java +++ b/src/main/java/appeng/core/api/ApiPart.java @@ -21,7 +21,7 @@ package appeng.core.api; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -37,7 +37,7 @@ public class ApiPart implements IPartHelper { @Override - public ActionResult placeBus( final ItemStack is, final BlockPos pos, final Direction side, final PlayerEntity player, final Hand hand, final World w ) + public ActionResultType placeBus( final ItemStack is, final BlockPos pos, final Direction side, final PlayerEntity player, final Hand hand, final World w ) { return PartPlacement.place( is, pos, side, player, hand, w, PartPlacement.PlaceType.PLACE_ITEM, 0 ); } diff --git a/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java b/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java index c5f56a7c2..78bbcc925 100644 --- a/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java +++ b/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java @@ -31,10 +31,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.Direction; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.registries.ForgeRegistries; -import appeng.api.AEApi; import appeng.api.config.TunnelType; import appeng.api.definitions.IBlocks; import appeng.api.definitions.IDefinitions; @@ -43,6 +44,7 @@ import appeng.api.definitions.IParts; import appeng.api.features.IP2PTunnelRegistry; import appeng.api.util.AEColor; import appeng.capabilities.Capabilities; +import appeng.core.Api; public final class P2PTunnelRegistry implements IP2PTunnelRegistry @@ -257,10 +259,10 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry } @Nonnull - private ItemStack getModItem( final String modID, final String name, final int meta ) + private ItemStack getModItem( final String modID, final String name ) { - final Item item = Item.getByNameOrId( modID + ":" + name ); + final Item item = ForgeRegistries.ITEMS.getValue( new ResourceLocation( modID + ":" + name ) ); if( item == null ) { diff --git a/src/main/java/appeng/core/features/registries/WirelessRegistry.java b/src/main/java/appeng/core/features/registries/WirelessRegistry.java index 32aedad40..80ebc2951 100644 --- a/src/main/java/appeng/core/features/registries/WirelessRegistry.java +++ b/src/main/java/appeng/core/features/registries/WirelessRegistry.java @@ -30,6 +30,7 @@ import appeng.api.AEApi; import appeng.api.features.ILocatable; import appeng.api.features.IWirelessTermHandler; import appeng.api.features.IWirelessTermRegistry; +import appeng.core.Api; import appeng.core.localization.PlayerMessages; import appeng.core.sync.GuiBridge; import appeng.util.Platform; diff --git a/src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java b/src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java index 3cce5ce1c..a905b26d5 100644 --- a/src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java +++ b/src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java @@ -15,6 +15,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEStack; import appeng.api.util.AEPartLocation; +import appeng.core.Api; import appeng.core.sync.GuiBridge; import appeng.util.Platform; diff --git a/src/main/java/appeng/core/features/registries/cell/CreativeCellHandler.java b/src/main/java/appeng/core/features/registries/cell/CreativeCellHandler.java index d7db4a79b..a37633f10 100644 --- a/src/main/java/appeng/core/features/registries/cell/CreativeCellHandler.java +++ b/src/main/java/appeng/core/features/registries/cell/CreativeCellHandler.java @@ -27,6 +27,7 @@ import appeng.api.storage.ICellInventoryHandler; import appeng.api.storage.ISaveProvider; import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; +import appeng.core.Api; import appeng.items.storage.ItemCreativeStorageCell; import appeng.me.storage.CreativeCellInventory; diff --git a/src/main/java/appeng/core/localization/ButtonToolTips.java b/src/main/java/appeng/core/localization/ButtonToolTips.java index eccb1eb67..59dff767b 100644 --- a/src/main/java/appeng/core/localization/ButtonToolTips.java +++ b/src/main/java/appeng/core/localization/ButtonToolTips.java @@ -20,6 +20,8 @@ package appeng.core.localization; import net.minecraft.client.resources.I18n; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; public enum ButtonToolTips @@ -162,14 +164,15 @@ public enum ButtonToolTips this.root = r; } + @Deprecated public String getLocal() { - return I18n.format( this.getTranslationKey() ); + return getTranslationKey().getFormattedText(); } - public String getTranslationKey() + public ITextComponent getTranslationKey() { - return this.root + '.' + this.toString(); + return new TranslationTextComponent( this.root + '.' + this.toString() ); } } diff --git a/src/main/java/appeng/core/stats/AppEngAdvancementTrigger.java b/src/main/java/appeng/core/stats/AppEngAdvancementTrigger.java index 4dfaa60df..7adc076b0 100644 --- a/src/main/java/appeng/core/stats/AppEngAdvancementTrigger.java +++ b/src/main/java/appeng/core/stats/AppEngAdvancementTrigger.java @@ -33,6 +33,7 @@ import net.minecraft.advancements.ICriterionTrigger; import net.minecraft.advancements.PlayerAdvancements; import net.minecraft.advancements.criterion.CriterionInstance; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.util.ResourceLocation; import appeng.core.AppEng; @@ -98,7 +99,7 @@ public class AppEngAdvancementTrigger implements ICriterionTrigger getPlayerMappings() { - return this.playerMappings; + return Collections.emptyMap(); //this.playerMappings; //FIXME } } diff --git a/src/main/java/appeng/crafting/CraftingJob.java b/src/main/java/appeng/crafting/CraftingJob.java index b050f078d..1641d3060 100644 --- a/src/main/java/appeng/crafting/CraftingJob.java +++ b/src/main/java/appeng/crafting/CraftingJob.java @@ -45,6 +45,7 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.api.util.DimensionalCoord; import appeng.core.AELog; +import appeng.core.Api; import appeng.hooks.TickHandler; diff --git a/src/main/java/appeng/crafting/CraftingTreeNode.java b/src/main/java/appeng/crafting/CraftingTreeNode.java index 1c83c1808..3faabab92 100644 --- a/src/main/java/appeng/crafting/CraftingTreeNode.java +++ b/src/main/java/appeng/crafting/CraftingTreeNode.java @@ -36,6 +36,7 @@ import appeng.api.networking.security.IActionSource; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.me.cluster.implementations.CraftingCPUCluster; diff --git a/src/main/java/appeng/crafting/CraftingTreeProcess.java b/src/main/java/appeng/crafting/CraftingTreeProcess.java index 09ce95dce..8bbbe6dc6 100644 --- a/src/main/java/appeng/crafting/CraftingTreeProcess.java +++ b/src/main/java/appeng/crafting/CraftingTreeProcess.java @@ -38,6 +38,7 @@ import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.container.ContainerNull; +import appeng.core.Api; import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.util.Platform; diff --git a/src/main/java/appeng/crafting/MECraftingInventory.java b/src/main/java/appeng/crafting/MECraftingInventory.java index 4d12c1975..be3a4a6f1 100644 --- a/src/main/java/appeng/crafting/MECraftingInventory.java +++ b/src/main/java/appeng/crafting/MECraftingInventory.java @@ -28,6 +28,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.util.inv.ItemListIgnoreCrafting; diff --git a/src/main/java/appeng/debug/BlockCubeGenerator.java b/src/main/java/appeng/debug/BlockCubeGenerator.java index 94d1be4d3..059a5b722 100644 --- a/src/main/java/appeng/debug/BlockCubeGenerator.java +++ b/src/main/java/appeng/debug/BlockCubeGenerator.java @@ -33,7 +33,7 @@ import net.minecraft.world.World; import appeng.block.AEBaseTileBlock; -public class BlockCubeGenerator extends AEBaseTileBlock +public class BlockCubeGenerator extends AEBaseTileBlock { public BlockCubeGenerator() @@ -50,7 +50,7 @@ public class BlockCubeGenerator extends AEBaseTileBlock tcg.click( player ); } - return true; + return ActionResultType.SUCCESS; } } diff --git a/src/main/java/appeng/debug/BlockPhantomNode.java b/src/main/java/appeng/debug/BlockPhantomNode.java index dcfdef2bc..8a3883114 100644 --- a/src/main/java/appeng/debug/BlockPhantomNode.java +++ b/src/main/java/appeng/debug/BlockPhantomNode.java @@ -33,7 +33,7 @@ import net.minecraft.world.World; import appeng.block.AEBaseTileBlock; -public class BlockPhantomNode extends AEBaseTileBlock +public class BlockPhantomNode extends AEBaseTileBlock { public BlockPhantomNode() @@ -46,7 +46,7 @@ public class BlockPhantomNode extends AEBaseTileBlock { final TilePhantomNode tpn = this.getTileEntity( w, pos ); tpn.triggerCrashMode(); - return true; + return ActionResultType.SUCCESS; } } diff --git a/src/main/java/appeng/fluids/client/gui/GuiFluidFormationPlane.java b/src/main/java/appeng/fluids/client/gui/GuiFluidFormationPlane.java index 1a7e27447..5514bef65 100644 --- a/src/main/java/appeng/fluids/client/gui/GuiFluidFormationPlane.java +++ b/src/main/java/appeng/fluids/client/gui/GuiFluidFormationPlane.java @@ -41,7 +41,7 @@ public class GuiFluidFormationPlane extends GuiUpgradeable final int yo = 23 + 6; final IAEFluidTank config = this.plane.getConfig(); - final ContainerFluidFormationPlane container = (ContainerFluidFormationPlane) this.inventorySlots; + final ContainerFluidFormationPlane container = (ContainerFluidFormationPlane) this.container; for( int y = 0; y < 7; y++ ) { @@ -63,7 +63,7 @@ public class GuiFluidFormationPlane extends GuiUpgradeable @Override protected void addButtons() { - this.addButton( this.priority = new GuiTabButton( this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.itemRender ) ); + this.addButton( this.priority = new GuiTabButton( this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.itemRenderer ) ); } @Override diff --git a/src/main/java/appeng/fluids/client/gui/GuiFluidIO.java b/src/main/java/appeng/fluids/client/gui/GuiFluidIO.java index 04e22956e..67fc1df80 100644 --- a/src/main/java/appeng/fluids/client/gui/GuiFluidIO.java +++ b/src/main/java/appeng/fluids/client/gui/GuiFluidIO.java @@ -51,7 +51,7 @@ public class GuiFluidIO extends GuiUpgradeable { super.init(); - final ContainerFluidIO container = (ContainerFluidIO) this.inventorySlots; + final ContainerFluidIO container = (ContainerFluidIO) this.container; final IAEFluidTank inv = this.bus.getConfig(); final int y = 40; final int x = 80; diff --git a/src/main/java/appeng/fluids/client/gui/GuiFluidInterface.java b/src/main/java/appeng/fluids/client/gui/GuiFluidInterface.java index 796bcc2ac..4cade6127 100644 --- a/src/main/java/appeng/fluids/client/gui/GuiFluidInterface.java +++ b/src/main/java/appeng/fluids/client/gui/GuiFluidInterface.java @@ -68,7 +68,7 @@ public class GuiFluidInterface extends GuiUpgradeable this.guiSlots.add( new GuiFluidSlot( configFluids, i, i, 35 + 18 * i, 35 ) ); } - this.priority = new GuiTabButton( this.getGuiLeft() + 154, this.getGuiTop(), 2 + 4 * 16, GuiText.Priority.getLocal(), this.itemRender ); + this.priority = new GuiTabButton( this.getGuiLeft() + 154, this.getGuiTop(), 2 + 4 * 16, GuiText.Priority.getLocal(), this.itemRenderer ); this.addButton( this.priority ); } diff --git a/src/main/java/appeng/fluids/client/gui/widgets/GuiFluidSlot.java b/src/main/java/appeng/fluids/client/gui/widgets/GuiFluidSlot.java index 464795a53..52c2e8656 100644 --- a/src/main/java/appeng/fluids/client/gui/widgets/GuiFluidSlot.java +++ b/src/main/java/appeng/fluids/client/gui/widgets/GuiFluidSlot.java @@ -1,16 +1,19 @@ - package appeng.fluids.client.gui.widgets; import java.util.Collections; +import com.mojang.blaze3d.systems.RenderSystem; + import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; import net.minecraft.fluid.Fluid; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; @@ -44,15 +47,16 @@ public class GuiFluidSlot extends GuiCustomSlot RenderSystem.disableLighting(); RenderSystem.disableBlend(); final Fluid fluid = fs.getFluid(); - mc.getTextureManager().bindTexture( TextureMap.LOCATION_BLOCKS_TEXTURE ); - final TextureAtlasSprite sprite = mc.getTextureMapBlocks().getAtlasSprite( fluid.getStill().toString() ); + final FluidAttributes attributes = fluid.getAttributes(); + mc.getTextureManager().bindTexture( AtlasTexture.LOCATION_BLOCKS_TEXTURE ); + final TextureAtlasSprite sprite = mc.getAtlasSpriteGetter( AtlasTexture.LOCATION_BLOCKS_TEXTURE ).apply( attributes.getStillTexture() ); // Set color for dynamic fluids // Convert int color to RGB - final float red = ( fluid.getColor() >> 16 & 255 ) / 255.0F; - final float green = ( fluid.getColor() >> 8 & 255 ) / 255.0F; - final float blue = ( fluid.getColor() & 255 ) / 255.0F; - RenderSystem.color4f( red, green, blue ); + final float red = ( attributes.getColor() >> 16 & 255 ) / 255.0F; + final float green = ( attributes.getColor() >> 8 & 255 ) / 255.0F; + final float blue = ( attributes.getColor() & 255 ) / 255.0F; + RenderSystem.color3f( red, green, blue ); this.drawTexturedModalRect( this.xPos(), this.yPos(), sprite, this.getWidth(), this.getHeight() ); } @@ -62,7 +66,7 @@ public class GuiFluidSlot extends GuiCustomSlot public boolean canClick( final PlayerEntity player ) { final ItemStack mouseStack = player.inventory.getItemStack(); - return mouseStack.isEmpty() || mouseStack.hasCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null ); + return mouseStack.isEmpty() || mouseStack.getCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY ).isPresent(); } @Override @@ -74,11 +78,10 @@ public class GuiFluidSlot extends GuiCustomSlot } else if( mouseButton == 0 ) { - final FluidStack fluid = FluidUtil.getFluidContained( clickStack ); - if( fluid != null ) - { + final LazyOptional fluidOpt = FluidUtil.getFluidContained( clickStack ); + fluidOpt.ifPresent( fluid -> { this.setFluidStack( AEFluidStack.fromFluidStack( fluid ) ); - } + } ); } } @@ -88,7 +91,7 @@ public class GuiFluidSlot extends GuiCustomSlot final IAEFluidStack fluid = this.getFluidStack(); if( fluid != null ) { - return fluid.getFluidStack().getLocalizedName(); + return I18n.format( fluid.getFluidStack().getTranslationKey() ); } return null; } diff --git a/src/main/java/appeng/fluids/container/ContainerFluidConfigurable.java b/src/main/java/appeng/fluids/container/ContainerFluidConfigurable.java index 0cbe70bd0..9d00890e4 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidConfigurable.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidConfigurable.java @@ -6,8 +6,9 @@ import java.util.Collections; import java.util.Map; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.IContainerListener; +import net.minecraft.inventory.container.IContainerListener; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; @@ -32,7 +33,7 @@ public abstract class ContainerFluidConfigurable extends ContainerUpgradeable im public abstract IAEFluidTank getFluidConfigInventory(); - private FluidSyncHelper getSynchHelper() + private FluidSyncHelper getSyncHelper() { if( this.sync == null ) { @@ -44,11 +45,11 @@ public abstract class ContainerFluidConfigurable extends ContainerUpgradeable im @Override protected ItemStack transferStackToContainer( ItemStack input ) { - FluidStack fs = FluidUtil.getFluidContained( input ); - if( fs != null ) + LazyOptional fsOpt = FluidUtil.getFluidContained( input ); + if( fsOpt.isPresent() ) { final IAEFluidTank t = this.getFluidConfigInventory(); - final IAEFluidStack stack = AEFluidStack.fromFluidStack( fs ); + final IAEFluidStack stack = AEFluidStack.fromFluidStack( fsOpt.orElse( null ) ); for( int i = 0; i < t.getSlots(); ++i ) { if( t.getFluidInSlot( i ) == null && this.isValidForConfig( i, stack ) ) @@ -86,7 +87,7 @@ public abstract class ContainerFluidConfigurable extends ContainerUpgradeable im { if( Platform.isServer() ) { - this.getSynchHelper().sendDiff( this.listeners ); + this.getSyncHelper().sendDiff( this.listeners ); // clear out config items that are no longer valid (eg capacity upgrade removed) final IAEFluidTank t = this.getFluidConfigInventory(); @@ -105,13 +106,13 @@ public abstract class ContainerFluidConfigurable extends ContainerUpgradeable im public void addListener( IContainerListener listener ) { super.addListener( listener ); - this.getSynchHelper().sendFull( Collections.singleton( listener ) ); + this.getSyncHelper().sendFull( Collections.singleton( listener ) ); } @Override public void receiveFluidSlots( Map fluids ) { - this.getSynchHelper().readPacket( fluids ); + this.getSyncHelper().readPacket( fluids ); } } diff --git a/src/main/java/appeng/fluids/container/ContainerFluidInterface.java b/src/main/java/appeng/fluids/container/ContainerFluidInterface.java index 48cb63a1d..da704e0b3 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidInterface.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidInterface.java @@ -23,7 +23,7 @@ import java.util.Collections; import java.util.Map; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.IContainerListener; +import net.minecraft.inventory.container.IContainerListener; import appeng.api.config.SecurityPermissions; import appeng.api.storage.data.IAEFluidStack; diff --git a/src/main/java/appeng/fluids/container/ContainerFluidLevelEmitter.java b/src/main/java/appeng/fluids/container/ContainerFluidLevelEmitter.java index b1ede2773..b4e64450e 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidLevelEmitter.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidLevelEmitter.java @@ -1,8 +1,7 @@ - package appeng.fluids.container; -import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraftforge.api.distmarker.Dist; @@ -22,7 +21,7 @@ public class ContainerFluidLevelEmitter extends ContainerFluidConfigurable private final PartFluidLevelEmitter lvlEmitter; @OnlyIn( Dist.CLIENT ) - private GuiTextField textField; + private TextFieldWidget textField; @GuiSync( 3 ) public long EmitterValue = -1; @@ -33,7 +32,7 @@ public class ContainerFluidLevelEmitter extends ContainerFluidConfigurable } @OnlyIn( Dist.CLIENT ) - public void setTextField( final GuiTextField level ) + public void setTextField( final TextFieldWidget level ) { this.textField = level; this.textField.setText( String.valueOf( this.EmitterValue ) ); diff --git a/src/main/java/appeng/fluids/container/ContainerFluidStorageBus.java b/src/main/java/appeng/fluids/container/ContainerFluidStorageBus.java index 81f2fb1f9..2da1e9399 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidStorageBus.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidStorageBus.java @@ -36,6 +36,7 @@ import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; import appeng.container.guisync.GuiSync; import appeng.container.slot.SlotRestrictedInput; +import appeng.core.Api; import appeng.fluids.parts.PartFluidStorageBus; import appeng.fluids.util.IAEFluidTank; import appeng.util.Platform; diff --git a/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java b/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java index 0b8c2a599..c948f1029 100644 --- a/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java +++ b/src/main/java/appeng/fluids/container/ContainerFluidTerminal.java @@ -21,19 +21,19 @@ package appeng.fluids.container; import java.io.IOException; import java.nio.BufferOverflowException; - import javax.annotation.Nonnull; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.IContainerListener; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.container.IContainerListener; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.PowerMultiplier; import appeng.api.config.Settings; @@ -60,6 +60,7 @@ import appeng.api.util.IConfigurableObject; import appeng.container.AEBaseContainer; import appeng.container.guisync.GuiSync; import appeng.core.AELog; +import appeng.core.Api; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketMEFluidInventoryUpdate; import appeng.core.sync.packets.PacketTargetFluidStack; @@ -358,12 +359,13 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa return; } - final IFluidHandlerItem fh = FluidUtil.getFluidHandler( held ); - if( fh == null ) + final LazyOptional fhOpt = FluidUtil.getFluidHandler( held ); + if( !fhOpt.isPresent() ) { // only fluid handlers items return; } + IFluidHandlerItem fh = fhOpt.orElse( null ); if( action == InventoryAction.FILL_ITEM && this.clientRequestedTargetFluid != null ) { @@ -371,7 +373,7 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa // Check how much we can store in the item stack.setStackSize( Integer.MAX_VALUE ); - int amountAllowed = fh.fill( stack.getFluidStack(), false ); + int amountAllowed = fh.fill( stack.getFluidStack(), FluidAction.SIMULATE ); stack.setStackSize( amountAllowed ); // Check if we can pull out of the system @@ -382,7 +384,7 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa } // How much could fit into the container - final int canFill = fh.fill( canPull.getFluidStack(), false ); + final int canFill = fh.fill( canPull.getFluidStack(), FluidAction.SIMULATE ); if( canFill == 0 ) { return; @@ -399,7 +401,7 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa } // Actually fill - final int used = fh.fill( pulled.getFluidStack(), true ); + final int used = fh.fill( pulled.getFluidStack(), FluidAction.EXECUTE ); if( used != canFill ) { @@ -412,37 +414,35 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa else if( action == InventoryAction.EMPTY_ITEM ) { // See how much we can drain from the item - final FluidStack extract = fh.drain( Integer.MAX_VALUE, false ); - if( extract == null || extract.amount < 1 ) + final FluidStack extract = fh.drain( Integer.MAX_VALUE, FluidAction.SIMULATE ); + if( extract == null || extract.getAmount() < 1 ) { return; } // Check if we can push into the system - final IAEFluidStack notStorable = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), - this.getActionSource(), Actionable.SIMULATE ); + final IAEFluidStack notStorable = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), this.getActionSource(), Actionable.SIMULATE ); if( notStorable != null && notStorable.getStackSize() > 0 ) { - final int toStore = (int) ( extract.amount - notStorable.getStackSize() ); - final FluidStack storable = fh.drain( toStore, false ); + final int toStore = (int) ( extract.getAmount() - notStorable.getStackSize() ); + final FluidStack storable = fh.drain( toStore, FluidAction.SIMULATE ); - if( storable == null || storable.amount == 0 ) + if( storable == null || storable.getAmount() == 0 ) { return; } else { - extract.amount = storable.amount; + extract.setAmount( storable.getAmount() ); } } // Actually drain - final FluidStack drained = fh.drain( extract, true ); - extract.amount = drained.amount; + final FluidStack drained = fh.drain( extract, FluidAction.EXECUTE ); + extract.setAmount( drained.getAmount() ); - final IAEFluidStack notInserted = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), - this.getActionSource() ); + final IAEFluidStack notInserted = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), this.getActionSource() ); if( notInserted != null && notInserted.getStackSize() > 0 ) { diff --git a/src/main/java/appeng/fluids/helper/DualityFluidInterface.java b/src/main/java/appeng/fluids/helper/DualityFluidInterface.java index ab3050c38..8dd65c3d2 100644 --- a/src/main/java/appeng/fluids/helper/DualityFluidInterface.java +++ b/src/main/java/appeng/fluids/helper/DualityFluidInterface.java @@ -26,6 +26,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraft.fluid.Fluid; +import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.items.IItemHandler; @@ -57,6 +58,7 @@ import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; import appeng.capabilities.Capabilities; +import appeng.core.Api; import appeng.core.settings.TickRates; import appeng.fluids.util.AEFluidInventory; import appeng.fluids.util.IAEFluidInventory; @@ -403,7 +405,7 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable // make sure strange things didn't happen... final FluidStack canExtract = this.tanks.drain( slot, toStore.getFluidStack(), false ); - if( canExtract == null || canExtract.amount != toStore.getStackSize() ) + if( canExtract == null || canExtract.getAmount() != toStore.getStackSize() ) { changed = true; } @@ -417,7 +419,7 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable // extract items! changed = true; final FluidStack removed = this.tanks.drain( slot, toStore.getFluidStack(), true ); - if( removed == null || toStore.getStackSize() != removed.amount ) + if( removed == null || toStore.getStackSize() != removed.getAmount() ) { throw new IllegalStateException( "bad attempt at managing tanks. ( drain )" ); } @@ -494,7 +496,7 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable public void writeToNBT( final CompoundNBT data ) { - data.setInteger( "priority", this.priority ); + data.putInt( "priority", this.priority ); this.tanks.writeToNBT( data, "storage" ); this.config.writeToNBT( data, "config" ); } @@ -503,7 +505,7 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable { this.config.readFromNBT( data, "config" ); this.tanks.readFromNBT( data, "storage" ); - this.priority = data.getInteger( "priority" ); + this.priority = data.getInt( "priority" ); this.readConfig(); } diff --git a/src/main/java/appeng/fluids/helper/FluidCellConfig.java b/src/main/java/appeng/fluids/helper/FluidCellConfig.java index 602b95e65..e61c0cc27 100644 --- a/src/main/java/appeng/fluids/helper/FluidCellConfig.java +++ b/src/main/java/appeng/fluids/helper/FluidCellConfig.java @@ -23,6 +23,8 @@ import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; import net.minecraft.fluid.Fluid; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; @@ -51,13 +53,14 @@ public class FluidCellConfig extends CellConfig { super.insertItem( slot, stack, simulate ); } - FluidStack fluid = FluidUtil.getFluidContained( stack ); - if( fluid == null || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) + LazyOptional fluidOpt = FluidUtil.getFluidContained( stack ); + if( !fluidOpt.isPresent() || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) { return stack; } + FluidStack fluid = fluidOpt.orElse( null ); - fluid.amount = FluidAttributes.BUCKET_VOLUME; + fluid.setAmount( FluidAttributes.BUCKET_VOLUME ); ItemStack is = Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).get(); FluidDummyItem item = (FluidDummyItem) is.getItem(); item.setFluidStack( is, fluid ); @@ -71,13 +74,14 @@ public class FluidCellConfig extends CellConfig { super.setStackInSlot( slot, stack ); } - FluidStack fluid = FluidUtil.getFluidContained( stack ); - if( fluid == null || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) + LazyOptional fluidOpt = FluidUtil.getFluidContained( stack ); + if( !fluidOpt.isPresent() || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) { return; } + FluidStack fluid = fluidOpt.orElse( null ); - fluid.amount = FluidAttributes.BUCKET_VOLUME; + fluid.setAmount( FluidAttributes.BUCKET_VOLUME ); ItemStack is = Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).get(); FluidDummyItem item = (FluidDummyItem) is.getItem(); item.setFluidStack( is, fluid ); @@ -91,12 +95,14 @@ public class FluidCellConfig extends CellConfig { super.isItemValid( slot, stack ); } - FluidStack fluid = FluidUtil.getFluidContained( stack ); - if( fluid == null || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) + LazyOptional fluidOpt = FluidUtil.getFluidContained( stack ); + if( !fluidOpt.isPresent() || !Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).isPresent() ) { return false; } - fluid.amount = FluidAttributes.BUCKET_VOLUME; + FluidStack fluid = fluidOpt.orElse( null ); + + fluid.setAmount( FluidAttributes.BUCKET_VOLUME ); ItemStack is = Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack( 1 ).get(); FluidDummyItem item = (FluidDummyItem) is.getItem(); item.setFluidStack( is, fluid ); diff --git a/src/main/java/appeng/fluids/helper/FluidSyncHelper.java b/src/main/java/appeng/fluids/helper/FluidSyncHelper.java index 52dd93118..1690bff14 100644 --- a/src/main/java/appeng/fluids/helper/FluidSyncHelper.java +++ b/src/main/java/appeng/fluids/helper/FluidSyncHelper.java @@ -7,7 +7,7 @@ import java.util.Map; import java.util.Objects; import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.IContainerListener; +import net.minecraft.inventory.container.IContainerListener; import appeng.api.storage.data.IAEFluidStack; import appeng.core.sync.network.NetworkHandler; diff --git a/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java b/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java index 0b1d8a616..8451fd2d5 100644 --- a/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java +++ b/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java @@ -27,6 +27,7 @@ import appeng.api.AEApi; import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEFluidStack; +import appeng.core.Api; import appeng.fluids.helper.FluidCellConfig; import appeng.items.materials.MaterialType; import appeng.items.storage.AbstractStorageCell; @@ -114,4 +115,4 @@ public final class BasicFluidStorageCell extends AbstractStorageCell, IBaseMo FluidStack fluidStack = input.getFluidStack(); // Insert - int wasFillled = this.fluidHandler.fill( fluidStack, type != Actionable.SIMULATE ); - int remaining = fluidStack.amount - wasFillled; - if( fluidStack.amount == remaining ) + int wasFillled = this.fluidHandler.fill( fluidStack, type.getFluidAction() ); + int remaining = fluidStack.getAmount() - wasFillled; + if( fluidStack.getAmount() == remaining ) { // The stack was unmodified, target tank is full return input; @@ -95,7 +94,7 @@ public class FluidHandlerAdapter implements IMEInventory, IBaseMo } } - fluidStack.amount = remaining; + fluidStack.setAmount( remaining ); return AEFluidStack.fromFluidStack( fluidStack ); } @@ -104,10 +103,9 @@ public class FluidHandlerAdapter implements IMEInventory, IBaseMo public IAEFluidStack extractItems( IAEFluidStack request, Actionable mode, IActionSource src ) { FluidStack requestedFluidStack = request.getFluidStack(); - final boolean doDrain = ( mode == Actionable.MODULATE ); // Drain the fluid from the tank - FluidStack gathered = this.fluidHandler.drain( requestedFluidStack, doDrain ); + FluidStack gathered = this.fluidHandler.drain( requestedFluidStack, mode.getFluidAction() ); if( gathered == null ) { // If nothing was pulled from the tank, return null @@ -204,8 +202,7 @@ public class FluidHandlerAdapter implements IMEInventory, IBaseMo public List update() { final List changes = new ArrayList<>(); - final IFluidTankProperties[] tankProperties = this.fluidHandler.getTankProperties(); - final int slots = tankProperties.length; + final int slots = fluidHandler.getTanks(); // Make room for new slots if( slots > this.cachedAeStacks.length ) @@ -217,7 +214,7 @@ public class FluidHandlerAdapter implements IMEInventory, IBaseMo { // Save the old stuff final IAEFluidStack oldAEFS = this.cachedAeStacks[slot]; - final FluidStack newFS = tankProperties[slot].getContents(); + final FluidStack newFS = fluidHandler.getFluidInTank( slot ); this.handlePossibleSlotChanges( slot, oldAEFS, newFS, changes ); } @@ -263,12 +260,12 @@ public class FluidHandlerAdapter implements IMEInventory, IBaseMo private void handleStackSizeChanged( int slot, IAEFluidStack oldAeFS, FluidStack newFS, List changes ) { // Still the same fluid, but amount might have changed - final long diff = newFS.amount - oldAeFS.getStackSize(); + final long diff = newFS.getAmount() - oldAeFS.getStackSize(); if( diff != 0 ) { final IAEFluidStack stack = oldAeFS.copy(); - stack.setStackSize( newFS.amount ); + stack.setStackSize( newFS.getAmount() ); this.cachedAeStacks[slot] = stack; diff --git a/src/main/java/appeng/fluids/parts/PartFluidExportBus.java b/src/main/java/appeng/fluids/parts/PartFluidExportBus.java index b09159b81..ccab1e581 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidExportBus.java +++ b/src/main/java/appeng/fluids/parts/PartFluidExportBus.java @@ -24,8 +24,10 @@ import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; @@ -103,12 +105,16 @@ public class PartFluidExportBus extends PartSharedFluidBus } final TileEntity te = this.getConnectedTE(); - - if( te != null && te.hasCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ) ) + LazyOptional fhOpt = LazyOptional.empty(); + if( te != null ) + { + te.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ); + } + if( fhOpt.isPresent() ) { try { - final IFluidHandler fh = te.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ); + final IFluidHandler fh = fhOpt.orElse( null ); final IMEMonitor inv = this.getProxy().getStorage().getInventory( this.getChannel() ); if( fh != null ) @@ -126,7 +132,7 @@ public class PartFluidExportBus extends PartSharedFluidBus if( out != null ) { - int wasInserted = fh.fill( out.getFluidStack(), true ); + int wasInserted = fh.fill( out.getFluidStack(), FluidAction.EXECUTE ); if( wasInserted > 0 ) { diff --git a/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java b/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java index b3ea4110d..8facd7d1b 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java +++ b/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.List; import net.minecraft.block.Block; -import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -18,10 +17,11 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.fluid.Fluid; +import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.IFluidBlock; +import net.minecraftforge.fluids.capability.templates.FluidTank; import appeng.api.AEApi; import appeng.api.config.AccessRestriction; @@ -40,6 +40,7 @@ import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; import appeng.api.util.AEPartLocation; +import appeng.core.Api; import appeng.core.sync.GuiBridge; import appeng.fluids.util.AEFluidInventory; import appeng.fluids.util.IAEFluidInventory; @@ -124,10 +125,10 @@ public class PartFluidFormationPlane extends PartAbstractFormationPlane e.isFluidEqual( fs ) ); + if( !FluidUtil.tryPlaceFluid( null, w, Hand.MAIN_HAND, pos, tank, fs ) ) { return input; } diff --git a/src/main/java/appeng/fluids/parts/PartFluidImportBus.java b/src/main/java/appeng/fluids/parts/PartFluidImportBus.java index 4c2e5f7aa..02638e052 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidImportBus.java +++ b/src/main/java/appeng/fluids/parts/PartFluidImportBus.java @@ -24,9 +24,11 @@ import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; @@ -98,17 +100,21 @@ public class PartFluidImportBus extends PartSharedFluidBus } final TileEntity te = this.getConnectedTE(); - - if( te != null && te.hasCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ) ) + LazyOptional fhOpt = LazyOptional.empty(); + if( te != null ) + { + te.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ); + } + if( fhOpt.isPresent() ) { try { - final IFluidHandler fh = te.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite() ); + final IFluidHandler fh = fhOpt.orElse( null ); final IMEMonitor inv = this.getProxy().getStorage().getInventory( this.getChannel() ); if( fh != null ) { - final FluidStack fluidStack = fh.drain( this.calculateAmountToSend(), false ); + final FluidStack fluidStack = fh.drain( this.calculateAmountToSend(), FluidAction.SIMULATE ); if( this.filterEnabled() && !this.isInFilter( fluidStack ) ) { @@ -126,7 +132,7 @@ public class PartFluidImportBus extends PartSharedFluidBus aeFluidStack.decStackSize( notInserted.getStackSize() ); } - fh.drain( aeFluidStack.getFluidStack(), true ); + fh.drain( aeFluidStack.getFluidStack(), FluidAction.EXECUTE ); return TickRateModulation.FASTER; } diff --git a/src/main/java/appeng/fluids/parts/PartFluidInterface.java b/src/main/java/appeng/fluids/parts/PartFluidInterface.java index caa2f21f9..8e1727d14 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidInterface.java +++ b/src/main/java/appeng/fluids/parts/PartFluidInterface.java @@ -32,7 +32,6 @@ import net.minecraft.util.math.Vec3d; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.IItemHandler; -import appeng.api.AEApi; import appeng.api.config.Upgrades; import appeng.api.networking.IGridNode; import appeng.api.networking.events.MENetworkChannelsChanged; @@ -49,6 +48,7 @@ import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.data.IAEStack; import appeng.api.util.AECableType; import appeng.api.util.IConfigManager; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.sync.GuiBridge; import appeng.fluids.helper.DualityFluidInterface; diff --git a/src/main/java/appeng/fluids/parts/PartFluidLevelEmitter.java b/src/main/java/appeng/fluids/parts/PartFluidLevelEmitter.java index 3dee92eed..7af658f1e 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidLevelEmitter.java +++ b/src/main/java/appeng/fluids/parts/PartFluidLevelEmitter.java @@ -7,6 +7,7 @@ import java.util.Random; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ParticleTypes; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Hand; import net.minecraft.util.EnumParticleTypes; @@ -37,6 +38,7 @@ import appeng.api.storage.data.IItemList; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.api.util.IConfigManager; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.sync.GuiBridge; import appeng.fluids.util.AEFluidInventory; diff --git a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java index a22e938e0..f06b0aa6b 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java +++ b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java @@ -22,7 +22,6 @@ package appeng.fluids.parts; import java.util.Collections; import java.util.List; import java.util.Objects; - import javax.annotation.Nonnull; import net.minecraft.entity.player.PlayerEntity; @@ -33,10 +32,10 @@ import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.Vec3d; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; -import appeng.api.AEApi; import appeng.api.config.AccessRestriction; import appeng.api.config.FuzzyMode; import appeng.api.config.IncludeExclude; @@ -63,6 +62,7 @@ import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; import appeng.api.util.AEPartLocation; import appeng.capabilities.Capabilities; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.settings.TickRates; import appeng.core.sync.GuiBridge; @@ -118,7 +118,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni { Direction targetSide = this.getSide().getFacing().getOpposite(); // Prioritize a handler to directly link to another ME network - IStorageMonitorableAccessor accessor = target.getCapability( Capabilities.STORAGE_MONITORABLE_ACCESSOR, targetSide ); + IStorageMonitorableAccessor accessor = target.getCapability( Capabilities.STORAGE_MONITORABLE_ACCESSOR, targetSide ).orElse( null ); if( accessor != null ) { IStorageMonitorable inventory = accessor.getInventory( this.source ); @@ -135,7 +135,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni } // Check via cap for IItemHandler - IFluidHandler handlerExt = target.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, targetSide ); + IFluidHandler handlerExt = target.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, targetSide ).orElse( null ); if( handlerExt != null ) { return new FluidHandlerAdapter( handlerExt, this ); @@ -195,9 +195,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni @Override protected void resetCache( final boolean fullReset ) { - if( this.getHost() == null || this.getHost().getTile() == null || this.getHost().getTile().getWorld() == null || this.getHost() - .getTile() - .getWorld().isRemote ) + if( this.getHost() == null || this.getHost().getTile() == null || this.getHost().getTile().getWorld() == null || this.getHost().getTile().getWorld().isRemote ) { return; } @@ -267,9 +265,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni { if( this.getProxy().isActive() ) { - this.getProxy() - .getStorage() - .postAlterationOfStoredItems( Api.INSTANCE.storage().getStorageChannel( IFluidStorageChannel.class ), change, this.source ); + this.getProxy().getStorage().postAlterationOfStoredItems( Api.INSTANCE.storage().getStorageChannel( IFluidStorageChannel.class ), change, this.source ); } } catch( final GridAccessException e ) @@ -333,8 +329,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni if( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 ) { - this.handler.setPartitionList( - new FuzzyPriorityList( priorityList, (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE ) ) ); + this.handler.setPartitionList( new FuzzyPriorityList( priorityList, (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE ) ) ); } else { @@ -431,16 +426,17 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni final Direction targetSide = this.getSide().getFacing().getOpposite(); - if( target.hasCapability( Capabilities.STORAGE_MONITORABLE_ACCESSOR, targetSide ) ) + LazyOptional accessorOpt = target.getCapability( Capabilities.STORAGE_MONITORABLE_ACCESSOR, targetSide ); + if( accessorOpt.isPresent() ) { - return Objects.hash( target, target.getCapability( Capabilities.STORAGE_MONITORABLE_ACCESSOR, targetSide ) ); + return Objects.hash( target, accessorOpt.orElse( null ) ); } - final IFluidHandler fluidHandler = target.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, targetSide ); + final IFluidHandler fluidHandler = target.getCapability( CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, targetSide ).orElse( null ); if( fluidHandler != null ) { - return Objects.hash( target, fluidHandler, fluidHandler.getTankProperties().length ); + return Objects.hash( target, fluidHandler, fluidHandler.getTanks() ); } return 0; diff --git a/src/main/java/appeng/fluids/parts/PartSharedFluidBus.java b/src/main/java/appeng/fluids/parts/PartSharedFluidBus.java index f49e6b205..3ab86682e 100644 --- a/src/main/java/appeng/fluids/parts/PartSharedFluidBus.java +++ b/src/main/java/appeng/fluids/parts/PartSharedFluidBus.java @@ -25,12 +25,12 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import appeng.api.AEApi; import appeng.api.config.RedstoneMode; import appeng.api.config.Upgrades; import appeng.api.networking.ticking.IGridTickable; @@ -38,6 +38,7 @@ import appeng.api.networking.ticking.TickRateModulation; import appeng.api.parts.IPartCollisionHelper; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.util.AECableType; +import appeng.core.Api; import appeng.core.sync.GuiBridge; import appeng.fluids.util.AEFluidInventory; import appeng.fluids.util.IAEFluidTank; @@ -130,7 +131,7 @@ public abstract class PartSharedFluidBus extends PartUpgradeable implements IGri { final World w = self.getWorld(); - if( w.getChunkProvider().getLoadedChunk( pos.getX() >> 4, pos.getZ() >> 4 ) != null ) + if( w.getChunkProvider().isChunkLoaded( new ChunkPos( pos ) ) ) { return w.getTileEntity( pos ); } diff --git a/src/main/java/appeng/fluids/registries/BasicFluidCellGuiHandler.java b/src/main/java/appeng/fluids/registries/BasicFluidCellGuiHandler.java index 5a3144abb..35aca83a8 100644 --- a/src/main/java/appeng/fluids/registries/BasicFluidCellGuiHandler.java +++ b/src/main/java/appeng/fluids/registries/BasicFluidCellGuiHandler.java @@ -23,7 +23,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import appeng.api.AEApi; import appeng.api.implementations.tiles.IChestOrDrive; import appeng.api.storage.ICellGuiHandler; import appeng.api.storage.ICellHandler; @@ -32,6 +31,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEStack; import appeng.api.util.AEPartLocation; +import appeng.core.Api; import appeng.core.sync.GuiBridge; import appeng.util.Platform; diff --git a/src/main/java/appeng/fluids/tile/TileFluidInterface.java b/src/main/java/appeng/fluids/tile/TileFluidInterface.java index 0eb01993f..62c26ae6b 100644 --- a/src/main/java/appeng/fluids/tile/TileFluidInterface.java +++ b/src/main/java/appeng/fluids/tile/TileFluidInterface.java @@ -43,6 +43,7 @@ import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; +import appeng.core.Api; import appeng.core.sync.GuiBridge; import appeng.fluids.helper.DualityFluidInterface; import appeng.fluids.helper.IFluidInterfaceHost; diff --git a/src/main/java/appeng/hooks/IBlockTool.java b/src/main/java/appeng/hooks/IBlockTool.java index 12527e488..6c3cab929 100644 --- a/src/main/java/appeng/hooks/IBlockTool.java +++ b/src/main/java/appeng/hooks/IBlockTool.java @@ -21,7 +21,7 @@ package appeng.hooks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -31,8 +31,9 @@ import net.minecraft.world.World; public interface IBlockTool { // Workaround for dispenser logic. - ActionResult onItemUse( ItemStack is, PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ); + //TODO ItemUseContext + ActionResultType onItemUse( ItemStack is, PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ); - ActionResult onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ); + ActionResultType onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ); } diff --git a/src/main/java/appeng/hooks/TickHandler.java b/src/main/java/appeng/hooks/TickHandler.java index f2c4f0dcc..aaa65b803 100644 --- a/src/main/java/appeng/hooks/TickHandler.java +++ b/src/main/java/appeng/hooks/TickHandler.java @@ -35,6 +35,7 @@ import com.google.common.base.Stopwatch; import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.Multimap; +import net.minecraft.world.IWorld; import net.minecraft.world.World; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.TickEvent.Phase; @@ -49,6 +50,7 @@ import appeng.api.parts.CableRenderMode; import appeng.api.util.AEColor; import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.sync.packets.PacketPaintedEntity; import appeng.crafting.CraftingJob; @@ -64,7 +66,7 @@ public class TickHandler public static final TickHandler INSTANCE = new TickHandler(); private final Queue> serverQueue = new ArrayDeque<>(); private final Multimap craftingJobs = LinkedListMultimap.create(); - private final WeakHashMap>> callQueue = new WeakHashMap<>(); + private final WeakHashMap>> callQueue = new WeakHashMap<>(); private final HandlerRep server = new HandlerRep(); private final HandlerRep client = new HandlerRep(); private final HashMap cliPlayerColors = new HashMap<>(); @@ -80,7 +82,7 @@ public class TickHandler return this.cliPlayerColors; } - public void addCallable( final World w, final IWorldCallable c ) + public void addCallable( final IWorld w, final IWorldCallable c ) { if( w == null ) { diff --git a/src/main/java/appeng/items/materials/ItemMaterial.java b/src/main/java/appeng/items/materials/ItemMaterial.java index b27431b0d..8f5a5d29d 100644 --- a/src/main/java/appeng/items/materials/ItemMaterial.java +++ b/src/main/java/appeng/items/materials/ItemMaterial.java @@ -38,14 +38,12 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.EnumActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -86,7 +84,7 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, @OnlyIn( Dist.CLIENT ) @Override - public void addInformation(final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) + public void addInformation( final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) { super.addInformation( stack, world, lines, advancedTooltips ); @@ -98,7 +96,7 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, if( mt == MaterialType.NAME_PRESS ) { - final CompoundNBT c = stack.getOrCreateTag(); + final CompoundNBT c = stack.getOrCreateTag(); lines.add( c.getString( "InscribeName" ) ); } @@ -223,16 +221,18 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, } @Override - public EnumActionResult onItemUseFirst( final PlayerEntity player, final World world, final BlockPos pos, final Direction side, final float hitX, final float hitY, final float hitZ, final Hand hand ) + public ActionResultType onItemUseFirst( ItemStack stack, ItemUseContext context ) { + PlayerEntity player = context.getPlayer(); + Hand hand = context.getHand(); if( player.isShiftKeyDown() ) { - final TileEntity te = world.getTileEntity( pos ); + final TileEntity te = context.getWorld().getTileEntity( context.getPos() ); IItemHandler upgrades = null; if( te instanceof IPartHost ) { - final SelectedPart sp = ( (IPartHost) te ).selectPart( new Vec3d( hitX, hitY, hitZ ) ); + final SelectedPart sp = ( (IPartHost) te ).selectPart( context.getHitVec() ); if( sp.part instanceof IUpgradeableHost ) { upgrades = ( (ISegmentedInventory) sp.part ).getInventoryByName( "upgrades" ); @@ -252,17 +252,17 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, { if( player.world.isRemote ) { - return EnumActionResult.PASS; + return ActionResultType.PASS; } final InventoryAdaptor ad = new AdaptorItemHandler( upgrades ); player.setHeldItem( hand, ad.addItems( player.getHeldItem( hand ) ) ); - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } } } - return super.onItemUseFirst( player, world, pos, side, hitX, hitY, hitZ, hand ); + return super.onItemUseFirst( stack, context ); } @Override @@ -279,18 +279,14 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, try { - eqi = droppedEntity.getConstructor( World.class, double.class, double.class, double.class, ItemStack.class ) - .newInstance( w, location.getPosX(), - location.getPosY(), location.getPosZ(), itemstack ); + eqi = droppedEntity.getConstructor( World.class, double.class, double.class, double.class, ItemStack.class ).newInstance( w, location.getPosX(), location.getPosY(), location.getPosZ(), itemstack ); } catch( final Throwable t ) { throw new IllegalStateException( t ); } - eqi.motionX = location.motionX; - eqi.motionY = location.motionY; - eqi.motionZ = location.motionZ; + eqi.setMotion( location.getMotion() ); if( location instanceof ItemEntity && eqi instanceof ItemEntity ) { @@ -379,5 +375,4 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, return o1.compareTo( o2 ); } } - } diff --git a/src/main/java/appeng/items/materials/MaterialType.java b/src/main/java/appeng/items/materials/MaterialType.java index 01e42d439..c090df5d0 100644 --- a/src/main/java/appeng/items/materials/MaterialType.java +++ b/src/main/java/appeng/items/materials/MaterialType.java @@ -22,7 +22,7 @@ package appeng.items.materials; import java.util.EnumSet; import java.util.Set; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -163,7 +163,8 @@ public enum MaterialType public ItemStack stack( final int size ) { - return new ItemStack( this.getItemInstance(), size, this.getDamageValue() ); + //FIXME + return new ItemStack( this.getItemInstance(), size/*, this.getDamageValue()*/ ); } Set getFeature() diff --git a/src/main/java/appeng/items/misc/ItemCrystalSeed.java b/src/main/java/appeng/items/misc/ItemCrystalSeed.java index 4a7fb09e9..462bf61b2 100644 --- a/src/main/java/appeng/items/misc/ItemCrystalSeed.java +++ b/src/main/java/appeng/items/misc/ItemCrystalSeed.java @@ -33,6 +33,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.NonNullList; import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -41,6 +42,7 @@ import appeng.api.AEApi; import appeng.api.definitions.IMaterials; import appeng.api.implementations.items.IGrowableCrystal; import appeng.api.recipes.ResolverResult; +import appeng.core.Api; import appeng.core.localization.ButtonToolTips; import appeng.entity.EntityGrowingCrystal; import appeng.items.AEBaseItem; @@ -92,13 +94,13 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal { if( is.hasTag() ) { - return is.getTag().getInteger( "progress" ); + return is.getTag().getInt( "progress" ); } else { final int progress; final CompoundNBT comp = is.getOrCreateTag(); - comp.setInteger( "progress", progress = is.getDamage() ); + comp.putInt( "progress", progress = is.getDamage() ); is.setItemDamage( ( is.getDamage() / SINGLE_OFFSET ) * SINGLE_OFFSET ); return progress; } @@ -148,7 +150,7 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal private void setProgress( final ItemStack is, final int newDamage ) { final CompoundNBT comp = is.getOrCreateTag(); - comp.setInteger( "progress", newDamage ); + comp.putInt( "progress", newDamage ); is.setItemDamage( is.getDamage() / LEVEL_OFFSET * LEVEL_OFFSET ); } @@ -162,9 +164,9 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal @OnlyIn( Dist.CLIENT ) public void addInformation(final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) { - lines.add( ButtonToolTips.DoesntDespawn.getLocal() ); + lines.add( ButtonToolTips.DoesntDespawn.getTranslationKey() ); final int progress = getProgress( stack ) % SINGLE_OFFSET; - lines.add( Math.floor( (float) progress / (float) ( SINGLE_OFFSET / 100 ) ) + "%" ); + lines.add( new StringTextComponent( Math.floor( (float) progress / (float) ( SINGLE_OFFSET / 100 ) ) + "%" ) ); super.addInformation( stack, world, lines, advancedTooltips ); } @@ -227,9 +229,7 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal { final EntityGrowingCrystal egc = new EntityGrowingCrystal( world, location.getPosX(), location.getPosY(), location.getPosZ(), itemstack ); - egc.motionX = location.motionX; - egc.motionY = location.motionY; - egc.motionZ = location.motionZ; + egc.setMotion( location.getMotion() ); // Cannot read the pickup delay of the original item, so we // use the pickup delay used for items dropped by a player instead diff --git a/src/main/java/appeng/items/misc/ItemCrystalSeedRendering.java b/src/main/java/appeng/items/misc/ItemCrystalSeedRendering.java index f2171ffbe..f0e882026 100644 --- a/src/main/java/appeng/items/misc/ItemCrystalSeedRendering.java +++ b/src/main/java/appeng/items/misc/ItemCrystalSeedRendering.java @@ -22,7 +22,7 @@ package appeng.items.misc; import com.google.common.collect.ImmutableList; import net.minecraft.client.renderer.ItemMeshDefinition; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/appeng/items/misc/ItemEncodedPattern.java b/src/main/java/appeng/items/misc/ItemEncodedPattern.java index 72e6c53b6..c5a074733 100644 --- a/src/main/java/appeng/items/misc/ItemEncodedPattern.java +++ b/src/main/java/appeng/items/misc/ItemEncodedPattern.java @@ -27,21 +27,20 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.Direction; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import appeng.api.AEApi; import appeng.api.implementations.ICraftingPatternItem; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.storage.data.IAEItemStack; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.localization.GuiText; import appeng.helpers.InvalidPatternHelper; @@ -65,13 +64,13 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt { this.clearPattern( player.getHeldItem( hand ), player ); - return new ActionResult<>( EnumActionResult.SUCCESS, player.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, player.getHeldItem( hand ) ); } @Override - public EnumActionResult onItemUseFirst( final PlayerEntity player, final World world, final BlockPos pos, final Direction side, final float hitX, final float hitY, final float hitZ, final Hand hand ) + public ActionResultType onItemUseFirst( ItemStack stack, ItemUseContext context ) { - return this.clearPattern( player.getHeldItem( hand ), player ) ? EnumActionResult.SUCCESS : EnumActionResult.PASS; + return this.clearPattern( stack, context.getPlayer() ) ? ActionResultType.SUCCESS : ActionResultType.PASS; } private boolean clearPattern( final ItemStack stack, final PlayerEntity player ) @@ -104,7 +103,7 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt @Override @OnlyIn( Dist.CLIENT ) - public void addInformation(final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) + public void addInformation( final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) { final ICraftingPatternDetails details = this.getPatternForItem( stack, world ); @@ -150,7 +149,7 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt if( stack.hasDisplayName() ) { - stack.removeSubCompound( "display" ); + stack.removeChildTag( "display" ); } final boolean isCrafting = details.isCraftable(); diff --git a/src/main/java/appeng/items/misc/ItemPaintBallRendering.java b/src/main/java/appeng/items/misc/ItemPaintBallRendering.java index 8300eccb5..4019aad9b 100644 --- a/src/main/java/appeng/items/misc/ItemPaintBallRendering.java +++ b/src/main/java/appeng/items/misc/ItemPaintBallRendering.java @@ -19,7 +19,8 @@ package appeng.items.misc; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; + +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.item.ItemStack; import appeng.api.util.AEColor; diff --git a/src/main/java/appeng/items/parts/ItemFacade.java b/src/main/java/appeng/items/parts/ItemFacade.java index b314a14e5..3ae5b7074 100644 --- a/src/main/java/appeng/items/parts/ItemFacade.java +++ b/src/main/java/appeng/items/parts/ItemFacade.java @@ -28,10 +28,12 @@ import net.minecraft.block.BlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.block.Blocks; +import net.minecraft.item.ItemUseContext; import net.minecraft.item.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ActionResultType; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumBlockRenderType; @@ -71,9 +73,9 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte } @Override - public EnumActionResult onItemUseFirst( final PlayerEntity player, final World world, final BlockPos pos, final Direction side, final float hitX, final float hitY, final float hitZ, final Hand hand ) + public ActionResultType onItemUseFirst( ItemStack stack, ItemUseContext context ) { - return Api.INSTANCE.partHelper().placeBus( player.getHeldItem( hand ), pos, side, player, hand, world ); + return Api.INSTANCE.partHelper().placeBus( stack, context.getPos(), context.getFace(), context.getPlayer(), context.getHand(), context.getWorld() ); } @Override diff --git a/src/main/java/appeng/items/parts/ItemPart.java b/src/main/java/appeng/items/parts/ItemPart.java index 4e56b321f..0a703fa43 100644 --- a/src/main/java/appeng/items/parts/ItemPart.java +++ b/src/main/java/appeng/items/parts/ItemPart.java @@ -37,6 +37,8 @@ import com.google.common.base.Preconditions; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.EnumActionResult; import net.minecraft.util.Hand; @@ -49,6 +51,7 @@ import appeng.api.implementations.items.IItemGroup; import appeng.api.parts.IPart; import appeng.api.parts.IPartItem; import appeng.api.util.AEColor; +import appeng.core.Api; import appeng.core.features.ActivityState; import appeng.core.features.ItemStackSrc; import appeng.core.localization.GuiText; @@ -152,14 +155,16 @@ public final class ItemPart extends AEBaseItem implements IPartItem, IItemGroup } @Override - public EnumActionResult onItemUse( final PlayerEntity player, final World w, final BlockPos pos, final Hand hand, final Direction side, final float hitX, final float hitY, final float hitZ ) + public ActionResultType onItemUse( ItemUseContext context ) { - if( this.getTypeByStack( player.getHeldItem( hand ) ) == PartType.INVALID_TYPE ) + PlayerEntity player = context.getPlayer(); + ItemStack held = player.getHeldItem( context.getHand() ); + if( this.getTypeByStack( held ) == PartType.INVALID_TYPE ) { - return EnumActionResult.FAIL; + return ActionResultType.FAIL; } - return Api.INSTANCE.partHelper().placeBus( player.getHeldItem( hand ), pos, side, player, hand, w ); + return Api.INSTANCE.partHelper().placeBus( held, context.getPos(), context.getFace(), player, context.getHand(), context.getWorld() ); } @Override diff --git a/src/main/java/appeng/items/parts/ItemPartRendering.java b/src/main/java/appeng/items/parts/ItemPartRendering.java index 78ef8bbab..7857c286f 100644 --- a/src/main/java/appeng/items/parts/ItemPartRendering.java +++ b/src/main/java/appeng/items/parts/ItemPartRendering.java @@ -24,7 +24,7 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/appeng/items/parts/PartType.java b/src/main/java/appeng/items/parts/PartType.java index 79fa6f2e5..851a217c8 100644 --- a/src/main/java/appeng/items/parts/PartType.java +++ b/src/main/java/appeng/items/parts/PartType.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; import com.google.common.collect.ImmutableList; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/appeng/items/storage/AbstractStorageCell.java b/src/main/java/appeng/items/storage/AbstractStorageCell.java index 4e85bf495..d800600f2 100644 --- a/src/main/java/appeng/items/storage/AbstractStorageCell.java +++ b/src/main/java/appeng/items/storage/AbstractStorageCell.java @@ -26,7 +26,9 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.EnumActionResult; import net.minecraft.util.Direction; import net.minecraft.util.Hand; @@ -48,6 +50,7 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; import appeng.core.AEConfig; +import appeng.core.Api; import appeng.core.features.AEFeature; import appeng.core.localization.GuiText; import appeng.items.AEBaseItem; @@ -162,7 +165,7 @@ public abstract class AbstractStorageCell> extends AEBaseI public ActionResult onItemRightClick( final World world, final PlayerEntity player, final Hand hand ) { this.disassembleDrive( player.getHeldItem( hand ), world, player ); - return new ActionResult<>( EnumActionResult.SUCCESS, player.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, player.getHeldItem( hand ) ); } private boolean disassembleDrive( final ItemStack stack, final World world, final PlayerEntity player ) @@ -206,9 +209,9 @@ public abstract class AbstractStorageCell> extends AEBaseI // drop empty storage cell case this.dropEmptyStorageCellCase( ia, player ); - if( player.inventoryContainer != null ) + if( player.container != null ) { - player.inventoryContainer.detectAndSendChanges(); + player.container.detectAndSendChanges(); } return true; @@ -221,9 +224,9 @@ public abstract class AbstractStorageCell> extends AEBaseI protected abstract void dropEmptyStorageCellCase( final InventoryAdaptor ia, final PlayerEntity player ); @Override - public EnumActionResult onItemUseFirst( final PlayerEntity player, final World world, final BlockPos pos, final Direction side, final float hitX, final float hitY, final float hitZ, final Hand hand ) + public ActionResultType onItemUseFirst( ItemStack stack, ItemUseContext context ) { - return this.disassembleDrive( player.getHeldItem( hand ), world, player ) ? EnumActionResult.SUCCESS : EnumActionResult.PASS; + return this.disassembleDrive( stack, context.getWorld(), context.getPlayer() ) ? ActionResultType.SUCCESS : ActionResultType.PASS; } @Override diff --git a/src/main/java/appeng/items/storage/BasicItemStorageCell.java b/src/main/java/appeng/items/storage/BasicItemStorageCell.java index e31a0b6eb..cf45815ae 100644 --- a/src/main/java/appeng/items/storage/BasicItemStorageCell.java +++ b/src/main/java/appeng/items/storage/BasicItemStorageCell.java @@ -26,6 +26,7 @@ import appeng.api.AEApi; import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; +import appeng.core.Api; import appeng.items.materials.MaterialType; import appeng.util.InventoryAdaptor; diff --git a/src/main/java/appeng/items/storage/ItemCreativeStorageCell.java b/src/main/java/appeng/items/storage/ItemCreativeStorageCell.java index 8b21bca6c..4c93cbbc3 100644 --- a/src/main/java/appeng/items/storage/ItemCreativeStorageCell.java +++ b/src/main/java/appeng/items/storage/ItemCreativeStorageCell.java @@ -35,6 +35,7 @@ import appeng.api.storage.ICellInventoryHandler; import appeng.api.storage.ICellWorkbenchItem; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.channels.IItemStorageChannel; +import appeng.core.Api; import appeng.items.AEBaseItem; import appeng.items.contents.CellConfig; diff --git a/src/main/java/appeng/items/storage/ItemSpatialStorageCell.java b/src/main/java/appeng/items/storage/ItemSpatialStorageCell.java index 97c55929e..28d35fae9 100644 --- a/src/main/java/appeng/items/storage/ItemSpatialStorageCell.java +++ b/src/main/java/appeng/items/storage/ItemSpatialStorageCell.java @@ -110,7 +110,7 @@ public class ItemSpatialStorageCell extends AEBaseItem implements ISpatialStorag if( is.hasTag() ) { final CompoundNBT c = is.getTag(); - return new WorldCoord( c.getInteger( NBT_SIZE_X_KEY ), c.getInteger( NBT_SIZE_Y_KEY ), c.getInteger( NBT_SIZE_Z_KEY ) ); + return new WorldCoord( c.getInt( NBT_SIZE_X_KEY ), c.getInt( NBT_SIZE_Y_KEY ), c.getInt( NBT_SIZE_Z_KEY ) ); } return new WorldCoord( 0, 0, 0 ); } @@ -121,7 +121,7 @@ public class ItemSpatialStorageCell extends AEBaseItem implements ISpatialStorag if( is.hasTag() ) { final CompoundNBT c = is.getTag(); - return c.getInteger( NBT_CELL_ID_KEY ); + return c.getInt( NBT_CELL_ID_KEY ); } return -1; } @@ -182,9 +182,9 @@ public class ItemSpatialStorageCell extends AEBaseItem implements ISpatialStorag { final CompoundNBT c = is.getOrCreateTag(); - c.setInteger( NBT_CELL_ID_KEY, id ); - c.setInteger( NBT_SIZE_X_KEY, size.getX() ); - c.setInteger( NBT_SIZE_Y_KEY, size.getY() ); - c.setInteger( NBT_SIZE_Z_KEY, size.getZ() ); + c.putInt( NBT_CELL_ID_KEY, id ); + c.putInt( NBT_SIZE_X_KEY, size.getX() ); + c.putInt( NBT_SIZE_Y_KEY, size.getY() ); + c.putInt( NBT_SIZE_Z_KEY, size.getZ() ); } } diff --git a/src/main/java/appeng/items/tools/ToolBiometricCard.java b/src/main/java/appeng/items/tools/ToolBiometricCard.java index 53eaf4f31..2edbbffc0 100644 --- a/src/main/java/appeng/items/tools/ToolBiometricCard.java +++ b/src/main/java/appeng/items/tools/ToolBiometricCard.java @@ -107,7 +107,7 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public void setProfile( final ItemStack itemStack, final GameProfile profile ) { - final CompoundNBT tag = Platform.openNbtData( itemStack ); + final CompoundNBT tag = itemStack.getOrCreateTag(); if( profile != null ) { @@ -124,7 +124,7 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public GameProfile getProfile( final ItemStack is ) { - final CompoundNBT tag = Platform.openNbtData( is ); + final CompoundNBT tag = is.getOrCreateTag(); if( tag.contains( "profile" ) ) { return NBTUtil.readGameProfile( tag.getCompound( "profile" ) ); @@ -135,7 +135,7 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public EnumSet getPermissions( final ItemStack is ) { - final CompoundNBT tag = Platform.openNbtData( is ); + final CompoundNBT tag = is.getOrCreateTag(); final EnumSet result = EnumSet.noneOf( SecurityPermissions.class ); for( final SecurityPermissions sp : SecurityPermissions.values() ) @@ -152,14 +152,14 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public boolean hasPermission( final ItemStack is, final SecurityPermissions permission ) { - final CompoundNBT tag = Platform.openNbtData( is ); + final CompoundNBT tag = is.getOrCreateTag(); return tag.getBoolean( permission.name() ); } @Override public void removePermission( final ItemStack itemStack, final SecurityPermissions permission ) { - final CompoundNBT tag = Platform.openNbtData( itemStack ); + final CompoundNBT tag = itemStack.getOrCreateTag(); if( tag.contains( permission.name() ) ) { tag.remove( permission.name() ); @@ -169,7 +169,7 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public void addPermission( final ItemStack itemStack, final SecurityPermissions permission ) { - final CompoundNBT tag = Platform.openNbtData( itemStack ); + final CompoundNBT tag = itemStack.getOrCreateTag(); tag.putBoolean( permission.name(), true ); } diff --git a/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java b/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java index f6840f39b..cc5e157c1 100644 --- a/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java +++ b/src/main/java/appeng/items/tools/ToolBiometricCardRendering.java @@ -1,8 +1,7 @@ - package appeng.items.tools; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/appeng/items/tools/ToolMemoryCard.java b/src/main/java/appeng/items/tools/ToolMemoryCard.java index 4fa2d93bd..3385c6153 100644 --- a/src/main/java/appeng/items/tools/ToolMemoryCard.java +++ b/src/main/java/appeng/items/tools/ToolMemoryCard.java @@ -25,18 +25,15 @@ import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.Direction; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextComponent; -import net.minecraft.util.text.TextComponentUtils; import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.translation.I18n; -import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -54,18 +51,24 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard { private static final AEColor[] DEFAULT_COLOR_CODE = new AEColor[] { - AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, - AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, - }; + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + AEColor.TRANSPARENT, + }; public ToolMemoryCard() { - this.setMaxStackSize( 1 ); + super( new Properties().maxStackSize( 1 ) ); } @Override @OnlyIn( Dist.CLIENT ) - public void addInformation(final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) + public void addInformation( final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) { lines.add( this.getLocalizedName( this.getSettingsName( stack ) + ".name", this.getSettingsName( stack ) ) ); @@ -113,15 +116,15 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard @Override public void setMemoryCardContents( final ItemStack is, final String settingsName, final CompoundNBT data ) { - final CompoundNBT c = Platform.openNbtData( is ); - c.setString( "Config", settingsName ); - c.setTag( "Data", data ); + final CompoundNBT c = is.getOrCreateTag(); + c.putString( "Config", settingsName ); + c.put( "Data", data ); } @Override public String getSettingsName( final ItemStack is ) { - final CompoundNBT c = Platform.openNbtData( is ); + final CompoundNBT c = is.getOrCreateTag(); final String name = c.getString( "Config" ); return name == null || name.isEmpty() ? GuiText.Blank.getUnlocalized() : name; } @@ -129,8 +132,8 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard @Override public CompoundNBT getData( final ItemStack is ) { - final CompoundNBT c = Platform.openNbtData( is ); - CompoundNBT o = c.getCompoundTag( "Data" ); + final CompoundNBT c = is.getOrCreateTag(); + CompoundNBT o = c.getCompound( "Data" ); if( o == null ) { o = new CompoundNBT(); @@ -143,15 +146,21 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard { final CompoundNBT tag = this.getData( is ); - if( tag.hasKey( "colorCode" ) ) + if( tag.contains( "colorCode" ) ) { final int[] frequency = tag.getIntArray( "colorCode" ); final AEColor[] colorArray = AEColor.values(); return new AEColor[] { - colorArray[frequency[0]], colorArray[frequency[1]], colorArray[frequency[2]], colorArray[frequency[3]], - colorArray[frequency[4]], colorArray[frequency[5]], colorArray[frequency[6]], colorArray[frequency[7]], - }; + colorArray[frequency[0]], + colorArray[frequency[1]], + colorArray[frequency[2]], + colorArray[frequency[3]], + colorArray[frequency[4]], + colorArray[frequency[5]], + colorArray[frequency[6]], + colorArray[frequency[7]], + }; } return DEFAULT_COLOR_CODE; @@ -187,19 +196,19 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard } @Override - public EnumActionResult onItemUse( final PlayerEntity player, final World w, final BlockPos pos, final Hand hand, final Direction side, final float hx, final float hy, final float hz ) + public ActionResultType onItemUse( ItemUseContext context ) { - if( player.isShiftKeyDown() ) + if( context.getPlayer().isShiftKeyDown() ) { - if( !w.isRemote ) + if( !context.getPlayer().world.isRemote ) { - this.clearCard( player, w, hand ); + this.clearCard( context.getPlayer(), context.getWorld(), context.getHand() ); } - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } else { - return super.onItemUse( player, w, pos, hand, side, hx, hy, hz ); + return super.onItemUse( context ); } } @@ -215,11 +224,10 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard } return super.onItemRightClick( w, player, hand ); - } @Override - public boolean doesSneakBypassUse( final ItemStack itemstack, final IBlockReader world, final BlockPos pos, final PlayerEntity player ) + public boolean doesSneakBypassUse( ItemStack stack, IWorldReader world, BlockPos pos, PlayerEntity player ) { return true; } @@ -228,6 +236,6 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard { final IMemoryCard mem = (IMemoryCard) player.getHeldItem( hand ).getItem(); mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED ); - player.getHeldItem( hand ).setTagCompound( null ); + player.getHeldItem( hand ).setTag( null ); } } diff --git a/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java b/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java index 8f5c58121..e4d18c0e3 100644 --- a/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java +++ b/src/main/java/appeng/items/tools/ToolMemoryCardRendering.java @@ -1,8 +1,7 @@ - package appeng.items.tools; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/appeng/items/tools/ToolNetworkTool.java b/src/main/java/appeng/items/tools/ToolNetworkTool.java index aad07ca32..b5cfca6a2 100644 --- a/src/main/java/appeng/items/tools/ToolNetworkTool.java +++ b/src/main/java/appeng/items/tools/ToolNetworkTool.java @@ -21,17 +21,21 @@ package appeng.items.tools; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; -import net.minecraft.util.EnumActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; import net.minecraft.world.World; +import net.minecraftforge.common.ToolType; import appeng.api.implementations.guiobjects.IGuiItem; import appeng.api.implementations.guiobjects.IGuiItemObject; @@ -57,8 +61,7 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench public ToolNetworkTool() { - this.setMaxStackSize( 1 ); - this.setHarvestLevel( "wrench", 0 ); + super(new Item.Properties().maxStackSize( 1 ).addToolType( ToolType.get("wrench"), 0 )); } @Override @@ -75,20 +78,20 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench { final RayTraceResult mop = AppEng.proxy.getRTR(); - if( mop == null || mop.typeOfHit == RayTraceResult.Type.MISS ) + if( mop == null || mop.getType() == RayTraceResult.Type.MISS ) { - NetworkHandler.instance().sendToServer( new PacketClick( BlockPos.ORIGIN, null, 0, 0, 0, hand ) ); + NetworkHandler.instance().sendToServer( new PacketClick( BlockPos.ZERO, null, 0, 0, 0, hand ) ); } } - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } @Override - public EnumActionResult onItemUseFirst( final PlayerEntity player, final World world, final BlockPos pos, final Direction side, final float hitX, final float hitY, final float hitZ, final Hand hand ) + public ActionResultType onItemUseFirst( ItemStack stack, ItemUseContext context ) { final RayTraceResult mop = new RayTraceResult( new Vec3d( hitX, hitY, hitZ ), side, pos ); - final TileEntity te = world.getTileEntity( pos ); + final TileEntity te = context.getWorld().getTileEntity( context.getPos() ); if( te instanceof IPartHost ) { @@ -98,17 +101,17 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench { if( part.part instanceof INetworkToolAgent && !( (INetworkToolAgent) part.part ).showNetworkInfo( mop ) ) { - return EnumActionResult.FAIL; + return ActionResultType.FAIL; } - else if( player.isShiftKeyDown() ) + else if( context.getPlayer().isShiftKeyDown() ) { - return EnumActionResult.PASS; + return ActionResultType.PASS; } } } else if( te instanceof INetworkToolAgent && !( (INetworkToolAgent) te ).showNetworkInfo( mop ) ) { - return EnumActionResult.FAIL; + return ActionResultType.FAIL; } if( Platform.isClient() ) @@ -116,11 +119,11 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench NetworkHandler.instance().sendToServer( new PacketClick( pos, side, hitX, hitY, hitZ, hand ) ); } - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } @Override - public boolean doesSneakBypassUse( final ItemStack itemstack, final IBlockReader world, final BlockPos pos, final PlayerEntity player ) + public boolean doesSneakBypassUse( ItemStack stack, IWorldReader world, BlockPos pos, PlayerEntity player ) { return true; } diff --git a/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java b/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java index 90d910cc8..2c1a5ce97 100644 --- a/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java +++ b/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java @@ -50,10 +50,10 @@ public class ToolChargedStaff extends AEBasePoweredItem { for( int x = 0; x < 2; x++ ) { - final AxisAlignedBB entityBoundingBox = target.getEntityBoundingBox(); - final float dx = (float) ( Platform.getRandomFloat() * target.width + entityBoundingBox.minX ); - final float dy = (float) ( Platform.getRandomFloat() * target.height + entityBoundingBox.minY ); - final float dz = (float) ( Platform.getRandomFloat() * target.width + entityBoundingBox.minZ ); + final AxisAlignedBB entityBoundingBox = target.getBoundingBox(); + final float dx = (float) ( Platform.getRandomFloat() * target.getWidth() + entityBoundingBox.minX ); + final float dy = (float) ( Platform.getRandomFloat() * target.getHeight() + entityBoundingBox.minY ); + final float dz = (float) ( Platform.getRandomFloat() * target.getWidth() + entityBoundingBox.minZ ); AppEng.proxy.sendToAllNearExcept( null, dx, dy, dz, 32.0, target.world, new PacketLightning( dx, dy, dz ) ); } } diff --git a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java index 9e49dd00b..d69af3778 100644 --- a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java +++ b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import net.minecraft.item.SnowballItem; +import net.minecraft.util.ActionResultType; import net.minecraft.util.text.ITextComponent; import org.apache.commons.lang3.text.WordUtils; @@ -68,6 +70,7 @@ import appeng.api.util.DimensionalCoord; import appeng.block.networking.BlockCableBus; import appeng.block.paint.BlockPaint; import appeng.core.AEConfig; +import appeng.core.Api; import appeng.core.localization.GuiText; import appeng.helpers.IMouseWheelItem; import appeng.hooks.IBlockTool; @@ -104,13 +107,13 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe } @Override - public EnumActionResult onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) + public ActionResultType onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) { return this.onItemUse( p.getHeldItem( hand ), p, w, pos, hand, side, hitX, hitY, hitZ ); } @Override - public EnumActionResult onItemUse( ItemStack is, PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) + public ActionResultType onItemUse( ItemStack is, PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) { final Block blk = w.getBlockState( pos ).getBlock(); @@ -137,11 +140,11 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe if( !Platform.hasPermissions( new DimensionalCoord( w, pos ), p ) ) { - return EnumActionResult.FAIL; + return ActionResultType.FAIL; } final double powerPerUse = 100; - if( !paintBall.isEmpty() && paintBall.getItem() instanceof ItemSnowball ) + if( !paintBall.isEmpty() && paintBall.getItem() instanceof SnowballItem ) { final TileEntity te = w.getTileEntity( pos ); // clean cables. @@ -153,7 +156,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe { inv.extractItems( AEItemStack.fromItemStack( paintBall ), Actionable.MODULATE, new BaseActionSource() ); this.extractAEPower( is, powerPerUse, Actionable.MODULATE ); - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } } } @@ -166,7 +169,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe inv.extractItems( AEItemStack.fromItemStack( paintBall ), Actionable.MODULATE, new BaseActionSource() ); this.extractAEPower( is, powerPerUse, Actionable.MODULATE ); ( (TilePaint) painted ).cleanSide( side.getOpposite() ); - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } } else if( !paintBall.isEmpty() ) @@ -179,7 +182,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe { inv.extractItems( AEItemStack.fromItemStack( paintBall ), Actionable.MODULATE, new BaseActionSource() ); this.extractAEPower( is, powerPerUse, Actionable.MODULATE ); - return EnumActionResult.SUCCESS; + return ActionResultType.SUCCESS; } } } @@ -190,7 +193,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe this.cycleColors( is, paintBall, 1 ); } - return EnumActionResult.FAIL; + return ActionResultType.FAIL; } @Override @@ -220,7 +223,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe return null; } - if( paintBall.getItem() instanceof ItemSnowball ) + if( paintBall.getItem() instanceof SnowballItem ) { return AEColor.TRANSPARENT; } @@ -251,7 +254,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe final CompoundNBT c = is.getTag(); if( c != null && c.contains("color") ) { - final CompoundNBT color = c.getCompoundTag( "color" ); + final CompoundNBT color = c.getCompound( "color" ); final ItemStack oldColor = ItemStack.read(color); if( !oldColor.isEmpty() ) { @@ -336,13 +339,13 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe final CompoundNBT data = is.getOrCreateTag(); if( newColor.isEmpty() ) { - data.removeTag( "color" ); + data.remove( "color" ); } else { final CompoundNBT color = new CompoundNBT(); newColor.write(color); - data.setTag( "color", color ); + data.put( "color", color ); } } @@ -469,7 +472,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe } } - if( requestedAddition.getItem() instanceof ItemSnowball ) + if( requestedAddition.getItem() instanceof SnowballItem ) { return false; } diff --git a/src/main/java/appeng/items/tools/powered/ToolColorApplicatorRendering.java b/src/main/java/appeng/items/tools/powered/ToolColorApplicatorRendering.java index 8bca871ee..14a9970e2 100644 --- a/src/main/java/appeng/items/tools/powered/ToolColorApplicatorRendering.java +++ b/src/main/java/appeng/items/tools/powered/ToolColorApplicatorRendering.java @@ -1,8 +1,7 @@ - package appeng.items.tools.powered; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java index 04228f9de..9f101848b 100644 --- a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java +++ b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java @@ -35,6 +35,7 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; @@ -216,11 +217,11 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT if( target == null ) { - return new ActionResult<>( EnumActionResult.FAIL, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.FAIL, p.getHeldItem( hand ) ); } else { - if( target.typeOfHit == RayTraceResult.Type.BLOCK ) + if( target.getType() == RayTraceResult.Type.BLOCK ) { final BlockState state = w.getBlockState( target.getBlockPos() ); if( state.getMaterial() == Material.LAVA || state.getMaterial() == Material.WATER ) @@ -237,7 +238,7 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT } @Override - public EnumActionResult onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) + public ActionResultType onItemUse( PlayerEntity p, World w, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ ) { return this.onItemUse( p.getHeldItem( hand ), p, w, pos, hand, side, hitX, hitY, hitZ ); } diff --git a/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java b/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java index 1a747c2d5..ac49f7a92 100644 --- a/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java +++ b/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java @@ -20,7 +20,6 @@ package appeng.items.tools.powered; import java.util.List; - import javax.annotation.Nullable; import net.minecraft.block.Block; @@ -34,9 +33,9 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.DamageSource; import net.minecraft.util.Direction; -import net.minecraft.util.EnumActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -48,7 +47,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.items.IItemHandler; -import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.config.Upgrades; @@ -62,6 +60,7 @@ import appeng.api.util.AEColor; import appeng.api.util.DimensionalCoord; import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; @@ -89,15 +88,11 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< @OnlyIn( Dist.CLIENT ) @Override - public void addInformation(final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) + public void addInformation( final ItemStack stack, final World world, final List lines, final ITooltipFlag advancedTooltips ) { super.addInformation( stack, world, lines, advancedTooltips ); - final ICellInventoryHandler cdi = Api.INSTANCE - .registries() - .cell() - .getCellInventory( stack, null, - Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ) ); + final ICellInventoryHandler cdi = Api.INSTANCE.registries().cell().getCellInventory( stack, null, Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ) ); Api.INSTANCE.client().addCellInformation( cdi, lines ); } @@ -115,15 +110,10 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< shots += cu.getInstalledUpgrades( Upgrades.SPEED ); } - final ICellInventoryHandler inv = Api.INSTANCE - .registries() - .cell() - .getCellInventory( p.getHeldItem( hand ), null, - Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ) ); + final ICellInventoryHandler inv = Api.INSTANCE.registries().cell().getCellInventory( p.getHeldItem( hand ), null, Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ) ); if( inv != null ) { - final IItemList itemList = inv - .getAvailableItems( Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ).createList() ); + final IItemList itemList = inv.getAvailableItems( Api.INSTANCE.storage().getStorageChannel( IItemStorageChannel.class ).createList() ); IAEItemStack req = itemList.getFirstItem(); if( req instanceof IAEItemStack ) { @@ -135,23 +125,23 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< if( Platform.isClient() ) { - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } aeAmmo.setStackSize( 1 ); final ItemStack ammo = aeAmmo.createItemStack(); if( ammo == null ) { - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } aeAmmo = inv.extractItems( aeAmmo, Actionable.MODULATE, new PlayerSource( p, null ) ); if( aeAmmo == null ) { - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } - final LookDirection dir = Platform.getPlayerRay( p, p.getEyeHeight() ); + final LookDirection dir = Platform.getPlayerRay( p ); final Vec3d Vec3d = dir.getA(); final Vec3d Vec3d1 = dir.getB(); @@ -170,7 +160,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< { this.shootPaintBalls( type, w, p, Vec3d, Vec3d1, direction, d0, d1, d2 ); } - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } else { @@ -184,17 +174,16 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< { p.sendMessage( PlayerMessages.AmmoDepleted.get() ); } - return new ActionResult<>( EnumActionResult.SUCCESS, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, p.getHeldItem( hand ) ); } } } - return new ActionResult<>( EnumActionResult.FAIL, p.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.FAIL, p.getHeldItem( hand ) ); } private void shootPaintBalls( final ItemStack type, final World w, final PlayerEntity p, final Vec3d Vec3d, final Vec3d Vec3d1, final Vec3d direction, final double d0, final double d1, final double d2 ) { - final AxisAlignedBB bb = new AxisAlignedBB( Math.min( Vec3d.x, Vec3d1.x ), Math.min( Vec3d.y, Vec3d1.y ), Math.min( Vec3d.z, Vec3d1.z ), Math - .max( Vec3d.x, Vec3d1.x ), Math.max( Vec3d.y, Vec3d1.y ), Math.max( Vec3d.z, Vec3d1.z ) ).grow( 16, 16, 16 ); + final AxisAlignedBB bb = new AxisAlignedBB( Math.min( Vec3d.x, Vec3d1.x ), Math.min( Vec3d.y, Vec3d1.y ), Math.min( Vec3d.z, Vec3d1.z ), Math.max( Vec3d.x, Vec3d1.x ), Math.max( Vec3d.y, Vec3d1.y ), Math.max( Vec3d.z, Vec3d1.z ) ).grow( 16, 16, 16 ); Entity entity = null; final List list = w.getEntitiesWithinAABBExcludingEntity( p, bb ); @@ -247,9 +236,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< try { - AppEng.proxy.sendToAllNearExcept( null, d0, d1, d2, 128, w, - new PacketMatterCannon( d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) ( pos == null ? 32 : pos.hitVec - .squareDistanceTo( vec ) + 1 ) ) ); + AppEng.proxy.sendToAllNearExcept( null, d0, d1, d2, 128, w, new PacketMatterCannon( d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) ( pos == null ? 32 : pos.hitVec.squareDistanceTo( vec ) + 1 ) ) ); } catch( final Exception err ) { @@ -263,7 +250,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< final AEColor col = ipb.getColor( type ); // boolean lit = ipb.isLumen( type ); - if( pos.typeOfHit == RayTraceResult.Type.ENTITY ) + if( pos.getType() == RayTraceResult.Type.ENTITY ) { final int id = pos.entityHit.getEntityId(); final PlayerColor marker = new PlayerColor( id, col, 20 * 30 ); @@ -291,8 +278,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< final Block whatsThere = w.getBlockState( hitPos ).getBlock(); if( whatsThere.isReplaceable( w, hitPos ) && w.isAirBlock( hitPos ) ) { - Api.INSTANCE.definitions().blocks().paint().maybeBlock().ifPresent( paintBlock -> - { + Api.INSTANCE.definitions().blocks().paint().maybeBlock().ifPresent( paintBlock -> { w.setBlockState( hitPos, paintBlock.getDefaultState(), 3 ); } ); } @@ -314,8 +300,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< { hasDestroyed = false; - final AxisAlignedBB bb = new AxisAlignedBB( Math.min( Vec3d.x, Vec3d1.x ), Math.min( Vec3d.y, Vec3d1.y ), Math.min( Vec3d.z, Vec3d1.z ), Math - .max( Vec3d.x, Vec3d1.x ), Math.max( Vec3d.y, Vec3d1.y ), Math.max( Vec3d.z, Vec3d1.z ) ).grow( 16, 16, 16 ); + final AxisAlignedBB bb = new AxisAlignedBB( Math.min( Vec3d.x, Vec3d1.x ), Math.min( Vec3d.y, Vec3d1.y ), Math.min( Vec3d.z, Vec3d1.z ), Math.max( Vec3d.x, Vec3d1.x ), Math.max( Vec3d.y, Vec3d1.y ), Math.max( Vec3d.z, Vec3d1.z ) ).grow( 16, 16, 16 ); Entity entity = null; final List list = w.getEntitiesWithinAABBExcludingEntity( p, bb ); @@ -367,9 +352,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< try { - AppEng.proxy.sendToAllNearExcept( null, d0, d1, d2, 128, w, - new PacketMatterCannon( d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) ( pos == null ? 32 : pos.hitVec - .squareDistanceTo( vec ) + 1 ) ) ); + AppEng.proxy.sendToAllNearExcept( null, d0, d1, d2, 128, w, new PacketMatterCannon( d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) ( pos == null ? 32 : pos.hitVec.squareDistanceTo( vec ) + 1 ) ) ); } catch( final Exception err ) { @@ -457,7 +440,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< @Override public FuzzyMode getFuzzyMode( final ItemStack is ) { - final String fz = Platform.openNbtData( is ).getString( "FuzzyMode" ); + final String fz = is.getOrCreateTag().getString( "FuzzyMode" ); try { return FuzzyMode.valueOf( fz ); @@ -471,7 +454,7 @@ public class ToolMatterCannon extends AEBasePoweredItem implements IStorageCell< @Override public void setFuzzyMode( final ItemStack is, final FuzzyMode fzMode ) { - Platform.openNbtData( is ).setString( "FuzzyMode", fzMode.name() ); + is.getOrCreateTag().putString( "FuzzyMode", fzMode.name() ); } @Override diff --git a/src/main/java/appeng/items/tools/powered/ToolPortableCell.java b/src/main/java/appeng/items/tools/powered/ToolPortableCell.java index ec8bcbe50..ecb3a1bb1 100644 --- a/src/main/java/appeng/items/tools/powered/ToolPortableCell.java +++ b/src/main/java/appeng/items/tools/powered/ToolPortableCell.java @@ -26,6 +26,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.EnumActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -47,6 +48,7 @@ import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.AEPartLocation; import appeng.core.AEConfig; +import appeng.core.Api; import appeng.core.localization.GuiText; import appeng.core.sync.GuiBridge; import appeng.items.contents.CellConfig; @@ -67,7 +69,7 @@ public class ToolPortableCell extends AEBasePoweredItem implements IStorageCell< public ActionResult onItemRightClick( final World w, final PlayerEntity player, final Hand hand ) { Platform.openGUI( player, null, AEPartLocation.INTERNAL, GuiBridge.GUI_PORTABLE_CELL ); - return new ActionResult<>( EnumActionResult.SUCCESS, player.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, player.getHeldItem( hand ) ); } @OnlyIn( Dist.CLIENT ) diff --git a/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java b/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java index 42e186fc2..cce3fe475 100644 --- a/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java +++ b/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java @@ -21,19 +21,19 @@ package appeng.items.tools.powered; import java.util.List; +import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; -import net.minecraft.client.resources.I18n; +import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.Settings; import appeng.api.config.SortDir; @@ -42,6 +42,7 @@ import appeng.api.config.ViewItems; import appeng.api.features.IWirelessTermHandler; import appeng.api.util.IConfigManager; import appeng.core.AEConfig; +import appeng.core.Api; import appeng.core.localization.GuiText; import appeng.items.tools.powered.powersink.AEBasePoweredItem; import appeng.util.ConfigManager; @@ -59,7 +60,7 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless public ActionResult onItemRightClick( final World w, final PlayerEntity player, final Hand hand ) { Api.INSTANCE.registries().wireless().openWirelessTerminalGui( player.getHeldItem( hand ), w, player ); - return new ActionResult<>( EnumActionResult.SUCCESS, player.getHeldItem( hand ) ); + return new ActionResult<>( ActionResultType.SUCCESS, player.getHeldItem( hand ) ); } @OnlyIn( Dist.CLIENT ) @@ -77,7 +78,7 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless if( stack.hasTag() ) { - final CompoundNBT tag = stack.getOrCreateTag(); + final CompoundNBT tag = stack.getOrCreateTag(); if( tag != null ) { final String encKey = tag.getString( "encryptionKey" ); @@ -119,9 +120,8 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless @Override public IConfigManager getConfigManager( final ItemStack target ) { - final ConfigManager out = new ConfigManager( ( manager, settingName, newValue ) -> - { - final CompoundNBT data = target.getOrCreateTag(); + final ConfigManager out = new ConfigManager( ( manager, settingName, newValue ) -> { + final CompoundNBT data = target.getOrCreateTag(); manager.writeToNBT( data ); } ); @@ -129,23 +129,23 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless out.registerSetting( Settings.VIEW_MODE, ViewItems.ALL ); out.registerSetting( Settings.SORT_DIRECTION, SortDir.ASCENDING ); - out.readFromNBT( target.getOrCreateTag().copy() ); + out.readFromNBT( target.getOrCreateTag().copy() ); return out; } @Override public String getEncryptionKey( final ItemStack item ) { - final CompoundNBT tag = item.getOrCreateTag(); + final CompoundNBT tag = item.getOrCreateTag(); return tag.getString( "encryptionKey" ); } @Override public void setEncryptionKey( final ItemStack item, final String encKey, final String name ) { - final CompoundNBT tag = item.getOrCreateTag(); - tag.putString("encryptionKey", encKey); - tag.putString("name", name); + final CompoundNBT tag = item.getOrCreateTag(); + tag.putString( "encryptionKey", encKey ); + tag.putString( "name", name ); } @Override diff --git a/src/main/java/appeng/items/tools/powered/powersink/AEBasePoweredItem.java b/src/main/java/appeng/items/tools/powered/powersink/AEBasePoweredItem.java index 7a551f2cb..b8293408e 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/AEBasePoweredItem.java +++ b/src/main/java/appeng/items/tools/powered/powersink/AEBasePoweredItem.java @@ -50,10 +50,10 @@ public abstract class AEBasePoweredItem extends AEBaseItem implements IAEItemPow public AEBasePoweredItem( final double powerCapacity ) { - this.setMaxStackSize( 1 ); - this.setMaxDamage( 32 ); - this.hasSubtypes = false; - this.setFull3D(); + super(new Properties().maxStackSize( 1 ).maxDamage( 32 )); + //FIXME +// this.hasSubtypes = false; +// this.setFull3D(); this.powerCapacity = powerCapacity; } diff --git a/src/main/java/appeng/me/GridNode.java b/src/main/java/appeng/me/GridNode.java index d7313e25d..e0eef4b7c 100644 --- a/src/main/java/appeng/me/GridNode.java +++ b/src/main/java/appeng/me/GridNode.java @@ -31,6 +31,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; import net.minecraft.world.World; import appeng.api.exceptions.FailedConnectionException; @@ -285,7 +286,7 @@ public class GridNode implements IGridNode, IPathItem } @Override - public World getWorld() + public IWorld getWorld() { return this.gridProxy.getLocation().getWorld(); } @@ -331,8 +332,8 @@ public class GridNode implements IGridNode, IPathItem { if( this.myGrid == null ) { - final CompoundNBT node = nodeData.getCompoundTag( name ); - this.playerID = node.getInteger( "p" ); + final CompoundNBT node = nodeData.getCompound( name ); + this.playerID = node.getInt( "p" ); this.setLastSecurityKey( node.getLong( "k" ) ); final long storageID = node.getLong( "g" ); @@ -356,11 +357,11 @@ public class GridNode implements IGridNode, IPathItem node.putLong( "k", this.getLastSecurityKey() ); node.putLong( "g", this.myStorage.getID() ); - nodeData.setTag( name, node ); + nodeData.put( name, node ); } else { - nodeData.removeTag( name ); + nodeData.remove( name ); } } @@ -512,7 +513,7 @@ public class GridNode implements IGridNode, IPathItem } } - private IGridHost findGridHost( final World world, final int x, final int y, final int z ) + private IGridHost findGridHost( final IWorld world, final int x, final int y, final int z ) { final BlockPos pos = new BlockPos( x, y, z ); if( world.isBlockLoaded( pos ) ) diff --git a/src/main/java/appeng/me/cache/CraftingGridCache.java b/src/main/java/appeng/me/cache/CraftingGridCache.java index 10b3af6bd..a3317bd3c 100644 --- a/src/main/java/appeng/me/cache/CraftingGridCache.java +++ b/src/main/java/appeng/me/cache/CraftingGridCache.java @@ -77,6 +77,7 @@ import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.crafting.CraftingJob; import appeng.crafting.CraftingLink; import appeng.crafting.CraftingLinkNexus; @@ -470,7 +471,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper { for( final IAEItemStack ais : this.craftableItems.keySet() ) { - if( ais.getItem() == whatToCraft.getItem() && ( !ais.getItem().getHasSubtypes() || ais.getItemDamage() == whatToCraft.getItemDamage() ) ) + if( ais.getItem() == whatToCraft.getItem() && ( !ais.getItem().isDamageable() || ais.getItemDamage() == whatToCraft.getItemDamage() ) ) { // TODO: check if OK // TODO: this is slightly hacky, but fine as long as we only deal with itemstacks diff --git a/src/main/java/appeng/me/cache/GridStorageCache.java b/src/main/java/appeng/me/cache/GridStorageCache.java index 2e51b1734..39f15824f 100644 --- a/src/main/java/appeng/me/cache/GridStorageCache.java +++ b/src/main/java/appeng/me/cache/GridStorageCache.java @@ -50,6 +50,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.me.helpers.BaseActionSource; import appeng.me.helpers.GenericInterestManager; import appeng.me.helpers.MachineSource; diff --git a/src/main/java/appeng/me/cache/PathGridCache.java b/src/main/java/appeng/me/cache/PathGridCache.java index 6ac981ec3..520a95337 100644 --- a/src/main/java/appeng/me/cache/PathGridCache.java +++ b/src/main/java/appeng/me/cache/PathGridCache.java @@ -47,6 +47,7 @@ import appeng.api.networking.pathing.IPathingGrid; import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.core.AEConfig; +import appeng.core.Api; import appeng.core.AppEng; import appeng.core.features.AEFeature; import appeng.core.stats.IAdvancementTrigger; diff --git a/src/main/java/appeng/me/cache/TickManagerCache.java b/src/main/java/appeng/me/cache/TickManagerCache.java index 0f3e0a359..cb15631ed 100644 --- a/src/main/java/appeng/me/cache/TickManagerCache.java +++ b/src/main/java/appeng/me/cache/TickManagerCache.java @@ -26,7 +26,7 @@ import com.google.common.base.Preconditions; import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReportCategory; -import net.minecraft.util.ReportedException; +import net.minecraft.crash.ReportedException; import appeng.api.networking.IGrid; import appeng.api.networking.IGridHost; diff --git a/src/main/java/appeng/me/cache/helpers/TickTracker.java b/src/main/java/appeng/me/cache/helpers/TickTracker.java index 0c4698df9..e3d5201a2 100644 --- a/src/main/java/appeng/me/cache/helpers/TickTracker.java +++ b/src/main/java/appeng/me/cache/helpers/TickTracker.java @@ -90,17 +90,17 @@ public class TickTracker implements Comparable part.addEntityCrashInfo( crashreportcategory ); } - crashreportcategory.addCrashSection( "CurrentTickRate", this.getCurrentRate() ); - crashreportcategory.addCrashSection( "MinTickRate", this.getRequest().minTickRate ); - crashreportcategory.addCrashSection( "MaxTickRate", this.getRequest().maxTickRate ); - crashreportcategory.addCrashSection( "MachineType", this.getGridTickable().getClass().getName() ); - crashreportcategory.addCrashSection( "GridBlockType", this.getNode().getGridBlock().getClass().getName() ); - crashreportcategory.addCrashSection( "ConnectedSides", this.getNode().getConnectedSides() ); + crashreportcategory.addDetail( "CurrentTickRate", this.getCurrentRate() ); + crashreportcategory.addDetail( "MinTickRate", this.getRequest().minTickRate ); + crashreportcategory.addDetail( "MaxTickRate", this.getRequest().maxTickRate ); + crashreportcategory.addDetail( "MachineType", this.getGridTickable().getClass().getName() ); + crashreportcategory.addDetail( "GridBlockType", this.getNode().getGridBlock().getClass().getName() ); + crashreportcategory.addDetail( "ConnectedSides", this.getNode().getConnectedSides() ); final DimensionalCoord dc = this.getNode().getGridBlock().getLocation(); if( dc != null ) { - crashreportcategory.addCrashSection( "Location", dc ); + crashreportcategory.addDetail( "Location", dc ); } } diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index dfe26c9b4..3794a7c59 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -34,10 +34,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.world.World; -import net.minecraft.world.WorldServer; -import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.fml.hooks.BasicEventHooks; -import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.config.PowerMultiplier; @@ -65,6 +64,7 @@ import appeng.api.storage.data.IItemList; import appeng.api.util.WorldCoord; import appeng.container.ContainerNull; import appeng.core.AELog; +import appeng.core.Api; import appeng.crafting.CraftBranchFailure; import appeng.crafting.CraftingJob; import appeng.crafting.CraftingLink; @@ -390,7 +390,6 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU } } } - } private void markDirty() @@ -779,9 +778,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU if( details.isCraftable() ) { - FMLCommonHandler.instance() - .firePlayerCraftingEvent( Platform.getPlayer( (WorldServer) this.getWorld() ), - details.getOutput( ic, this.getWorld() ), ic ); + BasicEventHooks.firePlayerCraftingEvent( Platform.getPlayer( (ServerWorld) getWorld() ), details.getOutput( ic, this.getWorld() ), ic ); for( int x = 0; x < ic.getSizeInventory(); x++ ) { @@ -1003,19 +1000,18 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU final int hash = System.identityHashCode( this ); final int hmm = this.finalOutput == null ? 0 : this.finalOutput.hashCode(); - return Long.toString( now, Character.MAX_RADIX ) + '-' + Integer.toString( hash, Character.MAX_RADIX ) + '-' + Integer.toString( hmm, - Character.MAX_RADIX ); + return Long.toString( now, Character.MAX_RADIX ) + '-' + Integer.toString( hash, Character.MAX_RADIX ) + '-' + Integer.toString( hmm, Character.MAX_RADIX ); } private CompoundNBT generateLinkData( final String craftingID, final boolean standalone, final boolean req ) { final CompoundNBT tag = new CompoundNBT(); - tag.putString("CraftID", craftingID); - tag.putBoolean("canceled", false); - tag.putBoolean("done", false); - tag.putBoolean("standalone", standalone); - tag.putBoolean("req", req); + tag.putString( "CraftID", craftingID ); + tag.putBoolean( "canceled", false ); + tag.putBoolean( "done", false ); + tag.putBoolean( "standalone", standalone ); + tag.putBoolean( "req", req ); return tag; } @@ -1144,16 +1140,16 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU public void writeToNBT( final CompoundNBT data ) { - data.setTag( "finalOutput", this.writeItem( this.finalOutput ) ); - data.setTag( "inventory", this.writeList( this.inventory.getItemList() ) ); - data.putBoolean("waiting", this.waiting); - data.putBoolean("isComplete", this.isComplete); + data.put( "finalOutput", this.writeItem( this.finalOutput ) ); + data.put( "inventory", this.writeList( this.inventory.getItemList() ) ); + data.putBoolean( "waiting", this.waiting ); + data.putBoolean( "isComplete", this.isComplete ); if( this.myLastLink != null ) { final CompoundNBT link = new CompoundNBT(); this.myLastLink.writeToNBT( link ); - data.setTag( "link", link ); + data.put( "link", link ); } final ListNBT list = new ListNBT(); @@ -1161,11 +1157,11 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { final CompoundNBT item = this.writeItem( AEItemStack.fromItemStack( e.getKey().getPattern() ) ); item.putLong( "craftingProgress", e.getValue().value ); - list.appendTag( item ); + list.add( item ); } - data.setTag( "tasks", list ); + data.put( "tasks", list ); - data.setTag( "waitingFor", this.writeList( this.waitingFor ) ); + data.put( "waitingFor", this.writeList( this.waitingFor ) ); data.putLong( "elapsedTime", this.getElapsedTime() ); data.putLong( "startItemCount", this.getStartItemCount() ); @@ -1178,7 +1174,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU if( finalOutput2 != null ) { - finalOutput2.write(out); + finalOutput2.writeToNBT( out ); } return out; @@ -1190,7 +1186,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU for( final IAEItemStack ais : myList ) { - out.appendTag( this.writeItem( ais ) ); + out.add( this.writeItem( ais ) ); } return out; @@ -1214,8 +1210,8 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU public void readFromNBT( final CompoundNBT data ) { - this.finalOutput = AEItemStack.fromNBT( (CompoundNBT) data.getTag( "finalOutput" ) ); - for( final IAEItemStack ais : this.readList( (ListNBT) data.getTag( "inventory" ) ) ) + this.finalOutput = AEItemStack.fromNBT( data.getCompound( "finalOutput" ) ); + for( final IAEItemStack ais : this.readList( data.getList( "inventory", 10 ) ) ) { this.inventory.injectItems( ais, Actionable.MODULATE, this.machineSrc ); } @@ -1223,17 +1219,17 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU this.waiting = data.getBoolean( "waiting" ); this.isComplete = data.getBoolean( "isComplete" ); - if( data.contains("link") ) + if( data.contains( "link" ) ) { - final CompoundNBT link = data.getCompoundTag( "link" ); + final CompoundNBT link = data.getCompound( "link" ); this.myLastLink = new CraftingLink( link, this ); this.submitLink( this.myLastLink ); } - final ListNBT list = data.getTagList( "tasks", 10 ); - for( int x = 0; x < list.tagCount(); x++ ) + final ListNBT list = data.getList( "tasks", 10 ); + for( int x = 0; x < list.size(); x++ ) { - final CompoundNBT item = list.getCompoundTagAt( x ); + final CompoundNBT item = list.getCompound( x ); final IAEItemStack pattern = AEItemStack.fromNBT( item ); if( pattern != null && pattern.getItem() instanceof ICraftingPatternItem ) { @@ -1248,7 +1244,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU } } - this.waitingFor = this.readList( (ListNBT) data.getTag( "waitingFor" ) ); + this.waitingFor = this.readList( data.getList( "waitingFor", 10 ) ); for( final IAEItemStack is : this.waitingFor ) { this.postCraftingStatusChange( is.copy() ); @@ -1289,9 +1285,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU return out; } - for( int x = 0; x < tag.tagCount(); x++ ) + for( int x = 0; x < tag.size(); x++ ) { - final IAEItemStack ais = AEItemStack.fromNBT( tag.getCompoundTagAt( x ) ); + final IAEItemStack ais = AEItemStack.fromNBT( tag.getCompound( x ) ); if( ais != null ) { out.add( ais ); diff --git a/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java b/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java index 46f0cade4..961457882 100644 --- a/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java +++ b/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java @@ -28,6 +28,7 @@ import appeng.api.AEApi; import appeng.api.definitions.IBlockDefinition; import appeng.api.definitions.IBlocks; import appeng.api.util.WorldCoord; +import appeng.core.Api; import appeng.me.cluster.IAECluster; import appeng.me.cluster.IAEMultiBlock; import appeng.me.cluster.MBCalculator; diff --git a/src/main/java/appeng/me/cluster/implementations/QuantumCluster.java b/src/main/java/appeng/me/cluster/implementations/QuantumCluster.java index 1b86d299c..59ca48af0 100644 --- a/src/main/java/appeng/me/cluster/implementations/QuantumCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/QuantumCluster.java @@ -22,14 +22,13 @@ package appeng.me.cluster.implementations; import java.util.Iterator; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.common.DimensionManager; +import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.WorldEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; -import appeng.api.AEApi; import appeng.api.events.LocatableEventAnnounce; import appeng.api.events.LocatableEventAnnounce.LocatableEvent; import appeng.api.exceptions.FailedConnectionException; @@ -39,6 +38,7 @@ import appeng.api.networking.IGridNode; import appeng.api.util.AEPartLocation; import appeng.api.util.WorldCoord; import appeng.core.AELog; +import appeng.core.Api; import appeng.me.cache.helpers.ConnectionWrapper; import appeng.me.cluster.IAECluster; import appeng.tile.qnb.TileQuantumBridge; @@ -156,10 +156,7 @@ public class QuantumCluster implements ILocatable, IAECluster } } - sideA.connection = sideB.connection = new ConnectionWrapper( Api.INSTANCE - .grid() - .createGridConnection( sideA.getNode(), - sideB.getNode() ) ); + sideA.connection = sideB.connection = new ConnectionWrapper( Api.INSTANCE.grid().createGridConnection( sideA.getNode(), sideB.getNode() ) ); } catch( final FailedConnectionException e ) { @@ -196,11 +193,11 @@ public class QuantumCluster implements ILocatable, IAECluster final World theWorld = qc.center.getWorld(); if( !qc.isDestroyed ) { - final Chunk c = theWorld.getChunkFromBlockCoords( qc.center.getPos() ); - if( c.isLoaded() ) + ChunkPos cPos = new ChunkPos( qc.center.getPos() ); + if( theWorld.getChunkProvider().isChunkLoaded( cPos ) ) { - final int id = theWorld.provider.getDimension(); - final World cur = DimensionManager.getWorld( id ); + final DimensionType id = theWorld.dimension.getType(); + final World cur = theWorld.getServer().getWorld( id ); final TileEntity te = theWorld.getTileEntity( qc.center.getPos() ); return te != qc.center || theWorld != cur; @@ -265,14 +262,12 @@ public class QuantumCluster implements ILocatable, IAECluster @Override public Iterator getTiles() { - return new ChainedIterator<>( this.getRing()[0], this.getRing()[1], this.getRing()[2], this.getRing()[3], this.getRing()[4], this - .getRing()[5], this.getRing()[6], this.getRing()[7], this.center ); + return new ChainedIterator<>( this.getRing()[0], this.getRing()[1], this.getRing()[2], this.getRing()[3], this.getRing()[4], this.getRing()[5], this.getRing()[6], this.getRing()[7], this.center ); } public boolean isCorner( final TileQuantumBridge tileQuantumBridge ) { - return this.getRing()[0] == tileQuantumBridge || this.getRing()[2] == tileQuantumBridge || this.getRing()[4] == tileQuantumBridge || this - .getRing()[6] == tileQuantumBridge; + return this.getRing()[0] == tileQuantumBridge || this.getRing()[2] == tileQuantumBridge || this.getRing()[4] == tileQuantumBridge || this.getRing()[6] == tileQuantumBridge; } @Override diff --git a/src/main/java/appeng/me/storage/AbstractCellInventory.java b/src/main/java/appeng/me/storage/AbstractCellInventory.java index d35ce6389..01a8f085a 100644 --- a/src/main/java/appeng/me/storage/AbstractCellInventory.java +++ b/src/main/java/appeng/me/storage/AbstractCellInventory.java @@ -88,7 +88,7 @@ public abstract class AbstractCellInventory> implements IC this.container = container; this.tagCompound = o.getOrCreateTag(); this.storedItems = this.tagCompound.getShort( ITEM_TYPE_TAG ); - this.storedItemCount = this.tagCompound.getInteger( ITEM_COUNT_TAG ); + this.storedItemCount = this.tagCompound.getInt( ITEM_COUNT_TAG ); this.cellItems = null; } @@ -121,8 +121,8 @@ public abstract class AbstractCellInventory> implements IC final CompoundNBT g = new CompoundNBT(); v.writeToNBT( g ); - this.tagCompound.setTag( ITEM_SLOT_KEYS[x], g ); - this.tagCompound.setInteger( ITEM_SLOT_COUNT_KEYS[x], (int) v.getStackSize() ); + this.tagCompound.put( ITEM_SLOT_KEYS[x], g ); + this.tagCompound.putInt( ITEM_SLOT_COUNT_KEYS[x], (int) v.getStackSize() ); x++; } @@ -132,28 +132,28 @@ public abstract class AbstractCellInventory> implements IC this.storedItems = (short) this.cellItems.size(); if( this.cellItems.isEmpty() ) { - this.tagCompound.removeTag( ITEM_TYPE_TAG ); + this.tagCompound.remove( ITEM_TYPE_TAG ); } else { - this.tagCompound.setShort( ITEM_TYPE_TAG, this.storedItems ); + this.tagCompound.putShort( ITEM_TYPE_TAG, this.storedItems ); } this.storedItemCount = itemCount; if( itemCount == 0 ) { - this.tagCompound.removeTag( ITEM_COUNT_TAG ); + this.tagCompound.remove( ITEM_COUNT_TAG ); } else { - this.tagCompound.setInteger( ITEM_COUNT_TAG, itemCount ); + this.tagCompound.putInt( ITEM_COUNT_TAG, itemCount ); } // clean any old crusty stuff... for( ; x < oldStoredItems && x < this.maxItemTypes; x++ ) { - this.tagCompound.removeTag( ITEM_SLOT_KEYS[x] ); - this.tagCompound.removeTag( ITEM_SLOT_COUNT_KEYS[x] ); + this.tagCompound.remove( ITEM_SLOT_KEYS[x] ); + this.tagCompound.remove( ITEM_SLOT_COUNT_KEYS[x] ); } this.isPersisted = true; @@ -195,8 +195,8 @@ public abstract class AbstractCellInventory> implements IC for( int slot = 0; slot < types; slot++ ) { - CompoundNBT compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_KEYS[slot] ); - int stackSize = this.tagCompound.getInteger( ITEM_SLOT_COUNT_KEYS[slot] ); + CompoundNBT compoundTag = this.tagCompound.getCompound( ITEM_SLOT_KEYS[slot] ); + int stackSize = this.tagCompound.getInt( ITEM_SLOT_COUNT_KEYS[slot] ); needsUpdate |= !this.loadCellItem( compoundTag, stackSize ); } diff --git a/src/main/java/appeng/me/storage/CreativeCellInventory.java b/src/main/java/appeng/me/storage/CreativeCellInventory.java index 315d0e25b..a804f0dfd 100644 --- a/src/main/java/appeng/me/storage/CreativeCellInventory.java +++ b/src/main/java/appeng/me/storage/CreativeCellInventory.java @@ -31,6 +31,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.items.contents.CellConfig; import appeng.util.item.AEItemStack; diff --git a/src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java b/src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java index ecdfbc022..c5675b42f 100644 --- a/src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java +++ b/src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java @@ -29,9 +29,7 @@ import java.util.concurrent.ConcurrentSkipListMap; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidTankProperties; -import appeng.api.AEApi; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; import appeng.api.config.StorageFilter; @@ -43,6 +41,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; public class MEMonitorIFluidHandler implements IMEMonitor, ITickingMonitor @@ -75,7 +74,7 @@ public class MEMonitorIFluidHandler implements IMEMonitor, ITicki @Override public IAEFluidStack injectItems( final IAEFluidStack input, final Actionable type, final IActionSource src ) { - final int filled = this.handler.fill( input.getFluidStack(), type == Actionable.MODULATE ); + final int filled = this.handler.fill( input.getFluidStack(), type.getFluidAction() ); if( filled == 0 ) { @@ -100,9 +99,9 @@ public class MEMonitorIFluidHandler implements IMEMonitor, ITicki @Override public IAEFluidStack extractItems( final IAEFluidStack request, final Actionable type, final IActionSource src ) { - final FluidStack removed = this.handler.drain( request.getFluidStack(), type == Actionable.MODULATE ); + final FluidStack removed = this.handler.drain( request.getFluidStack(), type.getFluidAction() ); - if( removed == null || removed.amount == 0 ) + if( removed == null || removed.getAmount() == 0 ) { return null; } @@ -113,7 +112,7 @@ public class MEMonitorIFluidHandler implements IMEMonitor, ITicki } final IAEFluidStack o = request.copy(); - o.setStackSize( removed.amount ); + o.setStackSize( removed.getAmount() ); return o; } @@ -162,8 +161,8 @@ public class MEMonitorIFluidHandler implements IMEMonitor, ITicki } else { - final int newSize = newIS == null ? 0 : newIS.amount; - final int diff = newSize - ( oldIS == null ? 0 : oldIS.amount ); + final int newSize = newIS == null ? 0 : newIS.getAmount(); + final int diff = newSize - ( oldIS == null ? 0 : oldIS.getAmount() ); IAEFluidStack stack = null; diff --git a/src/main/java/appeng/me/storage/MEMonitorIInventory.java b/src/main/java/appeng/me/storage/MEMonitorIInventory.java index df5c32d47..fb049e1ba 100644 --- a/src/main/java/appeng/me/storage/MEMonitorIInventory.java +++ b/src/main/java/appeng/me/storage/MEMonitorIInventory.java @@ -41,6 +41,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.ItemSlot; diff --git a/src/main/java/appeng/me/storage/NullInventory.java b/src/main/java/appeng/me/storage/NullInventory.java index ec0cb33b5..127db67c1 100644 --- a/src/main/java/appeng/me/storage/NullInventory.java +++ b/src/main/java/appeng/me/storage/NullInventory.java @@ -28,6 +28,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; public class NullInventory> implements IMEInventoryHandler diff --git a/src/main/java/appeng/me/storage/SecurityStationInventory.java b/src/main/java/appeng/me/storage/SecurityStationInventory.java index 9984bac17..acca82f7d 100644 --- a/src/main/java/appeng/me/storage/SecurityStationInventory.java +++ b/src/main/java/appeng/me/storage/SecurityStationInventory.java @@ -32,6 +32,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; +import appeng.core.Api; import appeng.me.GridAccessException; import appeng.tile.misc.TileSecurityStation; diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index 2ed8d2e10..2aabb4e4c 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -32,6 +32,7 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; @@ -71,18 +72,18 @@ public class PartPlacement private final ThreadLocal placing = new ThreadLocal<>(); private boolean wasCanceled = false; - public static ActionResult place( final ItemStack held, final BlockPos pos, Direction side, final PlayerEntity player, final Hand hand, final World world, PlaceType pass, final int depth ) + public static ActionResultType place( final ItemStack held, final BlockPos pos, Direction side, final PlayerEntity player, final Hand hand, final World world, PlaceType pass, final int depth ) { if( depth > 3 ) { - return ActionResult.resultFail( null ); + return ActionResultType.FAIL; } if( !held.isEmpty() && Platform.isWrench( player, held, pos ) && player.isShiftKeyDown() ) { if( !Platform.hasPermissions( new DimensionalCoord( world, pos ), player ) ) { - return ActionResult.resultFail( null ); + return ActionResultType.FAIL; } final Block block = world.getBlockState( pos ).getBlock(); @@ -98,7 +99,7 @@ public class PartPlacement { if( !world.isRemote ) { - final LookDirection dir = Platform.getPlayerRay( player, getEyeOffset( player ) ); + final LookDirection dir = Platform.getPlayerRay( player ); final RayTraceResult mop = block.getRayTraceResult( world.getBlockState( pos ), world, pos, dir.getA(), dir.getB(), mop ); if( mop != null ) @@ -137,10 +138,10 @@ public class PartPlacement player.swingArm( hand ); NetworkHandler.instance().sendToServer( new PacketPartPlacement( pos, side, getEyeOffset( player ), hand ) ); } - return ActionResult.resultSuccess( null ); + return ActionResultType.SUCCESS; } - return ActionResult.resultFail( null ); + return ActionResultType.FAIL; } TileEntity tile = world.getTileEntity( pos ); @@ -477,4 +478,4 @@ public class PartPlacement { PLACE_ITEM, INTERACT_FIRST_PASS, INTERACT_SECOND_PASS } -} \ No newline at end of file +} diff --git a/src/main/java/appeng/parts/automation/PartFormationPlane.java b/src/main/java/appeng/parts/automation/PartFormationPlane.java index ab2b56343..5654ff120 100644 --- a/src/main/java/appeng/parts/automation/PartFormationPlane.java +++ b/src/main/java/appeng/parts/automation/PartFormationPlane.java @@ -25,6 +25,7 @@ import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.block.Blocks; import net.minecraft.item.Item; @@ -310,13 +311,11 @@ public class PartFormationPlane extends PartAbstractFormationPlane final double y = ( side.yOffset != 0 ? 0 : .7 * ( Platform.getRandomFloat() - .5 ) ) + side.yOffset + .5 + te.getPos().getY(); final double z = ( side.zOffset != 0 ? 0 : .7 * ( Platform.getRandomFloat() - .5 ) ) + side.zOffset + .5 + te.getPos().getZ(); - final EntityItem ei = new EntityItem( w, x, y, z, is.copy() ); + final ItemEntity ei = new ItemEntity( w, x, y, z, is.copy() ); Entity result = ei; - ei.motionX = side.xOffset * 0.2; - ei.motionY = side.yOffset * 0.2; - ei.motionZ = side.zOffset * 0.2; + ei.setMotion( side.xOffset * 0.2, side.yOffset * 0.2, side.zOffset * 0.2 ); if( is.getItem().hasCustomEntity( is ) ) { diff --git a/src/main/java/appeng/parts/automation/PlaneBakedModel.java b/src/main/java/appeng/parts/automation/PlaneBakedModel.java index b8a87c06f..96f8d72d4 100644 --- a/src/main/java/appeng/parts/automation/PlaneBakedModel.java +++ b/src/main/java/appeng/parts/automation/PlaneBakedModel.java @@ -22,16 +22,15 @@ package appeng.parts.automation; import java.util.ArrayList; import java.util.Collections; import java.util.List; - +import java.util.Random; import javax.annotation.Nullable; import com.google.common.collect.ImmutableList; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.Direction; @@ -49,13 +48,13 @@ public class PlaneBakedModel implements IBakedModel private final List quads; - PlaneBakedModel( VertexFormat format, TextureAtlasSprite frontTexture, TextureAtlasSprite sidesTexture, TextureAtlasSprite backTexture, PlaneConnections connections ) + PlaneBakedModel( TextureAtlasSprite frontTexture, TextureAtlasSprite sidesTexture, TextureAtlasSprite backTexture, PlaneConnections connections ) { this.frontTexture = frontTexture; List quads = new ArrayList<>( 4 * 6 ); - CubeBuilder builder = new CubeBuilder( format, quads ); + CubeBuilder builder = new CubeBuilder( quads ); builder.setTextures( sidesTexture, sidesTexture, frontTexture, backTexture, sidesTexture, sidesTexture ); @@ -72,7 +71,7 @@ public class PlaneBakedModel implements IBakedModel } @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) { if( side == null ) { @@ -96,6 +95,12 @@ public class PlaneBakedModel implements IBakedModel return false; } + @Override + public boolean func_230044_c_() + { + return false;//TODO + } + @Override public boolean isBuiltInRenderer() { @@ -108,12 +113,6 @@ public class PlaneBakedModel implements IBakedModel return this.frontTexture; } - @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - @Override public ItemOverrideList getOverrides() { diff --git a/src/main/java/appeng/parts/automation/PlaneModel.java b/src/main/java/appeng/parts/automation/PlaneModel.java index 43bf6047a..5e95dc5ca 100644 --- a/src/main/java/appeng/parts/automation/PlaneModel.java +++ b/src/main/java/appeng/parts/automation/PlaneModel.java @@ -19,37 +19,41 @@ package appeng.parts.automation; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Set; import java.util.function.Function; +import javax.annotation.Nullable; -import com.google.common.collect.Lists; +import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.IModelTransform; +import net.minecraft.client.renderer.model.IUnbakedModel; +import net.minecraft.client.renderer.model.Material; +import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.common.model.IModelState; -import net.minecraftforge.common.model.TRSRTransformation; /** * Built-in model for annihilation planes that supports connected textures. */ -public class PlaneModel implements IModel +public class PlaneModel implements IUnbakedModel { - private final ResourceLocation frontTexture; - private final ResourceLocation sidesTexture; - private final ResourceLocation backTexture; + private final Material frontTexture; + private final Material sidesTexture; + private final Material backTexture; private final PlaneConnections connections; public PlaneModel( ResourceLocation frontTexture, ResourceLocation sidesTexture, ResourceLocation backTexture, PlaneConnections connections ) { - this.frontTexture = frontTexture; - this.sidesTexture = sidesTexture; - this.backTexture = backTexture; + this.frontTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, frontTexture ); + this.sidesTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, sidesTexture ); + this.backTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, backTexture ); this.connections = connections; } @@ -60,25 +64,19 @@ public class PlaneModel implements IModel } @Override - public Collection getTextures() + public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) { - return Lists.newArrayList( this.frontTexture, this.sidesTexture, this.backTexture ); + return Arrays.asList( frontTexture, sidesTexture, backTexture ); } + @Nullable @Override - public IBakedModel bake( IModelState state, VertexFormat format, Function bakedTextureGetter ) + public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) { - TextureAtlasSprite frontSprite = bakedTextureGetter.apply( this.frontTexture ); - TextureAtlasSprite sidesSprite = bakedTextureGetter.apply( this.sidesTexture ); - TextureAtlasSprite backSprite = bakedTextureGetter.apply( this.backTexture ); + TextureAtlasSprite frontSprite = spriteGetterIn.apply( this.frontTexture ); + TextureAtlasSprite sidesSprite = spriteGetterIn.apply( this.sidesTexture ); + TextureAtlasSprite backSprite = spriteGetterIn.apply( this.backTexture ); - return new PlaneBakedModel( format, frontSprite, sidesSprite, backSprite, this.connections ); + return new PlaneBakedModel( frontSprite, sidesSprite, backSprite, this.connections ); } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } - } diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 4f9f1c5c0..b6970b3cd 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -38,6 +38,7 @@ import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; +import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.core.AEConfig; import appeng.core.AELog; @@ -57,6 +58,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.tileentity.TileEntity; @@ -1308,45 +1310,45 @@ public class Platform // return gs.hasPermission( playerID, SecurityPermissions.BUILD ); // } // -// public static void configurePlayer(final PlayerEntity player, final AEPartLocation side, final TileEntity tile ) -// { -// float pitch = 0.0f; -// float yaw = 0.0f; -// // player.yOffset = 1.8f; -// -// switch( side ) -// { -// case DOWN: -// pitch = 90.0f; -// // player.getYOffset() = -1.8f; -// break; -// case EAST: -// yaw = -90.0f; -// break; -// case NORTH: -// yaw = 180.0f; -// break; -// case SOUTH: -// yaw = 0.0f; -// break; -// case INTERNAL: -// break; -// case UP: -// pitch = 90.0f; -// break; -// case WEST: -// yaw = 90.0f; -// break; -// } -// -// player.setLocationAndAngles( -// tile.getPos().getX() + 0.5, -// tile.getPos().getY() + 0.5, -// tile.getPos().getZ() + 0.5, -// yaw, -// pitch -// ); -// } + public static void configurePlayer(final PlayerEntity player, final AEPartLocation side, final TileEntity tile ) + { + float pitch = 0.0f; + float yaw = 0.0f; + // player.yOffset = 1.8f; + + switch( side ) + { + case DOWN: + pitch = 90.0f; + // player.getYOffset() = -1.8f; + break; + case EAST: + yaw = -90.0f; + break; + case NORTH: + yaw = 180.0f; + break; + case SOUTH: + yaw = 0.0f; + break; + case INTERNAL: + break; + case UP: + pitch = 90.0f; + break; + case WEST: + yaw = 90.0f; + break; + } + + player.setLocationAndAngles( + tile.getPos().getX() + 0.5, + tile.getPos().getY() + 0.5, + tile.getPos().getZ() + 0.5, + yaw, + pitch + ); + } // // public static boolean canAccess( final AENetworkProxy gridProxy, final IActionSource src ) // { @@ -1442,32 +1444,32 @@ public class Platform // } // // // TODO wtf is this? -// public static ItemStack getContainerItem( final ItemStack stackInSlot ) -// { -// if( stackInSlot == null ) -// { -// return ItemStack.EMPTY; -// } -// -// final Item i = stackInSlot.getItem(); -// if( i == null || !i.hasContainerItem( stackInSlot ) ) -// { -// if( stackInSlot.getCount() > 1 ) -// { -// stackInSlot.setCount( stackInSlot.getCount() - 1 ); -// return stackInSlot; -// } -// return ItemStack.EMPTY; -// } -// -// ItemStack ci = i.getContainerItem( stackInSlot.copy() ); -// if( !ci.isEmpty() && ci.isDamageable() && ci.getDamage() == ci.getMaxDamage() ) -// { -// ci = ItemStack.EMPTY; -// } -// -// return ci; -// } + public static ItemStack getContainerItem( final ItemStack stackInSlot ) + { + if( stackInSlot == null ) + { + return ItemStack.EMPTY; + } + + final Item i = stackInSlot.getItem(); + if( i == null || !i.hasContainerItem( stackInSlot ) ) + { + if( stackInSlot.getCount() > 1 ) + { + stackInSlot.setCount( stackInSlot.getCount() - 1 ); + return stackInSlot; + } + return ItemStack.EMPTY; + } + + ItemStack ci = i.getContainerItem( stackInSlot.copy() ); + if( !ci.isEmpty() && ci.isDamageable() && ci.getDamage() == ci.getMaxDamage() ) + { + ci = ItemStack.EMPTY; + } + + return ci; + } public static void notifyBlocksOfNeighbors( final World world, final BlockPos pos ) {