Several mimic fixes, with actually cleaned up commit history. (#1379)

* Reimplemented a lot of mimic logic and did a first run of changing how mimics store their states.

* Finished removing all metadata calls for blocks replaced by mimics.

* Update EntityMimic.java

* Update ItemBlockMimic.java

* Update TileMimic.java

* How did I even replace a semicolon with a slash.

* Changed all tabs to 4 spaces. Changed Serializer to StateUtil

* Fixed spacing again, hopefully for the last time
This commit is contained in:
KohaiKhaos 2018-08-07 18:28:55 -05:00 committed by Nick Ignoffo
parent 7954d04421
commit ebfd8ce9a3
6 changed files with 238 additions and 52 deletions

View file

@ -4,6 +4,7 @@ import WayofTime.bloodmagic.block.BlockMimic;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.entity.ai.EntityAIMimicReform;
import WayofTime.bloodmagic.tile.TileMimic;
import WayofTime.bloodmagic.util.StateUtil;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
@ -12,6 +13,7 @@ import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.*;
import net.minecraft.entity.monster.EntityIronGolem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.MobEffects;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
@ -39,6 +41,7 @@ public class EntityMimic extends EntityDemonBase {
public boolean dropItemsOnBreak = true;
public NBTTagCompound tileTag = new NBTTagCompound();
public int metaOfReplacedBlock = 0;
public IBlockState stateOfReplacedBlock = Blocks.AIR.getDefaultState();
public int playerCheckRadius = 5;
public EntityMimic(World worldIn) {
@ -67,6 +70,7 @@ public class EntityMimic extends EntityDemonBase {
tag.setTag("tileTag", tileTag);
tag.setInteger("metaOfReplacedBlock", metaOfReplacedBlock);
tag.setInteger("playerCheckRadius", playerCheckRadius);
tag.setString("stateOfReplacedBlock", stateOfReplacedBlock.toString());
}
@Override
@ -77,6 +81,7 @@ public class EntityMimic extends EntityDemonBase {
tileTag = tag.getCompoundTag("tileTag");
metaOfReplacedBlock = tag.getInteger("metaOfReplacedBlock");
playerCheckRadius = tag.getInteger("playerCheckRadius");
stateOfReplacedBlock = StateUtil.parseState(tag.getString("stateOfReplacedBlock"));
}
public ItemStack getMimicItemStack() {
@ -88,7 +93,7 @@ public class EntityMimic extends EntityDemonBase {
}
public boolean spawnHeldBlockOnDeath(World world, BlockPos pos) {
return world.isAirBlock(pos) && TileMimic.replaceMimicWithBlockActual(world, pos, getMimicItemStack(), tileTag, metaOfReplacedBlock);
return world.isAirBlock(pos) && TileMimic.replaceMimicWithBlockActual(world, pos, getMimicItemStack(), tileTag, stateOfReplacedBlock);
}
public boolean spawnMimicBlockAtPosition(World world, BlockPos pos) {
@ -98,7 +103,7 @@ public class EntityMimic extends EntityDemonBase {
TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileMimic) {
TileMimic mimic = (TileMimic) tile;
mimic.metaOfReplacedBlock = metaOfReplacedBlock;
mimic.setReplacedState(this.stateOfReplacedBlock);
mimic.tileTag = tileTag;
mimic.setInventorySlotContents(0, getMimicItemStack());
mimic.dropItemsOnBreak = dropItemsOnBreak;
@ -111,11 +116,11 @@ public class EntityMimic extends EntityDemonBase {
return false;
}
public void initializeMimic(ItemStack heldStack, NBTTagCompound tileTag, boolean dropItemsOnBreak, int metaOfReplacedBlock, int playerCheckRadius, BlockPos homePosition) {
public void initializeMimic(ItemStack heldStack, NBTTagCompound tileTag, boolean dropItemsOnBreak, IBlockState stateOfReplacedBlock, int playerCheckRadius, BlockPos homePosition) {
this.setMimicItemStack(heldStack);
this.tileTag = tileTag;
this.dropItemsOnBreak = dropItemsOnBreak;
this.metaOfReplacedBlock = metaOfReplacedBlock;
this.stateOfReplacedBlock = stateOfReplacedBlock;
this.playerCheckRadius = playerCheckRadius;
this.setHomePosAndDistance(homePosition, 2); //TODO: Save this.
}
@ -319,4 +324,4 @@ public class EntityMimic extends EntityDemonBase {
super(spider, classTarget, true);
}
}
}
}