diff --git a/MatterOverdriveLogo.png b/MatterOverdriveLogo.png index 969a2561..af3627b6 100644 Binary files a/MatterOverdriveLogo.png and b/MatterOverdriveLogo.png differ diff --git a/src/main/java/com/MO/MatterOverdrive/container/ContainerReplicator.java b/src/main/java/com/MO/MatterOverdrive/container/ContainerReplicator.java index 796c0a52..5cead37d 100644 --- a/src/main/java/com/MO/MatterOverdrive/container/ContainerReplicator.java +++ b/src/main/java/com/MO/MatterOverdrive/container/ContainerReplicator.java @@ -1,5 +1,6 @@ package com.MO.MatterOverdrive.container; +import com.MO.MatterOverdrive.container.slot.SlotShielding; import com.MO.MatterOverdrive.util.MOContainerHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -32,7 +33,8 @@ public ContainerReplicator(InventoryPlayer inventory,TileEntityMachineReplicator this.addSlotToContainer(new SlotRemoveOnly(tileentity,replicator.OUTPUT_SLOT_ID,70,52)); this.addSlotToContainer(new SlotRemoveOnly(tileentity,replicator.SECOUND_OUTPUT_SLOT_ID,96,52)); this.addSlotToContainer(new SlotDatabase(tileentity,replicator.DATABASE_SLOT_ID,8,52)); - this.addSlotToContainer(new SlotEnergy(tileentity,this.replicator.getEnergySlotID(),8,79)); + this.addSlotToContainer(new SlotShielding(tileentity,this.replicator.SHIELDING_SLOT_ID,8,79)); + this.addSlotToContainer(new SlotEnergy(tileentity,this.replicator.getEnergySlotID(),8,106)); MOContainerHelper.AddPlayerSlots(inventory,this,45,92); } diff --git a/src/main/java/com/MO/MatterOverdrive/container/slot/SlotShielding.java b/src/main/java/com/MO/MatterOverdrive/container/slot/SlotShielding.java new file mode 100644 index 00000000..6c293084 --- /dev/null +++ b/src/main/java/com/MO/MatterOverdrive/container/slot/SlotShielding.java @@ -0,0 +1,29 @@ +package com.MO.MatterOverdrive.container.slot; + +import com.MO.MatterOverdrive.init.MatterOverdriveItems; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/** + * Created by Simeon on 4/6/2015. + */ +public class SlotShielding extends Slot +{ + public SlotShielding(IInventory inventory, int index, int x, int y) { + + super(inventory, index, x, y); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return stack.getItem() == MatterOverdriveItems.tritanium_plate; + } + + @Override + public int getSlotStackLimit() + { + return 5; + } +} diff --git a/src/main/java/com/MO/MatterOverdrive/data/inventory/ShieldingSlot.java b/src/main/java/com/MO/MatterOverdrive/data/inventory/ShieldingSlot.java new file mode 100644 index 00000000..702cb7a9 --- /dev/null +++ b/src/main/java/com/MO/MatterOverdrive/data/inventory/ShieldingSlot.java @@ -0,0 +1,39 @@ +package com.MO.MatterOverdrive.data.inventory; + +import com.MO.MatterOverdrive.Reference; +import com.MO.MatterOverdrive.container.slot.SlotShielding; +import com.MO.MatterOverdrive.init.MatterOverdriveItems; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * Created by Simeon on 4/6/2015. + */ +public class ShieldingSlot extends Slot +{ + protected static final ResourceLocation Icon = new ResourceLocation(Reference.PATH_GUI + "items/shielding.png"); + + @Override + public boolean isValidForSlot(ItemStack itemStack) + { + if(this.getItem() != null && this.getItem().stackSize < 4) { + + if (itemStack != null && itemStack.getItem() != null) { + return itemStack.getItem() == MatterOverdriveItems.tritanium_plate; + } + } + return false; + } + + @Override + public ResourceLocation getTexture() + { + return Icon; + } + + @Override + boolean isEqual(net.minecraft.inventory.Slot slot) + { + return slot instanceof SlotShielding; + } +} diff --git a/src/main/java/com/MO/MatterOverdrive/gui/GuiReplicator.java b/src/main/java/com/MO/MatterOverdrive/gui/GuiReplicator.java index a0a29dbe..84845b9b 100644 --- a/src/main/java/com/MO/MatterOverdrive/gui/GuiReplicator.java +++ b/src/main/java/com/MO/MatterOverdrive/gui/GuiReplicator.java @@ -50,6 +50,7 @@ public GuiReplicator(InventoryPlayer inventoryPlayer,TileEntityMachineReplicator playerSlots = new ElementPlayerSlots(this,44,91); slotsList = new ElementSlotsList(this,5,49,new ArrayList(0),0); slotsList.AddSlot(replicator.getInventory().getSlot(replicator.DATABASE_SLOT_ID)); + slotsList.AddSlot(replicator.getInventory().getSlot(replicator.SHIELDING_SLOT_ID)); slotsList.AddSlot(replicator.getInventory().getSlot(replicator.getEnergySlotID())); outputSlot = new ElementSlot(this,true,this.inventorySlots.getSlot(replicator.OUTPUT_SLOT_ID)); seccoundOutputSlot = new ElementSlot(this,true,this.inventorySlots.getSlot(replicator.SECOUND_OUTPUT_SLOT_ID)); diff --git a/src/main/java/com/MO/MatterOverdrive/tile/TileEntityMachineReplicator.java b/src/main/java/com/MO/MatterOverdrive/tile/TileEntityMachineReplicator.java index 37308e95..f56b8bbb 100644 --- a/src/main/java/com/MO/MatterOverdrive/tile/TileEntityMachineReplicator.java +++ b/src/main/java/com/MO/MatterOverdrive/tile/TileEntityMachineReplicator.java @@ -7,6 +7,8 @@ import com.MO.MatterOverdrive.data.Inventory; import com.MO.MatterOverdrive.data.inventory.DatabaseSlot; import com.MO.MatterOverdrive.data.inventory.RemoveOnlySlot; +import com.MO.MatterOverdrive.data.inventory.ShieldingSlot; +import com.MO.MatterOverdrive.data.inventory.Slot; import com.MO.MatterOverdrive.fx.ReplicatorParticle; import com.MO.MatterOverdrive.handler.SoundHandler; import com.MO.MatterOverdrive.init.MatterOverdriveItems; @@ -38,6 +40,7 @@ public class TileEntityMachineReplicator extends MOTileEntityMachineMatter imple public int OUTPUT_SLOT_ID = 0; public int SECOUND_OUTPUT_SLOT_ID = 1; public int DATABASE_SLOT_ID = 2; + public int SHIELDING_SLOT_ID = 3; public static final int REPLICATE_SPEED_PER_MATTER = 120; public static final int REPLICATE_ENERGY_PER_TICK = 160; @@ -52,7 +55,7 @@ public class TileEntityMachineReplicator extends MOTileEntityMachineMatter imple public TileEntityMachineReplicator() { - super(3); + super(4); this.energyStorage.setCapacity(ENERGY_STORAGE); this.energyStorage.setMaxExtract(ENERGY_STORAGE); this.energyStorage.setMaxReceive(ENERGY_STORAGE); @@ -67,6 +70,7 @@ protected void RegisterSlots(Inventory inventory) OUTPUT_SLOT_ID = inventory.AddSlot(new RemoveOnlySlot()); SECOUND_OUTPUT_SLOT_ID = inventory.AddSlot(new RemoveOnlySlot()); DATABASE_SLOT_ID = inventory.AddSlot(new DatabaseSlot()); + SHIELDING_SLOT_ID = inventory.AddSlot(new ShieldingSlot()); } @Override @@ -279,7 +283,13 @@ public boolean isActive() return this.isReplicating() && energyStorage.getEnergyStored() >= REPLICATE_ENERGY_PER_TICK; } - public void manageRadiation() { + public void manageRadiation() + { + int shielding = getShielding(); + + if(shielding >= 5) + return; //has full shielding + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(xCoord - RADIATION_RANGE,yCoord - RADIATION_RANGE,zCoord - RADIATION_RANGE,xCoord + RADIATION_RANGE,yCoord + RADIATION_RANGE,zCoord + RADIATION_RANGE); List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class,bb); for (Object e : entities) @@ -291,7 +301,7 @@ public void manageRadiation() { double distance = l.getDistance(xCoord,yCoord,zCoord) / RADIATION_RANGE; distance = net.minecraft.util.MathHelper.clamp_double(distance,0,1); distance = 1.0 - distance; - distance *= 5; + distance *= 5 - shielding; int value = 0; PotionEffect[] effects = new PotionEffect[4]; @@ -312,7 +322,16 @@ public void manageRadiation() { } } } - + + private int getShielding() + { + if(getStackInSlot(SHIELDING_SLOT_ID) != null && getStackInSlot(SHIELDING_SLOT_ID).getItem() == MatterOverdriveItems.tritanium_plate) + { + return getStackInSlot(SHIELDING_SLOT_ID).stackSize; + } + return 0; + } + private boolean canReplicateIntoOutput() { if(getStackInSlot(OUTPUT_SLOT_ID) == null) diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 6780e5c2..f665a126 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,13 +3,13 @@ "modid": "mo", "name": "Matter Overdrive", "description": "A mod that dwells within matter, energy.", - "version": "0.1", + "version": "0.1.1", "mcversion": "1.7.10", - "url": "", + "url": "http://simeon.co.vu/Mods/MatterOverdrive/", "updateUrl": "", "authorList": ["Simeon Radivoev"], "credits": "", - "logoFile": "", + "logoFile": "/MatterOverdriveLogo.png", "screenshots": [], "dependencies": [] }