Improved Monolith Jitter #130

Merged
SenseiKiwi merged 4 commits from master into master 2014-01-21 08:14:41 +00:00
7 changed files with 20 additions and 10 deletions
Showing only changes of commit 8cba2d9f6c - Show all commits

View File

@@ -424,9 +424,10 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn
} }
@Override @Override
public void initDoorTE(World world, int x, int y, int z) public TileEntity initDoorTE(World world, int x, int y, int z)
{ {
TileEntity te = this.createNewTileEntity(world); TileEntity te = this.createNewTileEntity(world);
world.setBlockTileEntity(x, y, z, te); world.setBlockTileEntity(x, y, z, te);
return te;
} }
} }

View File

@@ -1,6 +1,7 @@
package StevenDimDoors.mod_pocketDim.blocks; package StevenDimDoors.mod_pocketDim.blocks;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
public interface IDimDoor public interface IDimDoor
@@ -11,5 +12,5 @@ public interface IDimDoor
public int getDrops(); public int getDrops();
public void initDoorTE(World world, int x, int y, int z); public TileEntity initDoorTE(World world, int x, int y, int z);
} }

View File

@@ -120,9 +120,10 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit
} }
@Override @Override
public void initDoorTE(World world, int x, int y, int z) public TileEntity initDoorTE(World world, int x, int y, int z)
{ {
TileEntity te = this.createNewTileEntity(world); TileEntity te = this.createNewTileEntity(world);
world.setBlockTileEntity(x, y, z, te); world.setBlockTileEntity(x, y, z, te);
return te;
} }
} }

View File

@@ -25,6 +25,7 @@ import net.minecraftforge.common.network.packet.DimensionRegisterPacket;
import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.DDProperties;
import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.blocks.BaseDimDoor;
import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper;
import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; import StevenDimDoors.mod_pocketDim.items.BaseItemDoor;
import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor;
@@ -598,9 +599,11 @@ public class DDTeleporter
return; return;
} }
} }
BaseItemDoor.placeDoorBlock(destWorld, link.destination().getX(), link.destination().getY()-1, link.destination().getZ(),link.getDestinationOrientation(), door); BaseItemDoor.placeDoorBlock(destWorld, link.destination().getX(), link.destination().getY()-1, link.destination().getZ(),link.getDestinationOrientation(), door);
TileEntity doorDestTE = startWorld.getBlockTileEntity(link.destination().getX(), link.destination().getY(), link.destination().getZ());
TileEntity doorDestTE = ((BaseDimDoor)door).initDoorTE(destWorld, link.destination().getX(), link.destination().getY(), link.destination().getZ());
if(doorDestTE instanceof TileEntityDimDoor) if(doorDestTE instanceof TileEntityDimDoor)
{ {

View File

@@ -62,7 +62,12 @@ public abstract class DimLink
} }
public int getDestinationOrientation() public int getDestinationOrientation()
{ {
return PocketManager.getLink(link.point.getX(), link.point.getY(), link.point.getZ(), link.point.getDimension()).link().orientation; DimLink link = PocketManager.getLink(this.destination().getX(), this.destination().getY(), this.destination().getZ(), this.destination().getDimension());
if(link !=null)
{
return link.orientation();
}
return (this.orientation()+2)%4;
} }
public boolean hasDestination() public boolean hasDestination()
{ {

View File

@@ -48,7 +48,6 @@ public class ItemRiftSignature extends Item
@Override @Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
{ {
//TODO- recognize doors and intelligently place rifts on them.
// We must use onItemUseFirst() instead of onItemUse() because Minecraft checks // We must use onItemUseFirst() instead of onItemUse() because Minecraft checks
// whether the user is in creative mode after calling onItemUse() and undoes any // whether the user is in creative mode after calling onItemUse() and undoes any
// damage we might set to indicate the rift sig has been activated. Otherwise, // damage we might set to indicate the rift sig has been activated. Otherwise,

View File

@@ -37,17 +37,17 @@ public class RenderMobObelisk extends RenderLiving
final float maxScaling = 0.1f; final float maxScaling = 0.1f;
final int maxAggroLevel = 500; final int maxAggroLevel = 500;
MobMonolith monolith = ((MobMonolith) entity); MobMonolith monolith = ((MobMonolith) entity);
// Use linear interpolation to scale how much jitter we want for our given aggro level // Use linear interpolation to scale how much jitter we want for our given aggro level
float aggroScaling = minScaling + monolith.aggro * (maxScaling - minScaling) / maxAggroLevel; float aggroScaling = minScaling + monolith.aggro * (maxScaling - minScaling) / maxAggroLevel;
// Calculate jitter - include entity ID to give Monoliths individual jitters // Calculate jitter - include entity ID to give Monoliths individual jitters
float time = ((Minecraft.getSystemTime() + 0xF1234568 * monolith.entityId) % 200000) / 50.0F; float time = ((Minecraft.getSystemTime() + 0xF1234568 * monolith.entityId) % 200000) / 50.0F;
// We use random constants here on purpose just to get different wave forms // We use random constants here on purpose just to get different wave forms
double xJitter = aggroScaling * Math.sin(1.1f * time) * Math.sin(0.8f * time); double xJitter = aggroScaling * Math.sin(1.1f * time) * Math.sin(0.8f * time);
double yJitter = aggroScaling * Math.sin(1.2f * time) * Math.sin(0.9f * time); double yJitter = aggroScaling * Math.sin(1.2f * time) * Math.sin(0.9f * time);
double zJitter = aggroScaling * Math.sin(1.3f * time) * Math.sin(0.7f * time); double zJitter = aggroScaling * Math.sin(1.3f * time) * Math.sin(0.7f * time);
// Render with jitter // Render with jitter
this.render(entity, x + xJitter, y + yJitter, z + zJitter, par8, par9); this.render(entity, x + xJitter, y + yJitter, z + zJitter, par8, par9);
this.func_110827_b(entity, x, y, z, par8, par9); this.func_110827_b(entity, x, y, z, par8, par9);