Successful transmutation events properly play sounds/particles on the client now
This commit is contained in:
parent
38b2efa70c
commit
95bd72e0d8
2 changed files with 66 additions and 12 deletions
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue