Successful transmutation events properly play sounds/particles on the client now

This commit is contained in:
pahimar 2012-12-19 13:47:45 -05:00
parent 38b2efa70c
commit 95bd72e0d8
2 changed files with 66 additions and 12 deletions

View file

@ -2,6 +2,7 @@ package com.pahimar.ee3.core.handlers;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.Event.Result; import net.minecraftforge.event.Event.Result;
import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.ForgeSubscribe;
@ -34,6 +35,53 @@ public class WorldTransmutationHandler {
int upperBoundZ = -1 * lowerBoundZ; int upperBoundZ = -1 * lowerBoundZ;
boolean hasSoundPlayed = false; boolean hasSoundPlayed = false;
double xShift = 0;
double yShift = 0;
double zShift = 0;
int xSign = 1;
int ySign = 1;
int zSign = 1;
switch (ForgeDirection.getOrientation(sideHit)) {
case UP: {
yShift = 1.5D;
break;
}
case DOWN: {
yShift = 0.1D;
ySign = -1;
break;
}
case NORTH: {
System.out.println("NORTH");
zShift = 1D;
zSign = -1;
break;
}
case SOUTH: {
System.out.println("SOUTH");
zShift = 1D;
break;
}
case EAST: {
System.out.println("EAST");
xShift = 1D;
break;
}
case WEST: {
System.out.println("WEST");
xShift = 1D;
xSign = -1;
break;
}
case UNKNOWN: {
break;
}
default:
break;
}
for (int x = lowerBoundX; x <= upperBoundX; x++) { for (int x = lowerBoundX; x <= upperBoundX; x++) {
for (int y = lowerBoundY; y <= upperBoundY; y++) { for (int y = lowerBoundY; y <= upperBoundY; y++) {
for (int z = lowerBoundZ; z <= upperBoundZ; z++) { for (int z = lowerBoundZ; z <= upperBoundZ; z++) {
@ -54,7 +102,8 @@ public class WorldTransmutationHandler {
thePlayer.worldObj.playSoundAtEntity(thePlayer, Sounds.TRANSMUTE, 0.5F, 1.0F); thePlayer.worldObj.playSoundAtEntity(thePlayer, Sounds.TRANSMUTE, 0.5F, 1.0F);
} }
PacketDispatcher.sendPacketToAllAround(originX + x, originY + y, originZ + z, 64D, thePlayer.worldObj.provider.dimensionId, PacketTypeHandler.populatePacket(new PacketSpawnParticle(Particles.LARGE_EXPLODE, originX + x, originY + y + 1, originZ + z, 0, 0.15D, 0))); PacketDispatcher.sendPacketToAllAround(originX + x, originY + y, originZ + z, 64D, thePlayer.worldObj.provider.dimensionId, PacketTypeHandler.populatePacket(new PacketSpawnParticle(Particles.LARGE_SMOKE, originX + x + (xShift * xSign), originY + y + (yShift * ySign), originZ + z + (zShift * zSign), 0D * xSign, 0.05D * ySign, 0D * zSign)));
PacketDispatcher.sendPacketToAllAround(originX + x, originY + y, originZ + z, 64D, thePlayer.worldObj.provider.dimensionId, PacketTypeHandler.populatePacket(new PacketSpawnParticle(Particles.LARGE_EXPLODE, originX + x + (xShift * xSign), originY + y + (yShift * ySign), originZ + z + (zShift * zSign), 0D * xSign, 0.15D * ySign, 0D * zSign)));
} }
} }
} }
@ -69,9 +118,14 @@ public class WorldTransmutationHandler {
int meta = event.world.getBlockMetadata(event.x, event.y, event.z); int meta = event.world.getBlockMetadata(event.x, event.y, event.z);
boolean result = false; boolean result = false;
if (EquivalencyHandler.instance().areEquivalent(new ItemStack(id, 1, meta), new ItemStack(event.targetID, 1, event.targetMeta))) { ItemStack worldStack = new ItemStack(id, 1, meta);
if (event.itemStack.getItemDamage() < event.itemStack.getMaxDamage()) { ItemStack targetStack = new ItemStack(event.targetID, 1, event.targetMeta);
result = TransmutationHelper.transmuteInWorld(event.world, event.player, event.player.getCurrentEquippedItem(), event.x, event.y, event.z, event.targetID, event.targetMeta);
if (!worldStack.isItemEqual(targetStack)) {
if (EquivalencyHandler.instance().areEquivalent(worldStack, targetStack)) {
if (event.itemStack.getItemDamage() < event.itemStack.getMaxDamage()) {
result = TransmutationHelper.transmuteInWorld(event.world, event.player, event.player.getCurrentEquippedItem(), event.x, event.y, event.z, event.targetID, event.targetMeta);
}
} }
} }

View file

@ -14,7 +14,7 @@ import cpw.mods.fml.common.network.Player;
public class PacketSpawnParticle extends PacketEE { public class PacketSpawnParticle extends PacketEE {
public String particleName; public String particleName;
public int x, y, z; public double x, y, z;
public double velocityX, velocityY, velocityZ; public double velocityX, velocityY, velocityZ;
public PacketSpawnParticle() { public PacketSpawnParticle() {
@ -22,7 +22,7 @@ public class PacketSpawnParticle extends PacketEE {
super(PacketTypeHandler.SPAWN_PARTICLE, false); super(PacketTypeHandler.SPAWN_PARTICLE, false);
} }
public PacketSpawnParticle(String particleName, int x, int y, int z, double velocityX, double velocityY, double velocityZ) { public PacketSpawnParticle(String particleName, double x, double y, double z, double velocityX, double velocityY, double velocityZ) {
super(PacketTypeHandler.SPAWN_PARTICLE, false); super(PacketTypeHandler.SPAWN_PARTICLE, false);
this.particleName = particleName; this.particleName = particleName;
@ -37,9 +37,9 @@ public class PacketSpawnParticle extends PacketEE {
public void writeData(DataOutputStream data) throws IOException { public void writeData(DataOutputStream data) throws IOException {
data.writeUTF(particleName); data.writeUTF(particleName);
data.writeInt(x); data.writeDouble(x);
data.writeInt(y); data.writeDouble(y);
data.writeInt(z); data.writeDouble(z);
data.writeDouble(velocityX); data.writeDouble(velocityX);
data.writeDouble(velocityY); data.writeDouble(velocityY);
data.writeDouble(velocityZ); data.writeDouble(velocityZ);
@ -49,9 +49,9 @@ public class PacketSpawnParticle extends PacketEE {
public void readData(DataInputStream data) throws IOException { public void readData(DataInputStream data) throws IOException {
this.particleName = data.readUTF(); this.particleName = data.readUTF();
this.x = data.readInt(); this.x = data.readDouble();
this.y = data.readInt(); this.y = data.readDouble();
this.z = data.readInt(); this.z = data.readDouble();
this.velocityX = data.readDouble(); this.velocityX = data.readDouble();
this.velocityY = data.readDouble(); this.velocityY = data.readDouble();
this.velocityZ = data.readDouble(); this.velocityZ = data.readDouble();