diff --git a/src/api/java/appeng/api/parts/IPart.java b/src/api/java/appeng/api/parts/IPart.java index a483c82d2..0f6602b96 100644 --- a/src/api/java/appeng/api/parts/IPart.java +++ b/src/api/java/appeng/api/parts/IPart.java @@ -25,10 +25,11 @@ package appeng.api.parts; import java.io.IOException; -import java.util.Collections; import java.util.List; import java.util.Random; +import javax.annotation.Nonnull; + import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -39,7 +40,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -71,7 +71,8 @@ public interface IPart extends IBoxProvider, ICustomCableConnection ItemStack getItemStack( PartItemStack type ); /** - * Render dynamic portions of this part, as part of the cable bus TESR. This part has to return true for {@link #requireDynamicRender()} in order for + * Render dynamic portions of this part, as part of the cable bus TESR. This part has to return true for + * {@link #requireDynamicRender()} in order for * this method to be called. */ @SideOnly( Side.CLIENT ) @@ -267,8 +268,10 @@ public interface IPart extends IBoxProvider, ICustomCableConnection boolean canBePlacedOn( BusSupport what ); /** - * This method is used when a chunk is rebuilt to determine how this part should be rendered. The returned models should represent the - * part oriented north. They will be automatically rotated to match the part's actual orientation. Tint indices 1-4 can be used in the + * This method is used when a chunk is rebuilt to determine how this part should be rendered. The returned models + * should represent the + * part oriented north. They will be automatically rotated to match the part's actual orientation. Tint indices 1-4 + * can be used in the * models to access the parts color. * *
@@ -279,18 +282,23 @@ public interface IPart extends IBoxProvider, ICustomCableConnection *
Tint Index 3
*
The {@link AEColor#whiteVariant bright variant color} of the cable that this part is attached to.
*
Tint Index 4
- *
A color variant that is between the cable's {@link AEColor#mediumVariant color} and its {@link AEColor#whiteVariant bright variant}.
+ *
A color variant that is between the cable's {@link AEColor#mediumVariant color} and its + * {@link AEColor#whiteVariant bright variant}.
*
* * Important: All models must have been registered via the {@link IPartModels} API before use. */ - default List getStaticModels() + @Nonnull + default IPartModel getStaticModels() { - return Collections.emptyList(); + return new IPartModel() + { + }; } /** - * Implement this method if your part exposes capabilitys. Any requests for capabilities on the cable bus will be forwarded to parts on the appropriate + * Implement this method if your part exposes capabilitys. Any requests for capabilities on the cable bus will be + * forwarded to parts on the appropriate * side. * * @see TileEntity#hasCapability(Capability, EnumFacing) @@ -303,7 +311,8 @@ public interface IPart extends IBoxProvider, ICustomCableConnection } /** - * Implement this method if your part exposes capabilitys. Any requests for capabilities on the cable bus will be forwarded to parts on the appropriate + * Implement this method if your part exposes capabilitys. Any requests for capabilities on the cable bus will be + * forwarded to parts on the appropriate * side. * * @see TileEntity#getCapability(Capability, EnumFacing) diff --git a/src/api/java/appeng/api/parts/IPartModel.java b/src/api/java/appeng/api/parts/IPartModel.java new file mode 100644 index 000000000..0173ba4b2 --- /dev/null +++ b/src/api/java/appeng/api/parts/IPartModel.java @@ -0,0 +1,65 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2013 - 2015 AlgorithmX2 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package appeng.api.parts; + + +import java.util.Collections; +import java.util.List; + +import javax.annotation.Nonnull; + +import net.minecraft.util.ResourceLocation; + + +/** + * A container to store a collection of {@link ResourceLocation} as models for a part as well as other properties. + */ +public interface IPartModel +{ + + /** + * A solid {@link IPartModel} indicates that the rendering requires a cable connection, which will also result in + * creating an intersection for the cable. + * + * This should be true for pretty much all parts. + * + * @return true for a solid part. + */ + default boolean requireCableConnection() + { + return true; + } + + /** + * A collection of {@link ResourceLocation} used as models for a part. + * + * @return a collection of models, never null. + */ + @Nonnull + default List getModels() + { + return Collections.emptyList(); + } + +} diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 5c9d7b9e0..9e837a7b5 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -31,10 +31,8 @@ import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; diff --git a/src/main/java/appeng/block/misc/BlockCharger.java b/src/main/java/appeng/block/misc/BlockCharger.java index 8a81d3961..fbe2ff038 100644 --- a/src/main/java/appeng/block/misc/BlockCharger.java +++ b/src/main/java/appeng/block/misc/BlockCharger.java @@ -22,6 +22,7 @@ package appeng.block.misc; import java.util.Collections; import java.util.List; import java.util.Random; + import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.ImmutablePair; diff --git a/src/main/java/appeng/block/networking/BlockCableBus.java b/src/main/java/appeng/block/networking/BlockCableBus.java index 1edb2391c..09d15062a 100644 --- a/src/main/java/appeng/block/networking/BlockCableBus.java +++ b/src/main/java/appeng/block/networking/BlockCableBus.java @@ -22,6 +22,7 @@ package appeng.block.networking; import java.util.EnumSet; import java.util.List; import java.util.Random; + import javax.annotation.Nullable; import net.minecraft.block.Block; diff --git a/src/main/java/appeng/block/networking/BlockWireless.java b/src/main/java/appeng/block/networking/BlockWireless.java index b2110afcb..4f8de8238 100644 --- a/src/main/java/appeng/block/networking/BlockWireless.java +++ b/src/main/java/appeng/block/networking/BlockWireless.java @@ -21,6 +21,7 @@ package appeng.block.networking; import java.util.Collections; import java.util.List; + import javax.annotation.Nullable; import net.minecraft.block.properties.IProperty; diff --git a/src/main/java/appeng/block/paint/PaintBakedModel.java b/src/main/java/appeng/block/paint/PaintBakedModel.java index 5a541f181..4130b3889 100644 --- a/src/main/java/appeng/block/paint/PaintBakedModel.java +++ b/src/main/java/appeng/block/paint/PaintBakedModel.java @@ -4,6 +4,7 @@ package appeng.block.paint; import java.util.ArrayList; import java.util.Collections; import java.util.List; + import javax.annotation.Nullable; import com.google.common.base.Function; diff --git a/src/main/java/appeng/block/qnb/QnbFormedBakedModel.java b/src/main/java/appeng/block/qnb/QnbFormedBakedModel.java index 0aee07f63..4109ce340 100644 --- a/src/main/java/appeng/block/qnb/QnbFormedBakedModel.java +++ b/src/main/java/appeng/block/qnb/QnbFormedBakedModel.java @@ -4,6 +4,7 @@ package appeng.block.qnb; import java.util.EnumSet; import java.util.List; import java.util.Set; + import javax.annotation.Nullable; import com.google.common.base.Function; diff --git a/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java b/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java index 298a0af3c..8488b0973 100644 --- a/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java +++ b/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Supplier; + import javax.annotation.Nullable; import net.minecraft.block.Block; diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 0c2b07f16..9c2c8d880 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -54,7 +54,6 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import appeng.api.storage.data.IAEItemStack; import appeng.client.gui.widgets.GuiScrollbar; diff --git a/src/main/java/appeng/client/me/ItemRepo.java b/src/main/java/appeng/client/me/ItemRepo.java index 6494d2609..57313b600 100644 --- a/src/main/java/appeng/client/me/ItemRepo.java +++ b/src/main/java/appeng/client/me/ItemRepo.java @@ -22,6 +22,7 @@ package appeng.client.me; import java.util.ArrayList; import java.util.Collections; import java.util.regex.Pattern; + import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; diff --git a/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java b/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java index d341e25b7..fdb70e209 100644 --- a/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java +++ b/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java @@ -21,6 +21,7 @@ package appeng.client.render; import java.util.Collections; import java.util.List; + import javax.annotation.Nullable; import net.minecraft.block.state.IBlockState; diff --git a/src/main/java/appeng/client/render/FacadeWithBlockBakedModel.java b/src/main/java/appeng/client/render/FacadeWithBlockBakedModel.java index 3e64cfaa6..53b03007e 100644 --- a/src/main/java/appeng/client/render/FacadeWithBlockBakedModel.java +++ b/src/main/java/appeng/client/render/FacadeWithBlockBakedModel.java @@ -22,6 +22,7 @@ package appeng.client.render; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; + import javax.annotation.Nullable; import net.minecraft.block.state.IBlockState; diff --git a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java index 211d31a07..8cf081073 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java @@ -25,6 +25,8 @@ import java.util.EnumMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; + import javax.annotation.Nullable; import net.minecraft.block.state.IBlockState; @@ -41,6 +43,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.property.IExtendedBlockState; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEColor; import appeng.block.networking.BlockCableBus; @@ -81,8 +84,9 @@ public class CableBusBakedModel implements IBakedModel List quads = new ArrayList<>(); - // The core parts of the cable will only be rendered in the CUTOUT layer. TRANSLUCENT is used only for translucent facades further down below. - if ( layer == BlockRenderLayer.CUTOUT ) + // The core parts of the cable will only be rendered in the CUTOUT layer. TRANSLUCENT is used only for + // translucent facades further down below. + if( layer == BlockRenderLayer.CUTOUT ) { // First, handle the cable at the center of the cable bus addCableQuads( renderState, quads ); @@ -90,13 +94,13 @@ public class CableBusBakedModel implements IBakedModel // Then handle attachments for( EnumFacing facing : EnumFacing.values() ) { - List models = renderState.getAttachments().get( facing ); - if( models == null ) + final IPartModel partModel = renderState.getAttachments().get( facing ); + if( partModel == null ) { continue; } - for( ResourceLocation model : models ) + for( ResourceLocation model : partModel.getModels() ) { IBakedModel bakedModel = partModels.get( model ); @@ -122,8 +126,7 @@ public class CableBusBakedModel implements IBakedModel renderState.getBoundingBoxes(), renderState.getAttachments().keySet(), rand, - quads - ); + quads ); return quads; } @@ -131,25 +134,30 @@ public class CableBusBakedModel implements IBakedModel // Determines whether a cable is connected to exactly two sides that are opposite each other private static boolean isStraightLine( AECableType cableType, EnumMap sides ) { - Iterator it = sides.keySet().iterator(); + final Iterator> it = sides.entrySet().iterator(); if( !it.hasNext() ) { return false; // No connections } - EnumFacing firstSide = it.next(); - AECableType firstType = sides.get( firstSide ); + + final Entry nextConnection = it.next(); + final EnumFacing firstSide = nextConnection.getKey(); + final AECableType firstType = nextConnection.getValue(); + if( !it.hasNext() ) { return false; // Only a single connection } - if( firstSide.getOpposite() != it.next() ) + if( firstSide.getOpposite() != it.next().getKey() ) { return false; // Connected to two sides that are not opposite each other } - if (it.hasNext()) { + if( it.hasNext() ) + { return false; // Must not have any other connection points } - AECableType secondType = sides.get( firstSide.getOpposite() ); + + final AECableType secondType = sides.get( firstSide.getOpposite() ); // Certain cable types have restrictions on when they're rendered as a straight connection switch( cableType ) @@ -176,8 +184,8 @@ public class CableBusBakedModel implements IBakedModel // If the connection is straight, no busses are attached, and no covered core has been forced (in case of glass // cables), then render the cable as a simplified straight line. - boolean noAttachments = renderState.getAttachments().isEmpty(); - if( isStraightLine( cableType, connectionTypes ) && noAttachments ) + boolean noAttachments = !renderState.getAttachments().values().stream().anyMatch( IPartModel::requireCableConnection ); + if( noAttachments && isStraightLine( cableType, connectionTypes ) ) { EnumFacing facing = connectionTypes.keySet().iterator().next(); @@ -227,11 +235,12 @@ public class CableBusBakedModel implements IBakedModel } // Render all outgoing connections using the appropriate type - for( EnumFacing facing : connectionTypes.keySet() ) + for( final Entry connection : connectionTypes.entrySet() ) { - AECableType connectionType = connectionTypes.get( facing ); - boolean cableBusAdjacent = renderState.getCableBusAdjacent().contains( facing ); - int channels = renderState.getChannelsOnSide().get( facing ); + final EnumFacing facing = connection.getKey(); + final AECableType connectionType = connection.getValue(); + final boolean cableBusAdjacent = renderState.getCableBusAdjacent().contains( facing ); + final int channels = renderState.getChannelsOnSide().get( facing ); switch( cableType ) { @@ -269,9 +278,9 @@ public class CableBusBakedModel implements IBakedModel // If no core is present, just use the first part that comes into play for( EnumFacing side : renderState.getAttachments().keySet() ) { - List models = renderState.getAttachments().get( side ); + IPartModel partModel = renderState.getAttachments().get( side ); - for( ResourceLocation model : models ) + for( ResourceLocation model : partModel.getModels() ) { IBakedModel bakedModel = partModels.get( model ); @@ -282,9 +291,11 @@ public class CableBusBakedModel implements IBakedModel TextureAtlasSprite particleTexture = bakedModel.getParticleTexture(); - // If a part sub-model has no particle texture (indicated by it being the missing texture), don't add it, + // If a part sub-model has no particle texture (indicated by it being the missing texture), don't + // add + // it, // so we don't get ugly missing texture break particles. - if ( textureMap.getMissingSprite() != particleTexture ) + if( textureMap.getMissingSprite() != particleTexture ) { result.add( particleTexture ); } diff --git a/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java b/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java index ae3276abd..bde17f527 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java @@ -25,9 +25,9 @@ import java.util.EnumSet; import java.util.List; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEColor; @@ -60,7 +60,7 @@ public class CableBusRenderState // connections contains a corresponding entry. private EnumMap channelsOnSide = new EnumMap<>( EnumFacing.class ); - private EnumMap> attachments = new EnumMap<>( EnumFacing.class ); + private EnumMap attachments = new EnumMap<>( EnumFacing.class ); // For each attachment, this contains the distance from the edge until which a cable connection should be drawn private EnumMap attachmentConnections = new EnumMap<>( EnumFacing.class ); @@ -68,7 +68,8 @@ public class CableBusRenderState // Contains the facade to use for each side that has a facade attached private EnumMap facades = new EnumMap<>( EnumFacing.class ); - // Contains the bounding boxes of all parts on the cable bus to allow facades to cut out holes for the parts. This list is only populated if there are + // Contains the bounding boxes of all parts on the cable bus to allow facades to cut out holes for the parts. This + // list is only populated if there are // facades on this cable bus private List boundingBoxes = new ArrayList<>(); @@ -132,7 +133,7 @@ public class CableBusRenderState this.cableBusAdjacent = cableBusAdjacent; } - public EnumMap> getAttachments() + public EnumMap getAttachments() { return attachments; } diff --git a/src/main/java/appeng/client/render/cablebus/CubeBuilder.java b/src/main/java/appeng/client/render/cablebus/CubeBuilder.java index 3ec6bcd12..0794fcb2e 100644 --- a/src/main/java/appeng/client/render/cablebus/CubeBuilder.java +++ b/src/main/java/appeng/client/render/cablebus/CubeBuilder.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.EnumMap; import java.util.EnumSet; import java.util.List; + import javax.vecmath.Vector4f; import com.google.common.base.Preconditions; diff --git a/src/main/java/appeng/client/render/cablebus/FacadeBuilder.java b/src/main/java/appeng/client/render/cablebus/FacadeBuilder.java index cad384bbd..6373b69e4 100644 --- a/src/main/java/appeng/client/render/cablebus/FacadeBuilder.java +++ b/src/main/java/appeng/client/render/cablebus/FacadeBuilder.java @@ -26,6 +26,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; + import javax.annotation.Nullable; import javax.vecmath.Vector3f; diff --git a/src/main/java/appeng/client/render/crafting/ItemEncodedPatternBakedModel.java b/src/main/java/appeng/client/render/crafting/ItemEncodedPatternBakedModel.java index 5309d6861..801c7ccbc 100644 --- a/src/main/java/appeng/client/render/crafting/ItemEncodedPatternBakedModel.java +++ b/src/main/java/appeng/client/render/crafting/ItemEncodedPatternBakedModel.java @@ -2,6 +2,7 @@ package appeng.client.render.crafting; import java.util.List; + import javax.annotation.Nullable; import javax.vecmath.Matrix4f; diff --git a/src/main/java/appeng/client/render/model/AutoRotatingModel.java b/src/main/java/appeng/client/render/model/AutoRotatingModel.java index ef4afc0d4..74066cb78 100644 --- a/src/main/java/appeng/client/render/model/AutoRotatingModel.java +++ b/src/main/java/appeng/client/render/model/AutoRotatingModel.java @@ -21,6 +21,7 @@ package appeng.client.render.model; import java.util.ArrayList; import java.util.List; + import javax.vecmath.Vector3f; import javax.vecmath.Vector4f; diff --git a/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java b/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java index 4ef5d606c..5f4633d79 100644 --- a/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java +++ b/src/main/java/appeng/client/render/model/BiometricCardBakedModel.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; + import javax.annotation.Nullable; import javax.vecmath.Matrix4f; diff --git a/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java b/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java index 35e92ca57..c674c1d1b 100644 --- a/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java +++ b/src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java @@ -4,6 +4,7 @@ package appeng.client.render.model; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; + import javax.annotation.Nullable; import javax.vecmath.Matrix4f; diff --git a/src/main/java/appeng/client/render/model/UVLModelLoader.java b/src/main/java/appeng/client/render/model/UVLModelLoader.java index d456dde0e..5dd369292 100644 --- a/src/main/java/appeng/client/render/model/UVLModelLoader.java +++ b/src/main/java/appeng/client/render/model/UVLModelLoader.java @@ -32,6 +32,7 @@ import java.lang.reflect.Type; import java.util.Collection; import java.util.HashMap; import java.util.Map; + import javax.annotation.Nullable; import com.google.common.base.Charsets; diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 2839c6b41..408cf2793 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -22,6 +22,7 @@ package appeng.core; import java.io.File; import java.util.List; import java.util.concurrent.TimeUnit; + import javax.annotation.Nonnull; import com.google.common.base.Stopwatch; diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index c7248b646..bfb489543 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -22,6 +22,7 @@ package appeng.core; import java.io.File; import java.util.HashSet; import java.util.Set; + import javax.annotation.Nonnull; import com.google.common.base.Preconditions; diff --git a/src/main/java/appeng/core/sync/AppEngPacketHandlerBase.java b/src/main/java/appeng/core/sync/AppEngPacketHandlerBase.java index 22a561939..f32972a88 100644 --- a/src/main/java/appeng/core/sync/AppEngPacketHandlerBase.java +++ b/src/main/java/appeng/core/sync/AppEngPacketHandlerBase.java @@ -34,11 +34,11 @@ import appeng.core.sync.packets.PacketCompressedNBT; import appeng.core.sync.packets.PacketConfigButton; import appeng.core.sync.packets.PacketCraftRequest; import appeng.core.sync.packets.PacketInventoryAction; +import appeng.core.sync.packets.PacketJEIRecipe; import appeng.core.sync.packets.PacketLightning; import appeng.core.sync.packets.PacketMEInventoryUpdate; import appeng.core.sync.packets.PacketMatterCannon; import appeng.core.sync.packets.PacketMockExplosion; -import appeng.core.sync.packets.PacketJEIRecipe; import appeng.core.sync.packets.PacketNewStorageDimension; import appeng.core.sync.packets.PacketPaintedEntity; import appeng.core.sync.packets.PacketPartPlacement; diff --git a/src/main/java/appeng/decorative/slab/BlockSlabCommon.java b/src/main/java/appeng/decorative/slab/BlockSlabCommon.java index 0946bf7c0..4ce3827d4 100644 --- a/src/main/java/appeng/decorative/slab/BlockSlabCommon.java +++ b/src/main/java/appeng/decorative/slab/BlockSlabCommon.java @@ -2,6 +2,7 @@ package appeng.decorative.slab; import java.util.Random; + import javax.annotation.Nullable; import net.minecraft.block.Block; diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index 0ad298e3e..06c433050 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; + import javax.annotation.Nullable; import com.google.common.collect.ImmutableSet; diff --git a/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java b/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java index 108b44dfb..ff5df6e95 100644 --- a/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java +++ b/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java @@ -21,6 +21,7 @@ package appeng.integration.modules.jei; import java.util.Collections; import java.util.List; + import javax.annotation.Nullable; import com.google.common.base.Splitter; diff --git a/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java b/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java index 454447d9f..aacfc6bba 100644 --- a/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java +++ b/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Map; + import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/appeng/items/parts/ItemPart.java b/src/main/java/appeng/items/parts/ItemPart.java index 3e76baa5d..49f7d0f0e 100644 --- a/src/main/java/appeng/items/parts/ItemPart.java +++ b/src/main/java/appeng/items/parts/ItemPart.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; + import javax.annotation.Nonnull; import javax.annotation.Nullable; diff --git a/src/main/java/appeng/items/parts/PartModelsHelper.java b/src/main/java/appeng/items/parts/PartModelsHelper.java index 6dd2e9303..83dd00ef9 100644 --- a/src/main/java/appeng/items/parts/PartModelsHelper.java +++ b/src/main/java/appeng/items/parts/PartModelsHelper.java @@ -1,3 +1,4 @@ + package appeng.items.parts; @@ -11,6 +12,7 @@ import java.util.List; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AELog; @@ -22,7 +24,7 @@ class PartModelsHelper static List createModels( Class clazz ) { - List locations = new ArrayList<>( ); + List locations = new ArrayList<>(); // Check all static fields for used models Field[] fields = clazz.getDeclaredFields(); @@ -33,7 +35,6 @@ class PartModelsHelper continue; } - if( !Modifier.isStatic( field.getModifiers() ) ) { AELog.error( "The @PartModels annotation can only be used on static fields or methods. Was seen on: " + field ); @@ -80,8 +81,8 @@ class PartModelsHelper Class returnType = method.getReturnType(); if( !ResourceLocation.class.isAssignableFrom( returnType ) && !Collection.class.isAssignableFrom( returnType ) ) { - AELog.error( "The @PartModels annotation can only be used on static methods that return a ResourceLocation or Collection of " - + "ResourceLocations. Was seen on: " + method ); + AELog.error( + "The @PartModels annotation can only be used on static methods that return a ResourceLocation or Collection of " + "ResourceLocations. Was seen on: " + method ); continue; } @@ -119,18 +120,23 @@ class PartModelsHelper { locations.add( (ResourceLocation) value ); } + else if( value instanceof IPartModel ) + { + locations.addAll( ( (IPartModel) value ).getModels() ); + } else if( value instanceof Collection ) { - // Check that each object is a ResourceLocation + // Check that each object is an IPartModel Collection values = (Collection) value; for( Object candidate : values ) { - if ( !( candidate instanceof ResourceLocation )) { + if( !( candidate instanceof IPartModel ) ) + { AELog.error( "List of locations obtained from {} contains a non resource location: {}", source, candidate ); continue; } - locations.add( (ResourceLocation) candidate ); + locations.addAll( ( (IPartModel) candidate ).getModels() ); } } } diff --git a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java index 61a71bd43..f919dcc7f 100644 --- a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java +++ b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java @@ -62,8 +62,8 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.api.util.AEColor; import appeng.api.util.DimensionalCoord; -import appeng.block.paint.BlockPaint; import appeng.block.networking.BlockCableBus; +import appeng.block.paint.BlockPaint; import appeng.core.AEConfig; import appeng.core.localization.GuiText; import appeng.helpers.IMouseWheelItem; diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 63743ce45..e806283bb 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -25,6 +25,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.Set; + import javax.annotation.Nullable; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/appeng/parts/PartModel.java b/src/main/java/appeng/parts/PartModel.java new file mode 100644 index 000000000..727984f88 --- /dev/null +++ b/src/main/java/appeng/parts/PartModel.java @@ -0,0 +1,80 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.parts; + + +import java.util.List; + +import com.google.common.collect.ImmutableList; + +import net.minecraft.util.ResourceLocation; + +import appeng.api.parts.IPartModel; + + +public class PartModel implements IPartModel +{ + private final boolean isSolid; + + private final List resources; + + public PartModel( ResourceLocation resource ) + { + this( true, resource ); + } + + public PartModel( ResourceLocation... resources ) + { + this( true, resources ); + } + + public PartModel( boolean isSolid, ResourceLocation resource ) + { + this( isSolid, ImmutableList.of( resource ) ); + } + + public PartModel( boolean isSolid, ResourceLocation... resources ) + { + this( isSolid, ImmutableList.copyOf( resources ) ); + } + + public PartModel( List resources ) + { + this( true, resources ); + } + + public PartModel( boolean isSolid, List resources ) + { + this.isSolid = isSolid; + this.resources = resources; + } + + @Override + public boolean requireCableConnection() + { + return this.isSolid; + } + + @Override + public List getModels() + { + return this.resources; + } + +} diff --git a/src/main/java/appeng/parts/automation/PartAnnihilationPlane.java b/src/main/java/appeng/parts/automation/PartAnnihilationPlane.java index e6fb8481d..dd5e5f384 100644 --- a/src/main/java/appeng/parts/automation/PartAnnihilationPlane.java +++ b/src/main/java/appeng/parts/automation/PartAnnihilationPlane.java @@ -31,7 +31,6 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -53,6 +52,7 @@ import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPart; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; @@ -74,7 +74,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab private static final PlaneModels MODELS = new PlaneModels( "part/annihilation_plane_", "part/annihilation_plane_on_" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -233,8 +233,9 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab boolean capture = false; final BlockPos pos = this.getTile().getPos(); - // This is the middle point of the entities BB, which is better suited for comparisons that don't rely on it "touching" the plane - double posYMiddle = (entity.getEntityBoundingBox().minY + entity.getEntityBoundingBox().maxY) / 2.0D; + // This is the middle point of the entities BB, which is better suited for comparisons that don't rely on it + // "touching" the plane + double posYMiddle = ( entity.getEntityBoundingBox().minY + entity.getEntityBoundingBox().maxY ) / 2.0D; switch( this.getSide() ) { @@ -244,7 +245,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { if( entity.posZ > pos.getZ() && entity.posZ < pos.getZ() + 1 ) { - if( ( entity.posY > pos.getY() + 0.9 && this.getSide() == AEPartLocation.UP ) || ( entity.posY < pos.getY() + 0.1 && this.getSide() == AEPartLocation.DOWN ) ) + if( ( entity.posY > pos.getY() + 0.9 && this.getSide() == AEPartLocation.UP ) || ( entity.posY < pos.getY() + 0.1 && this + .getSide() == AEPartLocation.DOWN ) ) { capture = true; } @@ -257,7 +259,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { if( posYMiddle > pos.getY() && posYMiddle < pos.getY() + 1 ) { - if( ( entity.posZ > pos.getZ() + 0.9 && this.getSide() == AEPartLocation.SOUTH ) || ( entity.posZ < pos.getZ() + 0.1 && this.getSide() == AEPartLocation.NORTH ) ) + if( ( entity.posZ > pos.getZ() + 0.9 && this.getSide() == AEPartLocation.SOUTH ) || ( entity.posZ < pos.getZ() + 0.1 && this + .getSide() == AEPartLocation.NORTH ) ) { capture = true; } @@ -270,7 +273,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { if( posYMiddle > pos.getY() && posYMiddle < pos.getY() + 1 ) { - if( ( entity.posX > pos.getX() + 0.9 && this.getSide() == AEPartLocation.EAST ) || ( entity.posX < pos.getX() + 0.1 && this.getSide() == AEPartLocation.WEST ) ) + if( ( entity.posX > pos.getX() + 0.9 && this.getSide() == AEPartLocation.EAST ) || ( entity.posX < pos.getX() + 0.1 && this + .getSide() == AEPartLocation.WEST ) ) { capture = true; } @@ -288,7 +292,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab if( changed ) { - ServerHelper.proxy.sendToAllNearExcept( null, pos.getX(), pos.getY(), pos.getZ(), 64, this.getTile().getWorld(), new PacketTransitionEffect( entity.posX, entity.posY, entity.posZ, this.getSide(), false ) ); + ServerHelper.proxy.sendToAllNearExcept( null, pos.getX(), pos.getY(), pos.getZ(), 64, this.getTile().getWorld(), + new PacketTransitionEffect( entity.posX, entity.posY, entity.posZ, this.getSide(), false ) ); } } } @@ -452,7 +457,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { energy.extractAEPower( requiredPower, Actionable.MODULATE, PowerMultiplier.CONFIG ); this.breakBlockAndStoreItems( w, pos, items ); - ServerHelper.proxy.sendToAllNearExcept( null, pos.getX(), pos.getY(), pos.getZ(), 64, w, new PacketTransitionEffect( pos.getX(), pos.getY(), pos.getZ(), this.getSide(), true ) ); + ServerHelper.proxy.sendToAllNearExcept( null, pos.getX(), pos.getY(), pos.getZ(), 64, w, + new PacketTransitionEffect( pos.getX(), pos.getY(), pos.getZ(), this.getSide(), true ) ); } else { @@ -500,9 +506,12 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab final Material material = state.getMaterial(); final float hardness = state.getBlockHardness( w, pos ); final boolean ignoreMaterials = material == Material.AIR || material == Material.LAVA || material == Material.WATER || material.isLiquid(); - final boolean ignoreBlocks = state.getBlock() == Blocks.BEDROCK || state.getBlock() == Blocks.END_PORTAL || state.getBlock() == Blocks.END_PORTAL_FRAME || state.getBlock() == Blocks.COMMAND_BLOCK; + final boolean ignoreBlocks = state.getBlock() == Blocks.BEDROCK || state.getBlock() == Blocks.END_PORTAL || state + .getBlock() == Blocks.END_PORTAL_FRAME || state.getBlock() == Blocks.COMMAND_BLOCK; - return !ignoreMaterials && !ignoreBlocks && !w.isAirBlock( pos ) && w.isBlockLoaded( pos ) && w.canMineBlockBody( Platform.getPlayer( w ), pos ) && hardness >= 0f; + return !ignoreMaterials && !ignoreBlocks && hardness >= 0f && !w.isAirBlock( pos ) && w.isBlockLoaded( pos ) && w.canMineBlockBody( + Platform.getPlayer( w ), + pos ); } protected List obtainBlockDrops( final WorldServer w, final BlockPos pos ) @@ -568,7 +577,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { w.setBlockToAir( pos ); - final AxisAlignedBB box = new AxisAlignedBB( pos.getX() - 0.2, pos.getY() - 0.2, pos.getZ() - 0.2, pos.getX() + 1.2, pos.getY() + 1.2, pos.getZ() + 1.2 ); + final AxisAlignedBB box = new AxisAlignedBB( pos.getX() - 0.2, pos.getY() - 0.2, pos.getZ() - 0.2, pos.getX() + 1.2, pos.getY() + 1.2, pos + .getZ() + 1.2 ); for( final Object ei : w.getEntitiesWithinAABB( EntityItem.class, box ) ) { if( ei instanceof EntityItem ) @@ -586,7 +596,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( getConnections(), isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/automation/PartExportBus.java b/src/main/java/appeng/parts/automation/PartExportBus.java index 7e475695a..0d7c9078c 100644 --- a/src/main/java/appeng/parts/automation/PartExportBus.java +++ b/src/main/java/appeng/parts/automation/PartExportBus.java @@ -19,8 +19,6 @@ package appeng.parts.automation; -import java.util.List; - import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -49,6 +47,7 @@ import appeng.api.networking.security.MachineSource; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; import appeng.api.storage.data.IAEItemStack; @@ -61,6 +60,7 @@ import appeng.helpers.MultiCraftingTracker; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; +import appeng.parts.PartModel; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.item.AEItemStack; @@ -70,22 +70,16 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest { public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/export_bus_base" ); + @PartModels - public static final List MODELS_OFF = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/export_bus_off" ) - ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/export_bus_off" ) ); + @PartModels - public static final List MODELS_ON = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/export_bus_on" ) - ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/export_bus_on" ) ); + @PartModels - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/export_bus_has_channel" ) - ); - + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/export_bus_has_channel" ) ); + private final MultiCraftingTracker craftingTracker = new MultiCraftingTracker( this, 9 ); private final BaseActionSource mySrc; private long itemToSend = 1; @@ -154,7 +148,8 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest { if( this.isCraftingEnabled() ) { - this.didSomething = this.craftingTracker.handleCrafting( slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), this.getProxy().getGrid(), cg, this.mySrc ) || this.didSomething; + this.didSomething = this.craftingTracker.handleCrafting( slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), + this.getProxy().getGrid(), cg, this.mySrc ) || this.didSomething; } continue; } @@ -179,7 +174,8 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest if( this.itemToSend == before && this.isCraftingEnabled() ) { - this.didSomething = this.craftingTracker.handleCrafting( slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), this.getProxy().getGrid(), cg, this.mySrc ) || this.didSomething; + this.didSomething = this.craftingTracker.handleCrafting( slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), + this.getProxy().getGrid(), cg, this.mySrc ) || this.didSomething; } } @@ -362,7 +358,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/automation/PartFormationPlane.java b/src/main/java/appeng/parts/automation/PartFormationPlane.java index 0a4738155..b9386be73 100644 --- a/src/main/java/appeng/parts/automation/PartFormationPlane.java +++ b/src/main/java/appeng/parts/automation/PartFormationPlane.java @@ -37,7 +37,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -62,6 +61,7 @@ import appeng.api.parts.IPart; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; import appeng.api.parts.IPartItem; +import appeng.api.parts.IPartModel; import appeng.api.storage.ICellContainer; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEInventoryHandler; @@ -90,7 +90,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine private static final PlaneModels MODELS = new PlaneModels( "part/formation_plane_", "part/formation_plane_on_" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -447,8 +447,9 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine if( w.getBlockState( tePos ).getBlock().isReplaceable( w, tePos ) ) { - if( placeBlock == YesNo.YES && ( i instanceof ItemBlock || i instanceof IPlantable || i instanceof ItemSkull || i instanceof ItemFirework || i instanceof IPartItem || i == Item.getItemFromBlock( - Blocks.REEDS ) ) ) + if( placeBlock == YesNo.YES && ( i instanceof ItemBlock || i instanceof IPlantable || i instanceof ItemSkull || i instanceof ItemFirework || i instanceof IPartItem || i == Item + .getItemFromBlock( + Blocks.REEDS ) ) ) { final EntityPlayer player = Platform.getPlayer( (WorldServer) w ); Platform.configurePlayer( player, side, this.getTile() ); @@ -614,7 +615,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( getConnections(), isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java b/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java index 8d9e800dd..da98918e7 100644 --- a/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java +++ b/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java @@ -26,7 +26,6 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.FakePlayer; @@ -34,6 +33,7 @@ import net.minecraftforge.common.util.FakePlayerFactory; import appeng.api.parts.IPart; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.util.AEPartLocation; import appeng.items.parts.PartModels; @@ -44,7 +44,7 @@ public class PartIdentityAnnihilationPlane extends PartAnnihilationPlane private static final PlaneModels MODELS = new PlaneModels( "part/identity_annihilation_plane_", "part/identity_annihilation_plane_on_" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -105,7 +105,7 @@ public class PartIdentityAnnihilationPlane extends PartAnnihilationPlane } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( getConnections(), isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/automation/PartImportBus.java b/src/main/java/appeng/parts/automation/PartImportBus.java index 56973e858..730423086 100644 --- a/src/main/java/appeng/parts/automation/PartImportBus.java +++ b/src/main/java/appeng/parts/automation/PartImportBus.java @@ -19,10 +19,6 @@ package appeng.parts.automation; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; @@ -44,6 +40,7 @@ import appeng.api.networking.security.MachineSource; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; import appeng.api.storage.data.IAEItemStack; @@ -54,6 +51,7 @@ import appeng.core.sync.GuiBridge; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; +import appeng.parts.PartModel; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.IInventoryDestination; @@ -65,21 +63,12 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/import_bus_base" ); @PartModels - public static final List MODELS_OFF = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/import_bus_off" ) - ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/import_bus_off" ) ); @PartModels - public static final List MODELS_ON = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/import_bus_on" ) - ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/import_bus_on" ) ); @PartModels - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/import_bus_has_channel" ) - ); - + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/import_bus_has_channel" ) ); + private final BaseActionSource source; private IMEInventory destination = null; private IAEItemStack lastItemChecked = null; @@ -104,7 +93,8 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin return false; } - final IAEItemStack out = this.destination.injectItems( this.lastItemChecked = AEApi.instance().storage().createItemStack( stack ), Actionable.SIMULATE, this.source ); + final IAEItemStack out = this.destination.injectItems( this.lastItemChecked = AEApi.instance().storage().createItemStack( stack ), Actionable.SIMULATE, + this.source ); if( out == null ) { return true; @@ -173,7 +163,8 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin try { this.itemToSend = this.calculateItemsToSend(); - this.itemToSend = Math.min( this.itemToSend, (int) ( 0.01 + this.getProxy().getEnergy().extractAEPower( this.itemToSend, Actionable.SIMULATE, PowerMultiplier.CONFIG ) ) ); + this.itemToSend = Math.min( this.itemToSend, + (int) ( 0.01 + this.getProxy().getEnergy().extractAEPower( this.itemToSend, Actionable.SIMULATE, PowerMultiplier.CONFIG ) ) ); final IMEMonitor inv = this.getProxy().getStorage().getItemInventory(); final IEnergyGrid energy = this.getProxy().getEnergy(); @@ -235,7 +226,8 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin if( newItems != null ) { - newItems.stackSize = (int) ( Math.min( newItems.stackSize, energy.extractAEPower( newItems.stackSize, Actionable.SIMULATE, PowerMultiplier.CONFIG ) ) + 0.01 ); + newItems.stackSize = (int) ( Math.min( newItems.stackSize, + energy.extractAEPower( newItems.stackSize, Actionable.SIMULATE, PowerMultiplier.CONFIG ) ) + 0.01 ); this.itemToSend -= newItems.stackSize; if( this.lastItemChecked == null || !this.lastItemChecked.isSameType( newItems ) ) @@ -321,7 +313,7 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/automation/PartLevelEmitter.java b/src/main/java/appeng/parts/automation/PartLevelEmitter.java index d8f0de262..ab5d2aee2 100644 --- a/src/main/java/appeng/parts/automation/PartLevelEmitter.java +++ b/src/main/java/appeng/parts/automation/PartLevelEmitter.java @@ -20,11 +20,8 @@ package appeng.parts.automation; import java.util.Collection; -import java.util.List; import java.util.Random; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; @@ -62,6 +59,7 @@ import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcherHost; import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.StorageChannel; @@ -76,6 +74,7 @@ import appeng.core.sync.GuiBridge; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; +import appeng.parts.PartModel; import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.inventory.InvOperation; import appeng.util.Platform; @@ -95,12 +94,12 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH @PartModels public static final ResourceLocation MODEL_STATUS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/level_emitter_status_has_channel" ); - public static final List MODEL_OFF_OFF = ImmutableList.of( MODEL_BASE_OFF, MODEL_STATUS_OFF ); - public static final List MODEL_OFF_ON = ImmutableList.of( MODEL_BASE_OFF, MODEL_STATUS_ON ); - public static final List MODEL_OFF_HAS_CHANNEL = ImmutableList.of( MODEL_BASE_OFF, MODEL_STATUS_HAS_CHANNEL ); - public static final List MODEL_ON_OFF = ImmutableList.of( MODEL_BASE_ON, MODEL_STATUS_OFF ); - public static final List MODEL_ON_ON = ImmutableList.of( MODEL_BASE_ON, MODEL_STATUS_ON ); - public static final List MODEL_ON_HAS_CHANNEL = ImmutableList.of( MODEL_BASE_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final PartModel MODEL_OFF_OFF = new PartModel( MODEL_BASE_OFF, MODEL_STATUS_OFF ); + public static final PartModel MODEL_OFF_ON = new PartModel( MODEL_BASE_OFF, MODEL_STATUS_ON ); + public static final PartModel MODEL_OFF_HAS_CHANNEL = new PartModel( MODEL_BASE_OFF, MODEL_STATUS_HAS_CHANNEL ); + public static final PartModel MODEL_ON_OFF = new PartModel( MODEL_BASE_ON, MODEL_STATUS_OFF ); + public static final PartModel MODEL_ON_ON = new PartModel( MODEL_BASE_ON, MODEL_STATUS_ON ); + public static final PartModel MODEL_ON_HAS_CHANNEL = new PartModel( MODEL_BASE_ON, MODEL_STATUS_HAS_CHANNEL ); private static final int FLAG_ON = 4; @@ -445,7 +444,8 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH final double d1 = d.yOffset * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D; final double d2 = d.zOffset * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D; - world.spawnParticle( EnumParticleTypes.REDSTONE, 0.5 + pos.getX() + d0, 0.5 + pos.getY() + d1, 0.5 + pos.getZ() + d2, 0.0D, 0.0D, 0.0D, new int[0] ); + world.spawnParticle( EnumParticleTypes.REDSTONE, 0.5 + pos.getX() + d0, 0.5 + pos.getY() + d1, 0.5 + pos.getZ() + d2, 0.0D, 0.0D, 0.0D, + new int[0] ); } } @@ -561,7 +561,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/automation/PlaneModels.java b/src/main/java/appeng/parts/automation/PlaneModels.java index 8ecae2df0..c8c5611d0 100644 --- a/src/main/java/appeng/parts/automation/PlaneModels.java +++ b/src/main/java/appeng/parts/automation/PlaneModels.java @@ -24,12 +24,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; +import appeng.parts.PartModel; /** @@ -42,26 +43,26 @@ class PlaneModels public static final ResourceLocation MODEL_CHASSIS_ON = new ResourceLocation( AppEng.MOD_ID, "part/transition_plane_on" ); public static final ResourceLocation MODEL_CHASSIS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/transition_plane_has_channel" ); - private final Map> modelsOff; + private final Map modelsOff; - private final Map> modelsOn; + private final Map modelsOn; - private final Map> modelsHasChannel; + private final Map modelsHasChannel; public PlaneModels( String prefixOff, String prefixOn ) { - Map> modelsOff = new HashMap<>(); - Map> modelsOn = new HashMap<>(); - Map> modelsHasChannel = new HashMap<>(); + Map modelsOff = new HashMap<>(); + Map modelsOn = new HashMap<>(); + Map modelsHasChannel = new HashMap<>(); for( PlaneConnections permutation : PlaneConnections.PERMUTATIONS ) { ResourceLocation planeOff = new ResourceLocation( AppEng.MOD_ID, prefixOff + permutation.getFilenameSuffix() ); ResourceLocation planeOn = new ResourceLocation( AppEng.MOD_ID, prefixOn + permutation.getFilenameSuffix() ); - modelsOff.put( permutation, ImmutableList.of( MODEL_CHASSIS_OFF, planeOff ) ); - modelsOn.put( permutation, ImmutableList.of( MODEL_CHASSIS_ON, planeOff ) ); - modelsHasChannel.put( permutation, ImmutableList.of( MODEL_CHASSIS_HAS_CHANNEL, planeOn ) ); + modelsOff.put( permutation, new PartModel( MODEL_CHASSIS_OFF, planeOff ) ); + modelsOn.put( permutation, new PartModel( MODEL_CHASSIS_ON, planeOff ) ); + modelsHasChannel.put( permutation, new PartModel( MODEL_CHASSIS_HAS_CHANNEL, planeOn ) ); } this.modelsOff = ImmutableMap.copyOf( modelsOff ); @@ -69,7 +70,7 @@ class PlaneModels this.modelsHasChannel = ImmutableMap.copyOf( modelsHasChannel ); } - public List getModel( PlaneConnections connections, boolean hasPower, boolean hasChannel ) + public IPartModel getModel( PlaneConnections connections, boolean hasPower, boolean hasChannel ) { if( hasPower && hasChannel ) { @@ -85,12 +86,12 @@ class PlaneModels } } - public List getModels() + public List getModels() { - List result = new ArrayList<>(); - modelsOff.values().forEach( result::addAll ); - modelsOn.values().forEach( result::addAll ); - modelsHasChannel.values().forEach( result::addAll ); + List result = new ArrayList<>(); + modelsOff.values().forEach( result::add ); + modelsOn.values().forEach( result::add ); + modelsHasChannel.values().forEach( result::add ); return result; } diff --git a/src/main/java/appeng/parts/misc/PartCableAnchor.java b/src/main/java/appeng/parts/misc/PartCableAnchor.java index 3fb67dfa0..870c08c75 100644 --- a/src/main/java/appeng/parts/misc/PartCableAnchor.java +++ b/src/main/java/appeng/parts/misc/PartCableAnchor.java @@ -23,8 +23,6 @@ import java.io.IOException; import java.util.List; import java.util.Random; -import com.google.common.collect.ImmutableList; - import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -44,18 +42,23 @@ import appeng.api.parts.BusSupport; import appeng.api.parts.IPart; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.parts.PartItemStack; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.core.AppEng; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartCableAnchor implements IPart { @PartModels - public static final List MODELS = ImmutableList.of( new ResourceLocation( AppEng.MOD_ID, "part/cable_anchor" ) ); + public static final PartModel DEFAULT_MODELS = new PartModel( false, new ResourceLocation( AppEng.MOD_ID, "part/cable_anchor" ) ); + + @PartModels + public static final PartModel FACADE_MODELS = new PartModel( false, new ResourceLocation( AppEng.MOD_ID, "part/cable_anchor_short" ) ); private ItemStack is = null; private IPartHost host = null; @@ -237,9 +240,16 @@ public class PartCableAnchor implements IPart } @Override - public List getStaticModels() + public IPartModel getStaticModels() { - return MODELS; + if( this.host != null && this.host.getFacadeContainer().getFacade( this.mySide ) != null ) + { + return FACADE_MODELS; + } + else + { + return DEFAULT_MODELS; + } } } diff --git a/src/main/java/appeng/parts/misc/PartInterface.java b/src/main/java/appeng/parts/misc/PartInterface.java index 513d00e78..905ef84d3 100644 --- a/src/main/java/appeng/parts/misc/PartInterface.java +++ b/src/main/java/appeng/parts/misc/PartInterface.java @@ -22,7 +22,6 @@ package appeng.parts.misc; import java.util.EnumSet; import java.util.List; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import net.minecraft.entity.player.EntityPlayer; @@ -52,6 +51,7 @@ import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.data.IAEFluidStack; @@ -66,6 +66,7 @@ import appeng.helpers.IPriorityHost; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.parts.PartBasicState; +import appeng.parts.PartModel; import appeng.tile.inventory.IAEAppEngInventory; import appeng.tile.inventory.InvOperation; import appeng.util.Platform; @@ -76,21 +77,15 @@ public class PartInterface extends PartBasicState implements IGridTickable, ISto { public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/interface_base" ); + @PartModels - public static final List MODELS_OFF = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/interface_off" ) - ); + public static final PartModel MODELS_OFF = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/interface_off" ) ); + @PartModels - public static final List MODELS_ON = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/interface_on" ) - ); + public static final PartModel MODELS_ON = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/interface_on" ) ); + @PartModels - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/interface_has_channel" ) - ); + public static final PartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/interface_has_channel" ) ); private final DualityInterface duality = new DualityInterface( this.getProxy(), this ); @@ -421,7 +416,7 @@ public class PartInterface extends PartBasicState implements IGridTickable, ISto } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/misc/PartInvertedToggleBus.java b/src/main/java/appeng/parts/misc/PartInvertedToggleBus.java index 9d5e7fa25..0d8f670e3 100644 --- a/src/main/java/appeng/parts/misc/PartInvertedToggleBus.java +++ b/src/main/java/appeng/parts/misc/PartInvertedToggleBus.java @@ -19,16 +19,14 @@ package appeng.parts.misc; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartInvertedToggleBus extends PartToggleBus @@ -36,9 +34,9 @@ public class PartInvertedToggleBus extends PartToggleBus @PartModels public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/inverted_toggle_bus_base" ); - public static final List MODELS_OFF = ImmutableList.of(MODEL_BASE, MODEL_STATUS_OFF); - public static final List MODELS_ON = ImmutableList.of(MODEL_BASE, MODEL_STATUS_ON); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of(MODEL_BASE, MODEL_STATUS_HAS_CHANNEL); + public static final PartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_STATUS_OFF ); + public static final PartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_STATUS_ON ); + public static final PartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_STATUS_HAS_CHANNEL ); @Reflected public PartInvertedToggleBus( final ItemStack is ) @@ -57,7 +55,7 @@ public class PartInvertedToggleBus extends PartToggleBus } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( hasRedstoneFlag() && isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/misc/PartStorageBus.java b/src/main/java/appeng/parts/misc/PartStorageBus.java index 81c14e515..26f9c3717 100644 --- a/src/main/java/appeng/parts/misc/PartStorageBus.java +++ b/src/main/java/appeng/parts/misc/PartStorageBus.java @@ -23,8 +23,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -58,6 +56,7 @@ import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.storage.ICellContainer; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEInventoryHandler; @@ -84,6 +83,7 @@ import appeng.me.GridAccessException; import appeng.me.storage.ITickingMonitor; import appeng.me.storage.MEInventoryHandler; import appeng.me.storage.MEMonitorIInventory; +import appeng.parts.PartModel; import appeng.parts.automation.PartUpgradeable; import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.inventory.InvOperation; @@ -96,22 +96,16 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC { public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_base" ); + @PartModels - public static final List MODELS_OFF = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_off" ) - ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_off" ) ) ; + @PartModels - public static final List MODELS_ON = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_on" ) - ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_on" ) ) ; + @PartModels - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( - MODEL_BASE, - new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_has_channel" ) - ); - + public static final IPartModel MODELS_HAS_CHANNEL =new PartModel( MODEL_BASE, new ResourceLocation( AppEng.MOD_ID, "part/storage_bus_has_channel" ) ); + private final BaseActionSource mySrc; private final AppEngInternalAEInventory Config = new AppEngInternalAEInventory( this, 63 ); private int priority = 0; @@ -223,7 +217,9 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC private 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; } @@ -465,7 +461,8 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC 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 { @@ -587,7 +584,7 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( isActive() && isPowered() ) { @@ -602,5 +599,5 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC return MODELS_OFF; } } - + } diff --git a/src/main/java/appeng/parts/misc/PartToggleBus.java b/src/main/java/appeng/parts/misc/PartToggleBus.java index 96eb33362..f5cde0471 100644 --- a/src/main/java/appeng/parts/misc/PartToggleBus.java +++ b/src/main/java/appeng/parts/misc/PartToggleBus.java @@ -23,8 +23,6 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -38,6 +36,7 @@ import appeng.api.networking.IGridConnection; import appeng.api.networking.IGridNode; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.core.AppEng; @@ -45,6 +44,7 @@ import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.helpers.AENetworkProxy; import appeng.parts.PartBasicState; +import appeng.parts.PartModel; import appeng.util.Platform; @@ -60,9 +60,9 @@ public class PartToggleBus extends PartBasicState @PartModels public static final ResourceLocation MODEL_STATUS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/toggle_bus_status_has_channel" ); - public static final List MODELS_OFF = ImmutableList.of(MODEL_BASE, MODEL_STATUS_OFF); - public static final List MODELS_ON = ImmutableList.of(MODEL_BASE, MODEL_STATUS_ON); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of(MODEL_BASE, MODEL_STATUS_HAS_CHANNEL); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_STATUS_HAS_CHANNEL ); private static final int REDSTONE_FLAG = 4; private final AENetworkProxy outerProxy = new AENetworkProxy( this, "outer", null, true ); @@ -86,8 +86,9 @@ public class PartToggleBus extends PartBasicState return cf | ( this.getIntention() ? REDSTONE_FLAG : 0 ); } - public boolean hasRedstoneFlag() { - return (getClientFlags() & REDSTONE_FLAG) == REDSTONE_FLAG; + public boolean hasRedstoneFlag() + { + return ( getClientFlags() & REDSTONE_FLAG ) == REDSTONE_FLAG; } protected boolean getIntention() @@ -222,7 +223,7 @@ public class PartToggleBus extends PartBasicState } @Override - public List getStaticModels() + public IPartModel getStaticModels() { if( hasRedstoneFlag() && isActive() && isPowered() ) { diff --git a/src/main/java/appeng/parts/networking/PartCable.java b/src/main/java/appeng/parts/networking/PartCable.java index 4b8f45b3d..d1e462f8d 100644 --- a/src/main/java/appeng/parts/networking/PartCable.java +++ b/src/main/java/appeng/parts/networking/PartCable.java @@ -43,6 +43,7 @@ import appeng.api.parts.BusSupport; import appeng.api.parts.IPart; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEColor; import appeng.api.util.AEPartLocation; @@ -56,7 +57,8 @@ import appeng.util.Platform; public class PartCable extends AEBasePart implements IPartCable { - private static final ImmutableSet STRAIGHT_PART_LOCATIONS = ImmutableSet.of( AEPartLocation.DOWN, AEPartLocation.NORTH, AEPartLocation.EAST ); + private static final ImmutableSet STRAIGHT_PART_LOCATIONS = ImmutableSet.of( AEPartLocation.DOWN, AEPartLocation.NORTH, + AEPartLocation.EAST ); private final int[] channelsOnSide = { 0, 0, 0, 0, 0, 0 }; @@ -388,10 +390,10 @@ public class PartCable extends AEBasePart implements IPartCable ch = ( (int) data.readByte() ) & 0xFF; } - if( ch != this.getChannelsOnSide(d.ordinal()) ) + if( ch != this.getChannelsOnSide( d.ordinal() ) ) { channelsChanged = true; - this.setChannelsOnSide(d.ordinal(), ch); + this.setChannelsOnSide( d.ordinal(), ch ); } } } @@ -427,4 +429,5 @@ public class PartCable extends AEBasePart implements IPartCable { this.connections = connections; } + } diff --git a/src/main/java/appeng/parts/networking/PartQuartzFiber.java b/src/main/java/appeng/parts/networking/PartQuartzFiber.java index 80b81e059..ae32fe5cd 100644 --- a/src/main/java/appeng/parts/networking/PartQuartzFiber.java +++ b/src/main/java/appeng/parts/networking/PartQuartzFiber.java @@ -19,9 +19,7 @@ package appeng.parts.networking; -import java.util.Collections; import java.util.EnumSet; -import java.util.List; import java.util.Set; import net.minecraft.entity.player.EntityPlayer; @@ -38,6 +36,7 @@ import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.energy.IEnergyGridProvider; import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.core.AppEng; @@ -45,13 +44,14 @@ import appeng.items.parts.PartModels; import appeng.me.GridAccessException; import appeng.me.helpers.AENetworkProxy; import appeng.parts.AEBasePart; +import appeng.parts.PartModel; public class PartQuartzFiber extends AEBasePart implements IEnergyGridProvider { @PartModels - private static final List MODELS = Collections.singletonList( new ResourceLocation( AppEng.MOD_ID, "part/quartz_fiber" ) ); + private static final IPartModel MODELS = new PartModel( new ResourceLocation( AppEng.MOD_ID, "part/quartz_fiber" ) ); private final AENetworkProxy outerProxy = new AENetworkProxy( this, "outer", this.getProxy().getMachineRepresentation(), true ); @@ -220,7 +220,7 @@ public class PartQuartzFiber extends AEBasePart implements IEnergyGridProvider } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS; } diff --git a/src/main/java/appeng/parts/p2p/P2PModels.java b/src/main/java/appeng/parts/p2p/P2PModels.java index 774b2df24..b6265c868 100644 --- a/src/main/java/appeng/parts/p2p/P2PModels.java +++ b/src/main/java/appeng/parts/p2p/P2PModels.java @@ -22,11 +22,11 @@ package appeng.parts.p2p; import java.util.ArrayList; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; +import appeng.parts.PartModel; /** @@ -39,19 +39,19 @@ class P2PModels public static final ResourceLocation MODEL_STATUS_ON = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_status_on" ); public static final ResourceLocation MODEL_STATUS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_status_has_channel" ); - private final List modelsOff; - private final List modelsOn; - private final List modelsHasChannel; + private final IPartModel modelsOff; + private final IPartModel modelsOn; + private final IPartModel modelsHasChannel; public P2PModels( String frontModelPath ) { ResourceLocation frontModel = new ResourceLocation( AppEng.MOD_ID, frontModelPath ); - modelsOff = ImmutableList.of( MODEL_STATUS_OFF, frontModel ); - modelsOn = ImmutableList.of( MODEL_STATUS_ON, frontModel ); - modelsHasChannel = ImmutableList.of( MODEL_STATUS_HAS_CHANNEL, frontModel ); + modelsOff = new PartModel( MODEL_STATUS_OFF, frontModel ); + modelsOn = new PartModel( MODEL_STATUS_ON, frontModel ); + modelsHasChannel = new PartModel( MODEL_STATUS_HAS_CHANNEL, frontModel ); } - public List getModel( boolean hasPower, boolean hasChannel ) + public IPartModel getModel( boolean hasPower, boolean hasChannel ) { if( hasPower && hasChannel ) { @@ -67,11 +67,12 @@ class P2PModels } } - public List getModels() { - List result = new ArrayList<>(); - result.addAll( modelsOff ); - result.addAll( modelsOn ); - result.addAll( modelsHasChannel ); + public List getModels() + { + List result = new ArrayList<>(); + result.add( modelsOff ); + result.add( modelsOn ); + result.add( modelsHasChannel ); return result; } diff --git a/src/main/java/appeng/parts/p2p/PartP2PIC2Power.java b/src/main/java/appeng/parts/p2p/PartP2PIC2Power.java index 31b0e3790..a597d8fd2 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PIC2Power.java +++ b/src/main/java/appeng/parts/p2p/PartP2PIC2Power.java @@ -25,7 +25,6 @@ import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import ic2.api.energy.tile.IEnergyAcceptor; import ic2.api.energy.tile.IEnergyEmitter; @@ -33,6 +32,7 @@ import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergySource; import appeng.api.config.PowerUnits; +import appeng.api.parts.IPartModel; import appeng.coremod.annotations.Integration.Interface; import appeng.coremod.annotations.Integration.InterfaceList; import appeng.integration.IntegrationType; @@ -57,7 +57,7 @@ public class PartP2PIC2Power extends PartP2PTunnel implements I private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_ic2" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -255,7 +255,7 @@ public class PartP2PIC2Power extends PartP2PTunnel implements I } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PItems.java b/src/main/java/appeng/parts/p2p/PartP2PItems.java index ccf37fa30..4f82d938c 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PItems.java +++ b/src/main/java/appeng/parts/p2p/PartP2PItems.java @@ -29,7 +29,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import appeng.api.networking.IGridNode; @@ -40,6 +39,7 @@ import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; +import appeng.api.parts.IPartModel; import appeng.core.settings.TickRates; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; @@ -58,7 +58,7 @@ public class PartP2PItems extends PartP2PTunnel implements /* IPip private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_items" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -390,16 +390,8 @@ public class PartP2PItems extends PartP2PTunnel implements /* IPip return null; } - // TODO: BC Integration - // @Override - // @Method( iname = "BuildCraftTransport" ) - // public ConnectOverride overridePipeConnection( PipeType type, ForgeDirection with ) - // { - // return this.side == with && type == PipeType.ITEM ? ConnectOverride.CONNECT : ConnectOverride.DEFAULT; - // } - @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PLight.java b/src/main/java/appeng/parts/p2p/PartP2PLight.java index ebf80afc3..95f831bd8 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PLight.java +++ b/src/main/java/appeng/parts/p2p/PartP2PLight.java @@ -27,7 +27,6 @@ import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import appeng.api.networking.IGridNode; @@ -36,6 +35,7 @@ import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; +import appeng.api.parts.IPartModel; import appeng.core.settings.TickRates; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; @@ -47,7 +47,7 @@ public class PartP2PLight extends PartP2PTunnel implements IGridTi private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_light" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -226,7 +226,7 @@ public class PartP2PLight extends PartP2PTunnel implements IGridTi } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PLiquids.java b/src/main/java/appeng/parts/p2p/PartP2PLiquids.java index 37cb31402..9549d65eb 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PLiquids.java +++ b/src/main/java/appeng/parts/p2p/PartP2PLiquids.java @@ -27,12 +27,12 @@ import java.util.Stack; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import appeng.api.parts.IPartModel; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; @@ -43,7 +43,7 @@ public class PartP2PLiquids extends PartP2PTunnel implements IFl private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_liquids" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -304,7 +304,7 @@ public class PartP2PLiquids extends PartP2PTunnel implements IFl } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PRedstone.java b/src/main/java/appeng/parts/p2p/PartP2PRedstone.java index 0354bf848..b62a98d25 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PRedstone.java +++ b/src/main/java/appeng/parts/p2p/PartP2PRedstone.java @@ -27,7 +27,6 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -35,6 +34,7 @@ import appeng.api.networking.events.MENetworkBootingStatusChange; import appeng.api.networking.events.MENetworkChannelsChanged; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; +import appeng.api.parts.IPartModel; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; import appeng.util.Platform; @@ -46,7 +46,7 @@ public class PartP2PRedstone extends PartP2PTunnel private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_redstone" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -209,7 +209,7 @@ public class PartP2PRedstone extends PartP2PTunnel } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java index 9c84d6d86..8d24cf8e7 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java @@ -29,7 +29,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import appeng.api.AEApi; import appeng.api.exceptions.FailedConnection; @@ -39,6 +38,7 @@ import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.parts.IPartHost; +import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEPartLocation; import appeng.core.AELog; @@ -57,7 +57,7 @@ public class PartP2PTunnelME extends PartP2PTunnel implements I private static final P2PModels MODELS = new P2PModels( "part/p2p/p2p_tunnel_me" ); @PartModels - public static List getModels() + public static List getModels() { return MODELS.getModels(); } @@ -239,14 +239,17 @@ public class PartP2PTunnelME extends PartP2PTunnel implements I { try { - connections.getConnections().put( me.getGridNode(), new TunnelConnection( me, AEApi.instance().createGridConnection( this.outerProxy.getNode(), me.outerProxy.getNode() ) ) ); + connections.getConnections().put( me.getGridNode(), + new TunnelConnection( me, AEApi.instance().createGridConnection( this.outerProxy.getNode(), me.outerProxy.getNode() ) ) ); } catch( final FailedConnection e ) { final TileEntity start = this.getTile(); final TileEntity end = me.getTile(); - AELog.warn( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", start.getPos().getX(), start.getPos().getY(), start.getPos().getZ(), end.getPos().getX(), end.getPos().getY(), end.getPos().getZ() ); + AELog.warn( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", + start.getPos().getX(), start.getPos().getY(), start.getPos().getZ(), end.getPos().getX(), end.getPos().getY(), + end.getPos().getZ() ); // :( } } @@ -259,7 +262,7 @@ public class PartP2PTunnelME extends PartP2PTunnel implements I } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return MODELS.getModel( isPowered(), isActive() ); } diff --git a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java index 1cc348700..4d63db1a7 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java @@ -20,7 +20,6 @@ package appeng.parts.reporting; import java.io.IOException; -import java.util.List; import io.netty.buffer.ByteBuf; @@ -31,7 +30,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; import net.minecraftforge.fml.relauncher.Side; @@ -41,6 +39,7 @@ import appeng.api.implementations.parts.IPartStorageMonitor; import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcherHost; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEMonitor; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEItemStack; @@ -146,7 +145,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements @Override public boolean onPartActivate( final EntityPlayer player, final EnumHand hand, final Vec3d pos ) - { + { if( Platform.isClient() ) { return true; @@ -318,8 +317,8 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements return false; } - protected List selectModel(List off, List on, List hasChannel, - List lockedOff, List lockedOn, List lockedHasChannel) { + protected IPartModel selectModel( IPartModel off, IPartModel on, IPartModel hasChannel, IPartModel lockedOff, IPartModel lockedOn, IPartModel lockedHasChannel ) + { if( isActive() ) { if( isLocked() ) diff --git a/src/main/java/appeng/parts/reporting/AbstractPartReporting.java b/src/main/java/appeng/parts/reporting/AbstractPartReporting.java index bb6568b03..96bb65acd 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartReporting.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartReporting.java @@ -20,7 +20,6 @@ package appeng.parts.reporting; import java.io.IOException; -import java.util.List; import io.netty.buffer.ByteBuf; @@ -29,7 +28,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; @@ -40,6 +38,7 @@ import appeng.api.networking.events.MENetworkBootingStatusChange; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartModel; import appeng.api.util.AEPartLocation; import appeng.me.GridAccessException; import appeng.parts.AEBasePart; @@ -291,7 +290,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM } } - protected List selectModel( List offModels, List onModels, List hasChannelModels ) + protected IPartModel selectModel( IPartModel offModels, IPartModel onModels, IPartModel hasChannelModels ) { if( isActive() ) { diff --git a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java index 15b137d54..886936967 100644 --- a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java +++ b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java @@ -22,8 +22,6 @@ package appeng.parts.reporting; import java.util.Collections; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -34,12 +32,14 @@ import net.minecraft.util.math.Vec3d; import appeng.api.networking.energy.IEnergySource; import appeng.api.networking.security.PlayerSource; +import appeng.api.parts.IPartModel; import appeng.api.storage.IMEMonitor; import appeng.api.storage.data.IAEItemStack; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; +import appeng.parts.PartModel; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.item.AEItemStack; @@ -57,13 +57,13 @@ public class PartConversionMonitor extends AbstractPartMonitor @PartModels public static final ResourceLocation MODEL_LOCKED_ON = new ResourceLocation( AppEng.MOD_ID, "part/conversion_monitor_locked_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); - public static final List MODELS_LOCKED_OFF = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_LOCKED_ON = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_ON ); - public static final List MODELS_LOCKED_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_HAS_CHANNEL ); - + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_LOCKED_OFF = new PartModel( MODEL_BASE, MODEL_LOCKED_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_LOCKED_ON = new PartModel( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_LOCKED_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_HAS_CHANNEL ); + @Reflected public PartConversionMonitor( final ItemStack is ) { @@ -184,10 +184,10 @@ public class PartConversionMonitor extends AbstractPartMonitor } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL, MODELS_LOCKED_OFF, MODELS_LOCKED_ON, MODELS_LOCKED_HAS_CHANNEL ); } - + } diff --git a/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java b/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java index c6541e231..ee3a6d6ac 100644 --- a/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java @@ -21,18 +21,18 @@ package appeng.parts.reporting; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.core.sync.GuiBridge; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; import appeng.tile.inventory.AppEngInternalInventory; @@ -44,9 +44,9 @@ public class PartCraftingTerminal extends AbstractPartTerminal @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/crafting_terminal_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); private final AppEngInternalInventory craftingGrid = new AppEngInternalInventory( this, 9 ); @@ -115,7 +115,7 @@ public class PartCraftingTerminal extends AbstractPartTerminal } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL ); } diff --git a/src/main/java/appeng/parts/reporting/PartDarkPanel.java b/src/main/java/appeng/parts/reporting/PartDarkPanel.java index 00928b14f..c75b7e8f0 100644 --- a/src/main/java/appeng/parts/reporting/PartDarkPanel.java +++ b/src/main/java/appeng/parts/reporting/PartDarkPanel.java @@ -19,16 +19,14 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartDarkPanel extends AbstractPartPanel @@ -39,8 +37,8 @@ public class PartDarkPanel extends AbstractPartPanel @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/monitor_dark_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON ); @Reflected public PartDarkPanel( final ItemStack is ) @@ -55,7 +53,7 @@ public class PartDarkPanel extends AbstractPartPanel } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return isPowered() ? MODELS_ON : MODELS_OFF; } diff --git a/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java b/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java index c5eb48fac..280e1a9a0 100644 --- a/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartInterfaceTerminal.java @@ -19,19 +19,17 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.Vec3d; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.core.sync.GuiBridge; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; import appeng.util.Platform; @@ -43,9 +41,9 @@ public class PartInterfaceTerminal extends AbstractPartDisplay @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/interface_terminal_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); public PartInterfaceTerminal( final ItemStack is ) { @@ -74,7 +72,7 @@ public class PartInterfaceTerminal extends AbstractPartDisplay } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL ); } diff --git a/src/main/java/appeng/parts/reporting/PartPanel.java b/src/main/java/appeng/parts/reporting/PartPanel.java index 6ee453de4..3807c5aed 100644 --- a/src/main/java/appeng/parts/reporting/PartPanel.java +++ b/src/main/java/appeng/parts/reporting/PartPanel.java @@ -19,16 +19,14 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartPanel extends AbstractPartPanel @@ -39,8 +37,8 @@ public class PartPanel extends AbstractPartPanel @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/monitor_bright_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON ); @Reflected public PartPanel( final ItemStack is ) @@ -55,7 +53,7 @@ public class PartPanel extends AbstractPartPanel } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return isPowered() ? MODELS_ON : MODELS_OFF; } diff --git a/src/main/java/appeng/parts/reporting/PartPatternTerminal.java b/src/main/java/appeng/parts/reporting/PartPatternTerminal.java index b7a2d5416..0da4790ba 100644 --- a/src/main/java/appeng/parts/reporting/PartPatternTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartPatternTerminal.java @@ -21,8 +21,6 @@ package appeng.parts.reporting; import java.util.List; -import com.google.common.collect.ImmutableList; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -31,11 +29,13 @@ import net.minecraft.util.ResourceLocation; import appeng.api.implementations.ICraftingPatternItem; import appeng.api.networking.crafting.ICraftingPatternDetails; +import appeng.api.parts.IPartModel; import appeng.api.storage.data.IAEItemStack; import appeng.core.AppEng; import appeng.core.sync.GuiBridge; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.InvOperation; @@ -48,9 +48,9 @@ public class PartPatternTerminal extends AbstractPartTerminal @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/pattern_terminal_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ) ; + public static final IPartModel MODELS_HAS_CHANNEL =new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ) ; private final AppEngInternalInventory crafting = new AppEngInternalInventory( this, 9 ); private final AppEngInternalInventory output = new AppEngInternalInventory( this, 3 ); @@ -214,7 +214,7 @@ public class PartPatternTerminal extends AbstractPartTerminal } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL ); } diff --git a/src/main/java/appeng/parts/reporting/PartSemiDarkPanel.java b/src/main/java/appeng/parts/reporting/PartSemiDarkPanel.java index f47fda283..07daf0380 100644 --- a/src/main/java/appeng/parts/reporting/PartSemiDarkPanel.java +++ b/src/main/java/appeng/parts/reporting/PartSemiDarkPanel.java @@ -19,16 +19,14 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartSemiDarkPanel extends AbstractPartPanel @@ -38,8 +36,8 @@ public class PartSemiDarkPanel extends AbstractPartPanel @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/monitor_medium_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON ); + public static final PartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON ); @Reflected public PartSemiDarkPanel( final ItemStack is ) @@ -56,7 +54,7 @@ public class PartSemiDarkPanel extends AbstractPartPanel } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return isPowered() ? MODELS_ON : MODELS_OFF; } diff --git a/src/main/java/appeng/parts/reporting/PartStorageMonitor.java b/src/main/java/appeng/parts/reporting/PartStorageMonitor.java index 570a45a0e..12b5d2134 100644 --- a/src/main/java/appeng/parts/reporting/PartStorageMonitor.java +++ b/src/main/java/appeng/parts/reporting/PartStorageMonitor.java @@ -19,16 +19,14 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; /** @@ -49,13 +47,13 @@ public class PartStorageMonitor extends AbstractPartMonitor @PartModels public static final ResourceLocation MODEL_LOCKED_ON = new ResourceLocation( AppEng.MOD_ID, "part/storage_monitor_locked_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); - public static final List MODELS_LOCKED_OFF = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_LOCKED_ON = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_ON ); - public static final List MODELS_LOCKED_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_LOCKED_OFF = new PartModel( MODEL_BASE, MODEL_LOCKED_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_LOCKED_ON = new PartModel( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_LOCKED_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_LOCKED_ON, MODEL_STATUS_HAS_CHANNEL ); @Reflected public PartStorageMonitor( final ItemStack is ) @@ -64,7 +62,7 @@ public class PartStorageMonitor extends AbstractPartMonitor } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL, MODELS_LOCKED_OFF, MODELS_LOCKED_ON, MODELS_LOCKED_HAS_CHANNEL ); diff --git a/src/main/java/appeng/parts/reporting/PartTerminal.java b/src/main/java/appeng/parts/reporting/PartTerminal.java index 6ac0256b9..f131a5a3a 100644 --- a/src/main/java/appeng/parts/reporting/PartTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartTerminal.java @@ -19,15 +19,13 @@ package appeng.parts.reporting; -import java.util.List; - -import com.google.common.collect.ImmutableList; - import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import appeng.api.parts.IPartModel; import appeng.core.AppEng; import appeng.items.parts.PartModels; +import appeng.parts.PartModel; public class PartTerminal extends AbstractPartTerminal @@ -38,9 +36,9 @@ public class PartTerminal extends AbstractPartTerminal @PartModels public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/terminal_on" ); - public static final List MODELS_OFF = ImmutableList.of( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); - public static final List MODELS_ON = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); - public static final List MODELS_HAS_CHANNEL = ImmutableList.of( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); + public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); + public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); + public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); public PartTerminal( final ItemStack is ) { @@ -48,7 +46,7 @@ public class PartTerminal extends AbstractPartTerminal } @Override - public List getStaticModels() + public IPartModel getStaticModels() { return selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL ); } diff --git a/src/main/java/appeng/recipes/RecipeHandler.java b/src/main/java/appeng/recipes/RecipeHandler.java index 4657633e2..56b3d0cb1 100644 --- a/src/main/java/appeng/recipes/RecipeHandler.java +++ b/src/main/java/appeng/recipes/RecipeHandler.java @@ -32,6 +32,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; + import javax.annotation.Nonnull; import com.google.common.base.Preconditions; diff --git a/src/main/java/appeng/tile/AEBaseInvTile.java b/src/main/java/appeng/tile/AEBaseInvTile.java index 554ec1b7f..b72dfc33b 100644 --- a/src/main/java/appeng/tile/AEBaseInvTile.java +++ b/src/main/java/appeng/tile/AEBaseInvTile.java @@ -20,6 +20,7 @@ package appeng.tile; import java.util.EnumMap; + import javax.annotation.Nullable; import net.minecraft.block.Block; diff --git a/src/main/java/appeng/tile/networking/TileCableBus.java b/src/main/java/appeng/tile/networking/TileCableBus.java index f10a38eeb..8f410d7c8 100644 --- a/src/main/java/appeng/tile/networking/TileCableBus.java +++ b/src/main/java/appeng/tile/networking/TileCableBus.java @@ -22,6 +22,7 @@ package appeng.tile.networking; import java.io.IOException; import java.util.List; import java.util.Set; + import javax.annotation.Nullable; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/appeng/tile/powersink/AERootPoweredTile.java b/src/main/java/appeng/tile/powersink/AERootPoweredTile.java index 867279e61..bcceda8b9 100644 --- a/src/main/java/appeng/tile/powersink/AERootPoweredTile.java +++ b/src/main/java/appeng/tile/powersink/AERootPoweredTile.java @@ -20,6 +20,7 @@ package appeng.tile.powersink; import java.util.EnumSet; + import javax.annotation.Nullable; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/appeng/tile/storage/TileChest.java b/src/main/java/appeng/tile/storage/TileChest.java index 6dad562fc..ff1def6ec 100644 --- a/src/main/java/appeng/tile/storage/TileChest.java +++ b/src/main/java/appeng/tile/storage/TileChest.java @@ -22,6 +22,7 @@ package appeng.tile.storage; import java.util.ArrayList; import java.util.Collections; import java.util.List; + import javax.annotation.Nullable; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 5bd475267..73c17a2bf 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -19,7 +19,6 @@ package appeng.util; -import java.lang.reflect.Method; import java.security.InvalidParameterException; import java.text.DecimalFormat; import java.util.ArrayList; @@ -30,6 +29,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.WeakHashMap; + import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -76,7 +76,6 @@ import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; -import net.minecraftforge.fml.relauncher.ReflectionHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.oredict.OreDictionary; diff --git a/src/main/java/appeng/util/item/AEItemStack.java b/src/main/java/appeng/util/item/AEItemStack.java index d6f772837..734831b09 100644 --- a/src/main/java/appeng/util/item/AEItemStack.java +++ b/src/main/java/appeng/util/item/AEItemStack.java @@ -26,6 +26,7 @@ import java.io.DataOutputStream; import java.io.IOException; import java.security.InvalidParameterException; import java.util.List; + import javax.annotation.Nullable; import io.netty.buffer.ByteBuf; diff --git a/src/main/resources/assets/appliedenergistics2/models/part/cable_anchor_short.json b/src/main/resources/assets/appliedenergistics2/models/part/cable_anchor_short.json new file mode 100644 index 000000000..35ac06d42 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/cable_anchor_short.json @@ -0,0 +1,21 @@ +{ + "textures": { + "0": "appliedenergistics2:parts/cable_anchor", + "particle": "appliedenergistics2:parts/cable_anchor" + }, + "elements": [ + { + "name": "Element", + "from": [ 7.0, 7.0, 1.0 ], + "to": [ 9.0, 9.0, 6 ], + "faces": { + "north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 2.0 ] }, + "east": { "texture": "#0", "uv": [ 1.0, 0.0, 6.0, 2.0 ] }, + "south": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 2.0 ] }, + "west": { "texture": "#0", "uv": [ 1.0, 0.0, 6.0, 2.0 ] }, + "up": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 6.0 ] }, + "down": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 6.0 ] } + } + } + ] +}