Fixed Portal ritual.

This commit is contained in:
WayofTime 2016-02-18 12:11:29 -05:00
parent 7979dc4e5f
commit 34a9b5a7ec
8 changed files with 151 additions and 45 deletions

View file

@ -1,15 +1,7 @@
package WayofTime.bloodmagic.ritual;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.teleport.PortalLocation;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
import java.util.ArrayList;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
@ -17,8 +9,15 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import java.util.ArrayList;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.teleport.PortalLocation;
import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
public class RitualPortal extends Ritual
{
@ -35,9 +34,8 @@ public class RitualPortal extends Ritual
}
@Override
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player)
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player, String owner)
{
String owner = PlayerHelper.getUUIDFromPlayer(player).toString();
World world = masterRitualStone.getWorldObj();
int x = masterRitualStone.getBlockPos().getX();
int y = masterRitualStone.getBlockPos().getY();
@ -127,6 +125,11 @@ public class RitualPortal extends Ritual
public void performRitual(IMasterRitualStone masterRitualStone)
{
World world = masterRitualStone.getWorldObj();
if (world.isRemote)
{
return;
}
int x = masterRitualStone.getBlockPos().getX();
int y = masterRitualStone.getBlockPos().getY();
int z = masterRitualStone.getBlockPos().getZ();
@ -236,7 +239,7 @@ public class RitualPortal extends Ritual
addRune(components, 1, 0, 0, EnumRuneType.AIR);
addRune(components, 2, 0, 0, EnumRuneType.WATER);
addRune(components, -1, 0, 0, EnumRuneType.FIRE);
addRune(components, -2, 0, 0 , EnumRuneType.EARTH);
addRune(components, -2, 0, 0, EnumRuneType.EARTH);
addRune(components, 2, 1, 0, EnumRuneType.DUSK);
addRune(components, 2, 2, 0, EnumRuneType.AIR);

View file

@ -41,13 +41,6 @@ public class Teleports
{
if (entity instanceof EntityPlayer)
{
EntityPlayerMP player = (EntityPlayerMP) entity;
player.setPositionAndUpdate(x + 0.5, y + 0.5, z + 0.5);
player.worldObj.updateEntityWithOptionalForce(player, false);
player.playerNetServerHandler.sendPacket(new S06PacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
player.timeUntilPortal = 150;
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
if (network.getCurrentEssence() < getTeleportCost())
{
@ -55,15 +48,16 @@ public class Teleports
}
network.syphon(getTeleportCost());
EntityPlayerMP player = (EntityPlayerMP) entity;
player.setPositionAndUpdate(x + 0.5, y + 0.5, z + 0.5);
player.worldObj.updateEntityWithOptionalForce(player, false);
player.playerNetServerHandler.sendPacket(new S06PacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
player.timeUntilPortal = 150;
player.worldObj.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
} else
{
WorldServer world = (WorldServer) entity.worldObj;
entity.setPosition(x + 0.5, y + 0.5, z + 0.5);
entity.timeUntilPortal = 150;
world.resetUpdateEntityTick();
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
if (network.getCurrentEssence() < (getTeleportCost() / 10))
{
@ -71,6 +65,12 @@ public class Teleports
}
network.syphon(getTeleportCost() / 10);
WorldServer world = (WorldServer) entity.worldObj;
entity.setPosition(x + 0.5, y + 0.5, z + 0.5);
entity.timeUntilPortal = 150;
world.resetUpdateEntityTick();
entity.worldObj.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
}
}
@ -122,20 +122,28 @@ public class Teleports
if (!player.worldObj.isRemote)
{
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
if (network.getCurrentEssence() < getTeleportCost())
{
return;
}
network.syphon(getTeleportCost());
server.getConfigurationManager().transferPlayerToDimension(player, newWorldID, new TeleporterBloodMagic(newWorldServer));
player.setPositionAndUpdate(x + 0.5, y + 0.5, z + 0.5);
player.worldObj.updateEntityWithOptionalForce(player, false);
player.playerNetServerHandler.sendPacket(new S06PacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
}
} else if (!entity.worldObj.isRemote)
{
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
if (network.getCurrentEssence() < getTeleportCost())
if (network.getCurrentEssence() < (getTeleportCost() / 10))
{
return;
}
network.syphon(getTeleportCost());
} else if (!entity.worldObj.isRemote)
{
network.syphon(getTeleportCost() / 10);
NBTTagCompound tag = new NBTTagCompound();
entity.writeToNBTOptional(tag);
@ -154,13 +162,6 @@ public class Teleports
oldWorldServer.resetUpdateEntityTick();
newWorldServer.resetUpdateEntityTick();
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
if (network.getCurrentEssence() < (getTeleportCost() / 10))
{
return;
}
network.syphon(getTeleportCost() / 10);
}
entity.timeUntilPortal = 150;