diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index ba4c50d5f..7ef7924ce 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -322,7 +322,7 @@ public class NoppesUtilServer { float rotationZ1, float rotationZ2, float rotationZRate, int rotationZRateStart, boolean facePlayer, int width, int height, int offsetX, int offsetY, int animRate, boolean animLoop, int animStart, int animEnd, - int entityID + int entityID, int dimensionID ){ Server.sendToAll(EnumPacketClient.SCRIPTED_PARTICLE, directory, HEXcolor, amount, maxAge, @@ -335,7 +335,7 @@ public class NoppesUtilServer { rotationZ1, rotationZ2, rotationZRate, rotationZRateStart, facePlayer, width, height, offsetX, offsetY, animRate, animLoop, animStart, animEnd, - entityID + entityID, dimensionID ); } diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index 78636bae7..bf1b90c48 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -19,6 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Util; import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.Server; @@ -125,9 +126,13 @@ public class NoppesUtil { int animEnd = buffer.readInt(); int entityID = buffer.readInt(); + int dimensionID = buffer.readInt(); + + World worldObj = DimensionManager.getWorld(dimensionID); - World worldObj = Minecraft.getMinecraft().theWorld; Entity entity = worldObj.getEntityByID(entityID); + if(entity != null) + worldObj = entity.worldObj; CustomFX fx = new CustomFX( worldObj, entity, diff --git a/src/main/java/noppes/npcs/scripted/ScriptParticle.java b/src/main/java/noppes/npcs/scripted/ScriptParticle.java index 3ece802b0..5038a20a5 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptParticle.java +++ b/src/main/java/noppes/npcs/scripted/ScriptParticle.java @@ -58,11 +58,11 @@ public class ScriptParticle { rotationZ1, rotationZ2, rotationZRate, rotationZRateStart, facePlayer, width, height, offsetX, offsetY, animRate, animLoop, animStart, animEnd, - entityID + entityID, entity.getWorld().getDimensionID() ); } - public void spawnInWorld(double x, double y, double z){ + public void spawnInWorld(ScriptWorld world){ NoppesUtilServer.spawnScriptedParticle(directory, HEXcolor, amount, maxAge, x, y, z, motionX, motionY, motionZ, gravity, @@ -73,7 +73,22 @@ public class ScriptParticle { rotationZ1, rotationZ2, rotationZRate, rotationZRateStart, facePlayer, width, height, offsetX, offsetY, animRate, animLoop, animStart, animEnd, - -1 + -1, world.getDimensionID() + ); + } + + public void spawnInWorld(ScriptWorld world, double x, double y, double z){ + NoppesUtilServer.spawnScriptedParticle(directory, HEXcolor, amount, maxAge, + x, y, z, + motionX, motionY, motionZ, gravity, + scale1, scale2, scaleRate, scaleRateStart, + alpha1, alpha2, alphaRate, alphaRateStart, + rotationX1, rotationX2, rotationXRate, rotationXRateStart, + rotationY1, rotationY2, rotationYRate, rotationYRateStart, + rotationZ1, rotationZ2, rotationZRate, rotationZRateStart, + facePlayer, width, height, offsetX, offsetY, + animRate, animLoop, animStart, animEnd, + -1, world.getDimensionID() ); } diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java index aad1a3fd4..306e07e9b 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java +++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java @@ -330,13 +330,25 @@ public class ScriptWorld implements IWorld { } /** - * @param directory The particle's texture directory. Use only forward slashes when writing a directory. Example: "customnpcs:textures/particle/tail.png" - * @return Returns ScriptEntityParticle object + * @param directory The particle's texture directory. Use only forward slashes when writing a directory. Example: "customnpcs:textures/particle/bubble.png" + * @return Returns ScriptParticle object */ public ScriptParticle createEntityParticle(String directory){ return new ScriptParticle(directory); } - + + public ScriptParticle createParticle(String directory){ + return new ScriptParticle(directory); + } + + public void spawnParticle(ScriptParticle particle){ + particle.spawnInWorld(this); + } + + public void spawnParticle(ScriptParticle particle, double x, double y, double z){ + particle.spawnInWorld(this,x,y,z); + } + /** * @param key Get temp data for this key * @return Returns the stored temp data diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java index 819d834f3..fd024f580 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java @@ -83,7 +83,7 @@ public class ScriptEntity implements IEntity { rotationZ1, rotationZ2, rotationZRate, rotationZRateStart, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(String directory, int HEXcolor, int amount, int maxAge, @@ -103,7 +103,7 @@ public class ScriptEntity implements IEntity { 0, 0, 0, 0, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(String directory, int HEXcolor, int amount, int maxAge, @@ -122,7 +122,7 @@ public class ScriptEntity implements IEntity { 0, 0, 0, 0, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(String directory, int HEXcolor, int amount, int maxAge, @@ -140,7 +140,7 @@ public class ScriptEntity implements IEntity { 0, 0, 0, 0, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(String directory, int HEXcolor, int amount, int maxAge, @@ -157,7 +157,7 @@ public class ScriptEntity implements IEntity { 0, 0, 0, 0, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(String directory, int HEXcolor, int amount, int maxAge @@ -173,7 +173,7 @@ public class ScriptEntity implements IEntity { 0, 0, 0, 0, true, -1, -1, 0,0, 0, true, 0, 0, - entityID + entityID, entity.dimension ); } public void spawnParticle(ScriptParticle entityParticle) { entityParticle.spawnOnEntity(this); }