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:
parent
d947f23696
commit
7e8aec8652
53 changed files with 3031 additions and 372 deletions
|
@ -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 +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package WayofTime.bloodmagic.api.teleport;
|
||||
|
||||
public interface ITeleport
|
||||
{
|
||||
public void teleport();
|
||||
|
||||
public int getTeleportCost();
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue