Improved Monolith Jitter #130
@@ -424,9 +424,10 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn
|
||||
}
|
||||
|
||||
@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);
|
||||
world.setBlockTileEntity(x, y, z, te);
|
||||
return te;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package StevenDimDoors.mod_pocketDim.blocks;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public interface IDimDoor
|
||||
@@ -11,5 +12,5 @@ public interface IDimDoor
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -120,9 +120,10 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit
|
||||
}
|
||||
|
||||
@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);
|
||||
world.setBlockTileEntity(x, y, z, te);
|
||||
return te;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@ import net.minecraftforge.common.network.packet.DimensionRegisterPacket;
|
||||
import StevenDimDoors.mod_pocketDim.DDProperties;
|
||||
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||
import StevenDimDoors.mod_pocketDim.blocks.BaseDimDoor;
|
||||
import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper;
|
||||
import StevenDimDoors.mod_pocketDim.items.BaseItemDoor;
|
||||
import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor;
|
||||
@@ -598,9 +599,11 @@ public class DDTeleporter
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -62,7 +62,12 @@ public abstract class DimLink
|
||||
}
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -48,7 +48,6 @@ public class ItemRiftSignature extends Item
|
||||
@Override
|
||||
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
|
||||
// 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,
|
||||
|
||||
@@ -37,17 +37,17 @@ public class RenderMobObelisk extends RenderLiving
|
||||
final float maxScaling = 0.1f;
|
||||
final int maxAggroLevel = 500;
|
||||
MobMonolith monolith = ((MobMonolith) entity);
|
||||
|
||||
|
||||
// Use linear interpolation to scale how much jitter we want for our given aggro level
|
||||
float aggroScaling = minScaling + monolith.aggro * (maxScaling - minScaling) / maxAggroLevel;
|
||||
|
||||
|
||||
// Calculate jitter - include entity ID to give Monoliths individual jitters
|
||||
float time = ((Minecraft.getSystemTime() + 0xF1234568 * monolith.entityId) % 200000) / 50.0F;
|
||||
// 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 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);
|
||||
|
||||
|
||||
// Render with jitter
|
||||
this.render(entity, x + xJitter, y + yJitter, z + zJitter, par8, par9);
|
||||
this.func_110827_b(entity, x, y, z, par8, par9);
|
||||
|
||||
Reference in New Issue
Block a user