Rewrite IBindable to provide an object instead of storing 2 strings
This commit is contained in:
parent
941173dbf4
commit
2a43e53842
47 changed files with 416 additions and 510 deletions
|
@ -1,11 +1,12 @@
|
|||
package WayofTime.bloodmagic.ritual;
|
||||
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.core.data.Binding;
|
||||
import WayofTime.bloodmagic.iface.IBindable;
|
||||
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
||||
import WayofTime.bloodmagic.ritual.data.*;
|
||||
import WayofTime.bloodmagic.util.Utils;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Lists;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -23,6 +24,7 @@ import net.minecraftforge.items.IItemHandler;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
public class RitualExpulsion extends Ritual {
|
||||
public static final String EXPULSION_RANGE = "expulsionRange";
|
||||
|
@ -48,7 +50,7 @@ public class RitualExpulsion extends Ritual {
|
|||
|
||||
AreaDescriptor expulsionRange = getBlockRange(EXPULSION_RANGE);
|
||||
|
||||
List<String> allowedNames = new ArrayList<String>();
|
||||
List<UUID> whitelist = Lists.newArrayList();
|
||||
BlockPos masterPos = masterRitualStone.getBlockPos();
|
||||
TileEntity tile = world.getTileEntity(masterPos.up());
|
||||
|
||||
|
@ -57,10 +59,10 @@ public class RitualExpulsion extends Ritual {
|
|||
if (handler != null) {
|
||||
for (int i = 0; i < handler.getSlots(); i++) {
|
||||
ItemStack itemStack = handler.getStackInSlot(i);
|
||||
if (itemStack != null && itemStack.getItem() instanceof IBindable) {
|
||||
IBindable bindable = (IBindable) itemStack.getItem();
|
||||
if (!Strings.isNullOrEmpty(bindable.getOwnerName(itemStack)) && !allowedNames.contains(bindable.getOwnerName(itemStack)))
|
||||
allowedNames.add(bindable.getOwnerUUID(itemStack));
|
||||
if (!itemStack.isEmpty() && itemStack.getItem() instanceof IBindable) {
|
||||
Binding binding = ((IBindable) itemStack.getItem()).getBinding(itemStack);
|
||||
if (binding != null && !whitelist.contains(binding.getOwnerId()))
|
||||
whitelist.add(binding.getOwnerId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,14 +71,14 @@ public class RitualExpulsion extends Ritual {
|
|||
final int teleportDistance = 100;
|
||||
|
||||
for (EntityPlayer player : world.getEntitiesWithinAABB(EntityPlayer.class, expulsionRange.getAABB(masterRitualStone.getBlockPos()))) {
|
||||
if (player.capabilities.isCreativeMode || PlayerHelper.getUUIDFromPlayer(player).toString().equals(masterRitualStone.getOwner()) || allowedNames.contains(PlayerHelper.getUUIDFromPlayer(player).toString()))
|
||||
if (player.capabilities.isCreativeMode || PlayerHelper.getUUIDFromPlayer(player).toString().equals(masterRitualStone.getOwner()) || whitelist.contains(player.getGameProfile().getId()))
|
||||
continue;
|
||||
|
||||
if (teleportRandomly(player, teleportDistance))
|
||||
masterRitualStone.getOwnerNetwork().syphon(getRefreshCost() * 1000);
|
||||
}
|
||||
|
||||
allowedNames.clear();
|
||||
whitelist.clear();
|
||||
}
|
||||
|
||||
public boolean teleportRandomly(EntityLivingBase entityLiving, double distance) {
|
||||
|
@ -162,20 +164,16 @@ public class RitualExpulsion extends Ritual {
|
|||
}
|
||||
|
||||
public void moveEntityViaTeleport(EntityLivingBase entityLiving, double x, double y, double z) {
|
||||
if (entityLiving != null && entityLiving instanceof EntityPlayer) {
|
||||
if (entityLiving instanceof EntityPlayerMP) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) entityLiving;
|
||||
if (entityLiving instanceof EntityPlayerMP) {
|
||||
EntityPlayerMP player = (EntityPlayerMP) entityLiving;
|
||||
|
||||
if (entityplayermp.getEntityWorld() == entityLiving.getEntityWorld()) {
|
||||
EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, x, y, z, 5.0F);
|
||||
EnderTeleportEvent event = new EnderTeleportEvent(player, x, y, z, 5.0F);
|
||||
|
||||
if (!MinecraftForge.EVENT_BUS.post(event)) {
|
||||
if (entityLiving.isRiding()) {
|
||||
entityplayermp.mountEntityAndWakeUp();
|
||||
}
|
||||
entityLiving.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ());
|
||||
}
|
||||
}
|
||||
if (!MinecraftForge.EVENT_BUS.post(event)) {
|
||||
if (entityLiving.isRiding())
|
||||
player.mountEntityAndWakeUp();
|
||||
|
||||
entityLiving.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ());
|
||||
}
|
||||
} else if (entityLiving != null) {
|
||||
entityLiving.setPosition(x, y, z);
|
||||
|
|
|
@ -18,6 +18,7 @@ import net.minecraft.world.World;
|
|||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
public class RitualPortal extends Ritual {
|
||||
|
||||
|
@ -31,14 +32,14 @@ public class RitualPortal extends Ritual {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player, String owner) {
|
||||
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player, UUID owner) {
|
||||
World world = masterRitualStone.getWorldObj();
|
||||
int x = masterRitualStone.getBlockPos().getX();
|
||||
int y = masterRitualStone.getBlockPos().getY();
|
||||
int z = masterRitualStone.getBlockPos().getZ();
|
||||
EnumFacing direction = masterRitualStone.getDirection();
|
||||
|
||||
String name = owner;
|
||||
String name = owner.toString();
|
||||
IBlockState blockState;
|
||||
|
||||
if (!world.isRemote) {
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.util.math.BlockPos;
|
|||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* This interface is for internal implementation only.
|
||||
|
@ -16,7 +17,7 @@ import java.util.List;
|
|||
* It is provided via the API for easy obtaining of basic data.
|
||||
*/
|
||||
public interface IMasterRitualStone {
|
||||
String getOwner();
|
||||
UUID getOwner();
|
||||
|
||||
SoulNetwork getOwnerNetwork();
|
||||
|
||||
|
|
|
@ -14,10 +14,7 @@ import net.minecraft.util.text.TextComponentTranslation;
|
|||
import net.minecraft.world.World;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/**
|
||||
|
@ -100,7 +97,7 @@ public abstract class Ritual {
|
|||
* owner of the ritual if being reactivated.
|
||||
* @return - Whether activation was successful
|
||||
*/
|
||||
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player, String owner) {
|
||||
public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player, UUID owner) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,17 +20,19 @@ import net.minecraft.world.WorldServer;
|
|||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class Teleports {
|
||||
|
||||
public static class TeleportSameDim extends Teleport {
|
||||
private final boolean teleposer;
|
||||
|
||||
public TeleportSameDim(int x, int y, int z, Entity entity, String networkToDrain, boolean teleposer) {
|
||||
this(new BlockPos(x, y, z), entity, networkToDrain, teleposer);
|
||||
public TeleportSameDim(int x, int y, int z, Entity entity, UUID networkOwner, boolean teleposer) {
|
||||
this(new BlockPos(x, y, z), entity, networkOwner, teleposer);
|
||||
}
|
||||
|
||||
public TeleportSameDim(BlockPos blockPos, Entity entity, String networkToDrain, boolean teleposer) {
|
||||
super(blockPos, entity, networkToDrain);
|
||||
public TeleportSameDim(BlockPos blockPos, Entity entity, UUID networkOwner, boolean teleposer) {
|
||||
super(blockPos, entity, networkOwner);
|
||||
this.teleposer = teleposer;
|
||||
}
|
||||
|
||||
|
@ -39,7 +41,7 @@ public class Teleports {
|
|||
if (entity != null) {
|
||||
if (entity.timeUntilPortal <= 0) {
|
||||
if (entity instanceof EntityPlayer) {
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkOwner);
|
||||
if (network.getCurrentEssence() < getTeleportCost())
|
||||
return;
|
||||
|
||||
|
@ -60,7 +62,7 @@ public class Teleports {
|
|||
if (teleposer)
|
||||
MinecraftForge.EVENT_BUS.post(new TeleposeEvent.Ent.Post(entity, entity.getEntityWorld(), entity.getPosition(), entity.getEntityWorld(), new BlockPos(x, y, z)));
|
||||
} else {
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkOwner);
|
||||
if (network.getCurrentEssence() < (getTeleportCost() / 10))
|
||||
return;
|
||||
|
||||
|
@ -95,12 +97,12 @@ public class Teleports {
|
|||
private int newWorldID;
|
||||
private boolean teleposer;
|
||||
|
||||
public TeleportToDim(int x, int y, int z, Entity entity, String networkToDrain, World oldWorld, int newWorld, boolean teleposer) {
|
||||
this(new BlockPos(x, y, z), entity, networkToDrain, oldWorld, newWorld, teleposer);
|
||||
public TeleportToDim(int x, int y, int z, Entity entity, UUID networkOwner, World oldWorld, int newWorld, boolean teleposer) {
|
||||
this(new BlockPos(x, y, z), entity, networkOwner, oldWorld, newWorld, teleposer);
|
||||
}
|
||||
|
||||
public TeleportToDim(BlockPos blockPos, Entity entity, String networkToDrain, World oldWorld, int newWorldID, boolean teleposer) {
|
||||
super(blockPos, entity, networkToDrain);
|
||||
public TeleportToDim(BlockPos blockPos, Entity entity, UUID networkOwner, World oldWorld, int newWorldID, boolean teleposer) {
|
||||
super(blockPos, entity, networkOwner);
|
||||
this.oldWorld = oldWorld;
|
||||
this.newWorldID = newWorldID;
|
||||
this.teleposer = teleposer;
|
||||
|
@ -118,7 +120,7 @@ public class Teleports {
|
|||
EntityPlayerMP player = (EntityPlayerMP) entity;
|
||||
|
||||
if (!player.getEntityWorld().isRemote) {
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkOwner);
|
||||
if (network.getCurrentEssence() < getTeleportCost())
|
||||
return;
|
||||
|
||||
|
@ -138,7 +140,7 @@ public class Teleports {
|
|||
}
|
||||
|
||||
} else if (!entity.getEntityWorld().isRemote) {
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkToDrain);
|
||||
SoulNetwork network = NetworkHelper.getSoulNetwork(networkOwner);
|
||||
if (network.getCurrentEssence() < (getTeleportCost() / 10))
|
||||
return;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue