mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 00:38:35 +01:00
Some fixes
This commit is contained in:
parent
5b9f668d14
commit
74c16757f8
5 changed files with 87 additions and 4 deletions
|
@ -25,7 +25,9 @@ import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.ScaledResolution;
|
import net.minecraft.client.gui.ScaledResolution;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.EnumRarity;
|
import net.minecraft.item.EnumRarity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.profiler.Profiler;
|
import net.minecraft.profiler.Profiler;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -68,12 +70,18 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
|
||||||
TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor)world.getTileEntity(pos);
|
TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor)world.getTileEntity(pos);
|
||||||
if(reconstructor != null){
|
if(reconstructor != null){
|
||||||
if(heldItem != null){
|
if(heldItem != null){
|
||||||
if(heldItem.getItem() instanceof ILensItem && reconstructor.getStackInSlot(0) == null){
|
Item item = heldItem.getItem();
|
||||||
|
if(item instanceof ILensItem && reconstructor.getStackInSlot(0) == null){
|
||||||
ItemStack toPut = heldItem.copy();
|
ItemStack toPut = heldItem.copy();
|
||||||
toPut.stackSize = 1;
|
toPut.stackSize = 1;
|
||||||
reconstructor.setInventorySlotContents(0, toPut);
|
reconstructor.setInventorySlotContents(0, toPut);
|
||||||
player.inventory.decrStackSize(player.inventory.currentItem, 1);
|
player.inventory.decrStackSize(player.inventory.currentItem, 1);
|
||||||
}
|
}
|
||||||
|
//Shush, don't tell anyone!
|
||||||
|
else if(item == Items.RECORD_11){
|
||||||
|
reconstructor.counter++;
|
||||||
|
reconstructor.markDirty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(reconstructor.getStackInSlot(0) != null){
|
if(reconstructor.getStackInSlot(0) != null){
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class LensColor extends Lens{
|
||||||
InitBlocks.blockColoredLampOn
|
InitBlocks.blockColoredLampOn
|
||||||
};
|
};
|
||||||
//Thanks to xdjackiexd for this, as I couldn't be bothered
|
//Thanks to xdjackiexd for this, as I couldn't be bothered
|
||||||
private static final float[][] possibleColorLensColors = {
|
private static final float[][] POSSIBLE_COLORS = {
|
||||||
{158F, 43F, 39F}, //Red
|
{158F, 43F, 39F}, //Red
|
||||||
{234F, 126F, 53F}, //Orange
|
{234F, 126F, 53F}, //Orange
|
||||||
{194F, 181F, 28F}, //Yellow
|
{194F, 181F, 28F}, //Yellow
|
||||||
|
@ -99,7 +99,7 @@ public class LensColor extends Lens{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float[] getColor(){
|
public float[] getColor(){
|
||||||
float[] colors = possibleColorLensColors[Util.RANDOM.nextInt(possibleColorLensColors.length)];
|
float[] colors = POSSIBLE_COLORS[Util.RANDOM.nextInt(POSSIBLE_COLORS.length)];
|
||||||
return new float[]{colors[0]/255F, colors[1]/255F, colors[2]/255F};
|
return new float[]{colors[0]/255F, colors[1]/255F, colors[2]/255F};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package de.ellpeck.actuallyadditions.mod.items.lens;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
|
||||||
|
import de.ellpeck.actuallyadditions.api.lens.Lens;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.PosUtil;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.Util;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class LensDisruption extends Lens{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean invoke(IBlockState hitState, BlockPos hitBlock, IAtomicReconstructor tile){
|
||||||
|
int energyUse = 150000;
|
||||||
|
if(tile.getEnergy() >= energyUse && hitBlock != null && !PosUtil.getBlock(hitBlock, tile.getWorldObject()).isAir(hitState, tile.getWorldObject(), hitBlock)){
|
||||||
|
int range = 2;
|
||||||
|
ArrayList<EntityItem> items = (ArrayList<EntityItem>)tile.getWorldObject().getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(hitBlock.getX()-range, hitBlock.getY()-range, hitBlock.getZ()-range, hitBlock.getX()+range, hitBlock.getY()+range, hitBlock.getZ()+range));
|
||||||
|
for(EntityItem item : items){
|
||||||
|
ItemStack stack = item.getEntityItem();
|
||||||
|
if(!item.isDead && stack != null){
|
||||||
|
if(!stack.hasTagCompound() || !stack.getTagCompound().getBoolean(ModUtil.MOD_ID+"DisruptedAlready")){
|
||||||
|
ItemStack newStack = null;
|
||||||
|
|
||||||
|
while(newStack == null || newStack.getItem() == null){
|
||||||
|
if(Util.RANDOM.nextBoolean()){
|
||||||
|
newStack = new ItemStack(Item.REGISTRY.getRandomObject(Util.RANDOM));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
newStack = new ItemStack(Block.REGISTRY.getRandomObject(Util.RANDOM));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newStack.stackSize = stack.stackSize;
|
||||||
|
|
||||||
|
if(!newStack.hasTagCompound()){
|
||||||
|
newStack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
newStack.getTagCompound().setBoolean(ModUtil.MOD_ID+"DisruptedAlready", true);
|
||||||
|
|
||||||
|
item.setDead();
|
||||||
|
|
||||||
|
EntityItem newItem = new EntityItem(tile.getWorldObject(), item.posX, item.posY, item.posZ, newStack);
|
||||||
|
tile.getWorldObject().spawnEntityInWorld(newItem);
|
||||||
|
|
||||||
|
tile.extractEnergy(energyUse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float[] getColor(){
|
||||||
|
return new float[]{246F/255F, 255F/255F, 183F/255F};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDistance(){
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,4 +18,5 @@ public class Lenses{
|
||||||
public static final Lens LENS_DETONATION = new LensDetonation();
|
public static final Lens LENS_DETONATION = new LensDetonation();
|
||||||
public static final Lens LENS_DEATH = new LensDeath();
|
public static final Lens LENS_DEATH = new LensDeath();
|
||||||
public static final Lens LENS_COLOR = new LensColor();
|
public static final Lens LENS_COLOR = new LensColor();
|
||||||
|
public static final Lens LENS_DISRUPTION = new LensDisruption();
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
private int currentTime;
|
private int currentTime;
|
||||||
private boolean activateOnceWithSignal;
|
private boolean activateOnceWithSignal;
|
||||||
private int oldEnergy;
|
private int oldEnergy;
|
||||||
|
public int counter;
|
||||||
|
|
||||||
public TileEntityAtomicReconstructor(){
|
public TileEntityAtomicReconstructor(){
|
||||||
super(1, "reconstructor");
|
super(1, "reconstructor");
|
||||||
|
@ -48,6 +49,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
|
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
|
||||||
super.writeSyncableNBT(compound, sync);
|
super.writeSyncableNBT(compound, sync);
|
||||||
compound.setInteger("CurrentTime", this.currentTime);
|
compound.setInteger("CurrentTime", this.currentTime);
|
||||||
|
compound.setInteger("Counter", this.counter);
|
||||||
this.storage.writeToNBT(compound);
|
this.storage.writeToNBT(compound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +62,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
|
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
|
||||||
super.readSyncableNBT(compound, sync);
|
super.readSyncableNBT(compound, sync);
|
||||||
this.currentTime = compound.getInteger("CurrentTime");
|
this.currentTime = compound.getInteger("CurrentTime");
|
||||||
|
this.counter = compound.getInteger("Counter");
|
||||||
this.storage.readFromNBT(compound);
|
this.storage.readFromNBT(compound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +119,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
return ((ILensItem)this.slots[0].getItem()).getLens();
|
return ((ILensItem)this.slots[0].getItem()).getLens();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Lenses.LENS_NONE;
|
return this.counter >= 500 ? Lenses.LENS_DISRUPTION : Lenses.LENS_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void shootLaser(int endX, int endY, int endZ, Lens currentLens){
|
private void shootLaser(int endX, int endY, int endZ, Lens currentLens){
|
||||||
|
|
Loading…
Reference in a new issue