Huge commit for the Pull-Request.

Added a lot of things:
- Blood Tank
- Teleposition Sigil
- Transposition Sigil
- Cobblestone/Netherrack/Obisidian generation Ritual
- Tree Cutter Ritual
- Pump Ritual
- Altar Builder Ritual
- Block Placing Ritual
- Portal Ritual
- Teleportation System and API Components
- Cross pattern Area Descriptor
- Two reagents and their textures for the sigils’ crafting

Fixed:
- Teleposer not teleporting entities correctly

And probably other things I forgot!
This commit is contained in:
Tombenpotter 2016-02-18 17:25:11 +01:00
parent d947f23696
commit 7e8aec8652
53 changed files with 3031 additions and 372 deletions

View file

@ -0,0 +1,68 @@
package WayofTime.bloodmagic.api.teleport;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import net.minecraft.util.BlockPos;
import java.io.Serializable;
@ToString
@EqualsAndHashCode
public class ChunkPairSerializable implements Serializable
{
@Getter
private int chunkXPos;
@Getter
private int chunkZPos;
public ChunkPairSerializable(int chunkXPos, int chunkZPos)
{
this.chunkXPos = chunkXPos;
this.chunkZPos = chunkZPos;
}
public ChunkPairSerializable(BlockPos blockPos)
{
this(blockPos.getX() >> 4, blockPos.getZ() >> 4);
}
public BlockPos getChunkCenter(int y)
{
return new BlockPos((chunkXPos << 4) + 8, y, (chunkZPos << 4) + 8);
}
public BlockPos getChunkCenter(){
return getChunkCenter(64);
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ChunkPairSerializable that = (ChunkPairSerializable) o;
if (chunkXPos != that.chunkXPos) return false;
return chunkZPos == that.chunkZPos;
}
@Override
public int hashCode()
{
int result = chunkXPos;
result = 31 * result + chunkZPos;
return result;
}
@Override
public String toString()
{
return "ChunkPairSerializable{" +
"chunkXPos=" + chunkXPos +
", chunkZPos=" + chunkZPos +
'}';
}
}

View file

@ -0,0 +1,8 @@
package WayofTime.bloodmagic.api.teleport;
public interface ITeleport
{
public void teleport();
public int getTeleportCost();
}

View file

@ -0,0 +1,86 @@
package WayofTime.bloodmagic.api.teleport;
import WayofTime.bloodmagic.api.Constants;
import lombok.Getter;
import lombok.ToString;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
import java.io.Serializable;
@ToString
public class PortalLocation implements Serializable
{
@Getter
private int x;
@Getter
private int y;
@Getter
private int z;
@Getter
private int dimension;
public PortalLocation(int x, int y, int z, int dimension)
{
this.x = x;
this.y = y;
this.z = z;
this.dimension = dimension;
}
public PortalLocation(BlockPos blockPos, int dimension)
{
this(blockPos.getX(), blockPos.getY(), blockPos.getZ(), dimension);
}
public static PortalLocation readFromNBT(NBTTagCompound tag)
{
if (tag.hasKey(Constants.NBT.PORTAL_LOCATION))
{
NBTTagCompound locationTag = tag.getCompoundTag(Constants.NBT.PORTAL_LOCATION);
return new PortalLocation(locationTag.getInteger(Constants.NBT.X_COORD), locationTag.getInteger(Constants.NBT.Y_COORD), locationTag.getInteger(Constants.NBT.Z_COORD), locationTag.getInteger(Constants.NBT.DIMENSION_ID));
}
return null;
}
public NBTTagCompound writeToNBT(NBTTagCompound tag)
{
NBTTagCompound locationTag = new NBTTagCompound();
locationTag.setInteger(Constants.NBT.X_COORD, x);
locationTag.setInteger(Constants.NBT.Y_COORD, y);
locationTag.setInteger(Constants.NBT.Z_COORD, z);
locationTag.setInteger(Constants.NBT.DIMENSION_ID, dimension);
tag.setTag(Constants.NBT.PORTAL_LOCATION, locationTag);
return tag;
}
public BlockPos getBlockPos()
{
return new BlockPos(x, y, z);
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PortalLocation that = (PortalLocation) o;
if (x != that.x) return false;
if (y != that.y) return false;
return z == that.z;
}
@Override
public int hashCode()
{
int result = x;
result = 31 * result + y;
result = 31 * result + z;
return result;
}
}

View file

@ -0,0 +1,37 @@
package WayofTime.bloodmagic.api.teleport;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import net.minecraft.entity.Entity;
import net.minecraft.util.BlockPos;
@ToString
@EqualsAndHashCode
public abstract class Teleport implements ITeleport
{
@Getter
protected int x;
@Getter
protected int y;
@Getter
protected int z;
@Getter
protected Entity entity;
@Getter
protected String networkToDrain;
public Teleport(int x, int y, int z, Entity entity, String networkToDrain)
{
this.x = x;
this.y = y;
this.z = z;
this.entity = entity;
this.networkToDrain = networkToDrain;
}
public Teleport(BlockPos blockPos, Entity entity, String networkToDrain)
{
this(blockPos.getX(), blockPos.getY(), blockPos.getZ(), entity, networkToDrain);
}
}

View file

@ -0,0 +1,44 @@
package WayofTime.bloodmagic.api.teleport;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.ArrayList;
import java.util.List;
public class TeleportQueue
{
private static TeleportQueue INSTANCE = new TeleportQueue();
private static List<ITeleport> queue;
public static TeleportQueue getInstance()
{
return INSTANCE;
}
private TeleportQueue()
{
queue = new ArrayList<ITeleport>();
}
public void addITeleport(ITeleport iTeleport)
{
queue.add(iTeleport);
}
@SubscribeEvent
public void serverTick(TickEvent.ServerTickEvent event)
{
if (event.phase != TickEvent.Phase.END)
{
return;
}
for (ITeleport iTeleport : queue)
{
iTeleport.teleport();
}
queue.clear();
}
}

View file

@ -0,0 +1,38 @@
package WayofTime.bloodmagic.api.teleport;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.Teleporter;
import net.minecraft.world.WorldServer;
public class TeleporterBloodMagic extends Teleporter
{
public TeleporterBloodMagic(WorldServer worldServer)
{
super(worldServer);
}
@Override
public boolean makePortal(Entity entity)
{
return true;
}
@Override
public void removeStalePortalLocations(long worldTime)
{
;
}
@Override
public boolean placeInExistingPortal(Entity entityIn, float rotationYaw)
{
return true;
}
@Override
public void placeInPortal(Entity entity, float rotationYaw)
{
entity.setLocationAndAngles(MathHelper.floor_double(entity.posX), MathHelper.floor_double(entity.posY) + 2, MathHelper.floor_double(entity.posZ), entity.rotationYaw, entity.rotationPitch);
}
}