aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-04-02 15:39:02 +1000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-04-02 15:39:02 +1000
commitf6a126e4467c5bf7ab72249c7fc55df3bc574d94 (patch)
tree3b6d02bdb62185f56360d4a1ff93ce2cd1bcdbe3
parente8e899fb8ec40fc2a8094e3a1f65527af23b11e4 (diff)
downloadGT5-Unofficial-f6a126e4467c5bf7ab72249c7fc55df3bc574d94.tar.gz
GT5-Unofficial-f6a126e4467c5bf7ab72249c7fc55df3bc574d94.tar.bz2
GT5-Unofficial-f6a126e4467c5bf7ab72249c7fc55df3bc574d94.zip
+ Added TexturePackages.
$ More work on redstone systems.
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java55
-rw-r--r--src/Java/gtPlusPlus/core/block/ModBlocks.java3
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java25
-rw-r--r--src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java113
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java67
-rw-r--r--src/resources/assets/miscutils/textures/blocks/redstone/redstone_meter/top.pngbin0 -> 822 bytes
6 files changed, 195 insertions, 68 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java b/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java
new file mode 100644
index 0000000000..e610f8fdf0
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/objects/minecraft/TexturePackage.java
@@ -0,0 +1,55 @@
+package gtPlusPlus.api.objects.minecraft;
+
+import java.util.LinkedHashMap;
+import java.util.Set;
+
+import gtPlusPlus.api.objects.data.AutoMap;
+import net.minecraft.util.IIcon;
+
+public class TexturePackage {
+
+ private AutoMap<IIcon> mAnimationArray = new AutoMap<IIcon>();
+
+ public IIcon getFrame(int aFrame) {
+ if (aFrame < 0 || aFrame >= mAnimationArray.size()) {
+ return mAnimationArray.get(0);
+ }
+ return mAnimationArray.get(aFrame);
+ }
+
+ public boolean addFrame(IIcon aFrame) {
+ if (aFrame != null) {
+ return mAnimationArray.add(aFrame);
+ }
+ return false;
+ }
+
+ public boolean addFrames(AutoMap<IIcon> aFrames) {
+ for (IIcon h : aFrames) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean addFrames(LinkedHashMap<?, IIcon> aFrames) {
+ for (IIcon h : aFrames.values()) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean addFrames(Set<IIcon> aFrames) {
+ for (IIcon h : aFrames) {
+ if (!addFrame(h)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java
index 2b04356f52..8471c13351 100644
--- a/src/Java/gtPlusPlus/core/block/ModBlocks.java
+++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java
@@ -11,6 +11,7 @@ import gtPlusPlus.core.block.general.LightGlass;
import gtPlusPlus.core.block.general.MiningExplosives;
import gtPlusPlus.core.block.general.PlayerDoors;
import gtPlusPlus.core.block.general.antigrief.BlockWitherProof;
+import gtPlusPlus.core.block.general.redstone.BlockGenericRedstoneDetector;
import gtPlusPlus.core.block.machine.CircuitProgrammer;
import gtPlusPlus.core.block.machine.DecayablesChest;
import gtPlusPlus.core.block.machine.FishTrap;
@@ -140,6 +141,8 @@ public final class ModBlocks {
blockCustomJukebox = new Machine_SuperJukebox();
blockPooCollector = new Machine_PooCollector();
+
+ new BlockGenericRedstoneDetector();
}
diff --git a/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java
index 14dac32b63..3197d149c8 100644
--- a/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java
+++ b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java
@@ -53,13 +53,18 @@ public abstract class BlockGenericRedstone extends BlockContainer {
* A map of the textures used for this blocks. The key is the meta, then each internal map holds textures tied to each forge direction. Do not use unknown direction.
* @return
*/
- public abstract HashMap<Integer, HashMap<ForgeDirection, IIcon>> getTextureArray();
+ public HashMap<Integer, HashMap<ForgeDirection, IIcon>> getTextureArray() {
+ return mTextures;
+ }
+
+ public abstract void generateTextureArray(final IIconRegister iicon);
@Override
@SideOnly(Side.CLIENT)
- public final void registerBlockIcons(final IIconRegister p_149651_1_) {
- this.blockIcon = p_149651_1_.registerIcon("redstone_block");
+ public final void registerBlockIcons(final IIconRegister iicon) {
+ generateTextureArray(iicon);
+ this.blockIcon = iicon.registerIcon("redstone_block");
}
@@ -305,8 +310,18 @@ public abstract class BlockGenericRedstone extends BlockContainer {
* Ticks the block if it's been scheduled
*/
public void updateTick(World aWorld, int aX, int aY, int aZ, Random p_149674_5_) {
- if (!aWorld.isRemote && !aWorld.isBlockIndirectlyGettingPowered(aX, aY, aZ)) {
- // aWorld.setBlock(aX, aY, aZ, Blocks.redstone_lamp, 0, 2);
+ TileEntityRedstoneHandler aTile = getTileEntity(aWorld, aX, aY, aZ);
+ // Client side handling
+ if (aTile != null) {
+ this.setLightLevel(aTile.getLightBrightness());
+ }
+ // Only continue on server
+ if (aWorld.isRemote) {
+ return;
+ }
+ if (aTile != null) {
+ if (aTile.isGettingIndirectlyPowered()) {
+ }
}
}
diff --git a/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java
index 3e7816f83a..7728b29a7c 100644
--- a/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java
+++ b/src/Java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java
@@ -1,17 +1,21 @@
package gtPlusPlus.core.block.general.redstone;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Random;
+import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.tileentities.general.redstone.TileEntityRedstoneHandler;
-import net.minecraft.block.Block;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.IBlockAccess;
+import net.minecraft.util.IIcon;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
public class BlockGenericRedstoneDetector extends BlockGenericRedstone {
@@ -32,81 +36,86 @@ public class BlockGenericRedstoneDetector extends BlockGenericRedstone {
}
@Override
- public void registerBlockIcons(IIconRegister p_149651_1_) {
- // TODO Auto-generated method stub
- super.registerBlockIcons(p_149651_1_);
- }
-
- @Override
- public int getLightValue() {
- // TODO Auto-generated method stub
- return super.getLightValue();
+ public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List aList) {
+ aList.add(ItemUtils.getSimpleStack(this));
}
- @Override
- public int isProvidingWeakPower(IBlockAccess p_149709_1_, int p_149709_2_, int p_149709_3_, int p_149709_4_,
- int p_149709_5_) {
- return 0;
- }
@Override
- public boolean canProvidePower() {
- return false;
- }
-
- @Override
- public int isProvidingStrongPower(IBlockAccess p_149748_1_, int p_149748_2_, int p_149748_3_, int p_149748_4_,
- int p_149748_5_) {
- return 0;
+ public void updateTick(World aWorld, int aX, int aY, int aZ, Random aRand) {
+ super.updateTick(aWorld, aX, aY, aZ, aRand);
}
@Override
- public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) {
+ public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
// TODO Auto-generated method stub
- super.getSubBlocks(p_149666_1_, p_149666_2_, p_149666_3_);
+ return ItemUtils.getSimpleStack(this).getItem();
}
@Override
- public int getLightValue(IBlockAccess world, int x, int y, int z) {
+ public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) {
// TODO Auto-generated method stub
- return super.getLightValue(world, x, y, z);
+ return ItemUtils.getSimpleStack(this).getItem();
}
@Override
- public boolean shouldCheckWeakPower(IBlockAccess world, int x, int y, int z, int side) {
- // TODO Auto-generated method stub
- return super.shouldCheckWeakPower(world, x, y, z, side);
- }
+ protected ItemStack createStackedBlock(int p_149644_1_) {
+ return ItemUtils.simpleMetaStack(this, p_149644_1_, 1);
+ }
+
+ public void generateTextureArray(final IIconRegister iicon) {
+ HashMap<Integer, HashMap<ForgeDirection, IIcon>> aTextures = new HashMap<Integer, HashMap<ForgeDirection, IIcon>>();
- @Override
- public void updateTick(World aWorld, int aX, int aY, int aZ, Random aRand) {
- TileEntity aThisTile = aWorld.getTileEntity(aX, aY, aZ);
- if (aThisTile != null) {
- TileEntityRedstoneHandler aRedstoneTile = (TileEntityRedstoneHandler) aThisTile;
- aRedstoneTile.setCurrentTextureArray(null);
+ //New Block for Each Meta
+ int aMeta = 0;
+ {
+ HashMap<ForgeDirection, IIcon> aTempMap = new HashMap<ForgeDirection, IIcon>();
+ aTempMap.put(ForgeDirection.UP, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTempMap.put(ForgeDirection.DOWN, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTempMap.put(ForgeDirection.NORTH, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTempMap.put(ForgeDirection.SOUTH, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTempMap.put(ForgeDirection.EAST, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTempMap.put(ForgeDirection.WEST, iicon.registerIcon(CORE.MODID + ":" + "redstone/redstone_meter/" + "top"));
+ aTextures.put(aMeta++, aTempMap);
}
-
- super.updateTick(aWorld, aX, aY, aZ, aRand);
}
@Override
- public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) {
- // TODO Auto-generated method stub
- return null;
+ public IIcon getIcon(int side, int meta) {
+ HashMap<ForgeDirection, IIcon> aTemp = getTextureArray().get(meta);
+ if (aTemp != null) {
+ IIcon aSide = aTemp.get(ForgeDirection.getOrientation(side));
+ if (aSide != null) {
+ return aSide;
+ }
+ else {
+ //Smart calculate missing sides
+ if (side <= 1) {
+ for (int ss = 0; ss < 2; ss++) {
+ aSide = aTemp.get(ForgeDirection.getOrientation(side));
+ if (aSide != null) {
+ return aSide;
+ }
+ }
+ }
+ for (int ss = 2; ss < 6; ss++) {
+ aSide = aTemp.get(ForgeDirection.getOrientation(side));
+ if (aSide != null) {
+ return aSide;
+ }
+ }
+ }
+ }
+ return blockIcon;
}
@Override
- protected ItemStack createStackedBlock(int p_149644_1_) {
- // TODO Auto-generated method stub
- return null;
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
+ ArrayList<ItemStack> aDrops = new ArrayList<ItemStack>();
+ aDrops.add(ItemUtils.getSimpleStack(this));
+ return aDrops;
}
}
diff --git a/src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java b/src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java
index fbd5f4280d..163c4453b6 100644
--- a/src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java
+++ b/src/Java/gtPlusPlus/core/tileentities/general/redstone/TileEntityRedstoneHandler.java
@@ -17,7 +17,9 @@ public class TileEntityRedstoneHandler extends TileEntity implements IToolable {
private BlockPos mTilePos;
private boolean mRequiresUpdate = false;
private Long mStartTime;
- private int mLightValue = 0;
+
+ public boolean mLightMode = false;
+ public int mLightValue = 0;
/**
* Sets the Redstone Handler Type.
@@ -30,13 +32,26 @@ public class TileEntityRedstoneHandler extends TileEntity implements IToolable {
public Block getBlock() {
return mTilePos != null ? mTilePos.getBlockAtPos() : Blocks.redstone_block;
}
+
+ public final boolean isLight() {
+ return mLightMode;
+ }
+ public final int getLightBrightness() {
+ if (!isLight()) {
+ return 0;
+ }
+ else {
+ return mLightValue;
+ }
+ }
@Override
public void readFromNBT(NBTTagCompound aNBT) {
mStartTime = aNBT.getLong("mStartTime");
mInvName = aNBT.getString("mInvName");
mLightValue = aNBT.getInteger("mLightValue");
+ mLightMode = aNBT.getBoolean("mLightMode");
super.readFromNBT(aNBT);
}
@@ -46,6 +61,7 @@ public class TileEntityRedstoneHandler extends TileEntity implements IToolable {
aNBT.setLong("mStartTime", mStartTime);
aNBT.setString("mInvName", mInvName);
aNBT.setInteger("mLightValue", mLightValue);
+ aNBT.setBoolean("mLightMode", mLightMode);
super.writeToNBT(aNBT);
}
@@ -250,6 +266,45 @@ public class TileEntityRedstoneHandler extends TileEntity implements IToolable {
}
+ public boolean providesWeakPower() {
+ return isProvidingPower();
+ }
+
+ public boolean providesStrongPower() {
+ return isProvidingPower();
+ }
+
+
+ /**
+ * Returns the amount of week power this block is providing to a side.
+ * @param world
+ * @param x
+ * @param y
+ * @param z
+ * @param side
+ * @return
+ */
+ public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) {
+ if (!providesWeakPower()) {
+ return 0;
+ }
+ return getOutputPowerLevel();
+ }
+ /**
+ * Returns the amount of strong power this block is providing to a side.
+ * @param world
+ * @param x
+ * @param y
+ * @param z
+ * @param side
+ * @return
+ */
+ public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) {
+ if (!providesStrongPower()) {
+ return 0;
+ }
+ return getOutputPowerLevel();
+ }
@@ -379,16 +434,6 @@ public class TileEntityRedstoneHandler extends TileEntity implements IToolable {
public boolean hasCustomInventoryName() {
return (this.mInvName != null) && !this.mInvName.equals("");
}
-
- public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) {
- // TODO Auto-generated method stub
- return 0;
- }
diff --git a/src/resources/assets/miscutils/textures/blocks/redstone/redstone_meter/top.png b/src/resources/assets/miscutils/textures/blocks/redstone/redstone_meter/top.png
new file mode 100644
index 0000000000..ba45c43891
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/blocks/redstone/redstone_meter/top.png
Binary files differ