Merge remote-tracking branch 'origin/master' into pheo-tinted-veg-test

This commit is contained in:
pheo 2025-04-30 15:35:54 +01:00
commit 0aeeda9113
16 changed files with 5835 additions and 135 deletions

View File

@ -1,6 +1,14 @@
## Changed
* Nerfed AP and DU round damage multiplier
* Effective damage is still much higher than on gunmetal ammo due to the armor piercing effect
* Increased flamethrower turret detection range from 32 to 48 blocks
* Flamethrower turrets now use the green fire effect when using balefire fuel
* Flamethrower turret projectile damage is now capped to 20
* Balefire fuel should no longer instantly vaporize bosses
## Fixed
* Fixed a potential crash caused by cargo dropships landing on cargo docks with no satellite chip installed
* Fixed a potential crash caused by cargo dropships landing on cargo docks with no satellite chip installed
* Fixed potential crash related to hazard handling for dropped items
* Fixed errors thrown when loading in old system bullet entities
* Fixed dupe regarding breaking transport drones
* Fixed 12 gauge flechette DT negation not being the intended value

View File

@ -214,18 +214,10 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti, IT
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0) {
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
if(i == 1) {
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(i == 2) {
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2);
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
@Override

View File

@ -35,6 +35,8 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory,
@Override
public boolean hitByEntity(Entity attacker) {
if(this.isDead) return false;
if(attacker instanceof EntityPlayer && !worldObj.isRemote) {
this.setDead();
for (ItemStack stack : slots) {

View File

@ -43,6 +43,8 @@ public class EntityRequestDrone extends EntityDroneBase {
@Override
public boolean hitByEntity(Entity attacker) {
if(this.isDead) return false;
if(attacker instanceof EntityPlayer && !worldObj.isRemote) {
this.setDead();
if(heldItem != null)

View File

@ -581,27 +581,14 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
}
@Override
public void readEntityFromNBT(NBTTagCompound nbt) {
super.readEntityFromNBT(nbt);
int cfg = nbt.getInteger("config");
this.config = BulletConfigSyncingUtil.pullConfig(cfg);
this.dataWatcher.updateObject(16, (byte)this.config.style);
this.dataWatcher.updateObject(17, (byte)this.config.trail);
if(this.config == null) {
this.setDead();
return;
}
this.overrideDamage = nbt.getFloat("damage");
this.dataWatcher.updateObject(18, cfg);
public boolean writeToNBTOptional(NBTTagCompound nbt) {
return false;
}
@Override
public void writeEntityToNBT(NBTTagCompound nbt) {
super.writeEntityToNBT(nbt);
nbt.setInteger("config", dataWatcher.getWatchableObjectInt(18));
nbt.setFloat("damage", this.overrideDamage);
public void readEntityFromNBT(NBTTagCompound nbt) {
super.readEntityFromNBT(nbt);
this.setDead();
}
public static interface IBulletHurtBehaviorNT { public void behaveEntityHurt(EntityBulletBaseNT bullet, Entity hit); }

View File

@ -23,14 +23,9 @@ public abstract class ItemInventory implements IInventory {
public ItemStack[] slots;
public ItemStack target;
public boolean toMarkDirty = false;
@Override
public void markDirty() {
if(!toMarkDirty || player.getEntityWorld().isRemote)
return;
for(int i = 0; i < getSizeInventory(); ++i) {
if(getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) {
slots[i] = null;
@ -38,7 +33,6 @@ public abstract class ItemInventory implements IInventory {
}
ItemStackUtil.addStacksToNBT(target, slots); // Maintain compatibility with the containment boxes.
target.setTagCompound(checkNBT(target.getTagCompound()));
}
@ -93,9 +87,10 @@ public abstract class ItemInventory implements IInventory {
@Override
public ItemStack decrStackSize(int slot, int amount) {
ItemStack stack = getStackInSlot(slot);
if (stack != null) {
if(stack != null) {
if (stack.stackSize > amount) {
stack = stack.splitStack(amount);
markDirty();
} else {
setInventorySlotContents(slot, null);
}
@ -110,6 +105,7 @@ public abstract class ItemInventory implements IInventory {
}
slots[slot] = stack;
markDirty();
}
@Override
@ -119,36 +115,12 @@ public abstract class ItemInventory implements IInventory {
return stack;
}
@Override
public ItemStack getStackInSlot(int slot) {
return slots[slot];
}
@Override public ItemStack getStackInSlot(int slot) { return slots[slot]; }
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
return true;
}
@Override public boolean isUseableByPlayer(EntityPlayer player) { return true; }
@Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; }
@Override public int getInventoryStackLimit() { return 64; }
@Override
public boolean isItemValidForSlot(int slot, ItemStack stack) {
return true;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public void openInventory() {
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateOpen", 1.0F, 0.8F);
}
@Override
public void closeInventory() {
toMarkDirty = true;
markDirty();
toMarkDirty = false;
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateClose", 1.0F, 0.8F);
}
@Override public void openInventory() { player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateOpen", 1.0F, 0.8F); }
@Override public void closeInventory() { player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateClose", 1.0F, 0.8F); }
}

View File

@ -8,6 +8,7 @@ import com.hbm.items.tool.ItemKey;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.machine.storage.*;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
@ -34,12 +35,10 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
if(!world.isRemote && stack.stackSize == 1) {
if (stack.stackTagCompound != null && stack.stackTagCompound.hasKey("lock")) {
for (ItemStack item : player.inventory.mainInventory) {
if(item == null) // Skip if no item.
continue;
if(!(item.getItem() instanceof ItemKey)) // Skip if item isn't a key.
continue;
if(item.stackTagCompound == null) // Skip if there is no NBT (wouldn't open it anyway).
continue;
if(item == null) continue; // Skip if no item.
if(!(item.getItem() instanceof ItemKey)) continue; // Skip if item isn't a key.
if(item.stackTagCompound == null) continue; // Skip if there is no NBT (wouldn't open it anyway).
if (item.stackTagCompound.getInteger("pins") == stack.stackTagCompound.getInteger("lock")) { // Check if pins are equal (if it can open it)
TileEntityCrateBase.spawnSpiders(player, world, stack);
player.openGui(MainRegistry.instance, 0, world, 0, 0, 0);
@ -81,22 +80,19 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
}
public static class InventoryCrate extends ItemInventory {
public InventoryCrate(EntityPlayer player, ItemStack crate) {
this.player = player;
this.target = crate;
slots = new ItemStack[this.getSizeInventory()];
if(crate.stackTagCompound == null)
crate.stackTagCompound = new NBTTagCompound();
else if(!player.worldObj.isRemote) {
for (int i = 0; i < this.getSizeInventory(); i++)
this.setInventorySlotContents(i, ItemStack.loadItemStackFromNBT(crate.stackTagCompound.getCompoundTag("slot" + i)));
this.slots = new ItemStack[this.getSizeInventory()];
if(target.stackTagCompound == null) {
target.stackTagCompound = new NBTTagCompound();
}
toMarkDirty = true;
this.markDirty();
toMarkDirty = false;
for(int i = 0; i < slots.length; i++)
this.slots[i] = ItemStack.loadItemStackFromNBT(target.stackTagCompound.getCompoundTag("slot" + i));
}
@Nonnull
@ -128,38 +124,36 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
@Override
public void markDirty() { // I HATE THIS SO MUCH
if(player.getEntityWorld().isRemote || !toMarkDirty) { // go the fuck away
return;
}
NBTTagCompound nbt = new NBTTagCompound();
int invSize = this.getSizeInventory();
for(int i = 0; i < invSize; i++) {
ItemStack stack = this.getStackInSlot(i);
if(stack == null)
continue;
if(stack == null) continue;
NBTTagCompound slot = new NBTTagCompound();
stack.writeToNBT(slot);
nbt.setTag("slot" + i, slot);
}
if(target.stackTagCompound != null) { // yes it's a bit jank, but it wants to clear otherwise so...
if(target.stackTagCompound.hasKey("lock"))
nbt.setInteger("lock", target.stackTagCompound.getInteger("lock"));
if(target.stackTagCompound.hasKey("lockMod"))
nbt.setDouble("lockMod", target.stackTagCompound.getDouble("lockMod"));
if(target.stackTagCompound.hasKey("spiders"))
nbt.setBoolean("spiders", target.stackTagCompound.getBoolean("spiders")); // fuck you!!
/*if(target.stackTagCompound != null) { // yes it's a bit jank, but it wants to clear otherwise so...
if(target.stackTagCompound.hasKey("lock")) nbt.setInteger("lock", target.stackTagCompound.getInteger("lock"));
if(target.stackTagCompound.hasKey("lockMod")) nbt.setDouble("lockMod", target.stackTagCompound.getDouble("lockMod"));
if(target.stackTagCompound.hasKey("spiders")) nbt.setBoolean("spiders", target.stackTagCompound.getBoolean("spiders")); // fuck you!!
}*/
/*
* target and held item stacks constantly desync, not being the same reference, while still holding the same value.
* code was tested with a copy of the containment box code using the CB's GUI and container to no avail.
* hypothesis: minecraft's keybind handling has some special bullshit case for ItemBlocks, since that is the only difference in the test.
* solution (?): check equality, then just access the held stack directly. if not, pray the target reference is still accurate and use that.
*/
if(player.getHeldItem() != null && ItemStack.areItemStacksEqual(player.getHeldItem(), target)) {
player.getHeldItem().setTagCompound(checkNBT(nbt));
} else {
target.setTagCompound(checkNBT(nbt));
}
target.setTagCompound(checkNBT(nbt));
player.inventory.setInventorySlotContents(player.inventory.currentItem, target);
}
}
}

View File

@ -29,7 +29,6 @@ public class ItemLeadBox extends Item implements IGUIProvider {
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if(!world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0);
return stack;
}
@ -60,9 +59,6 @@ public class ItemLeadBox extends Item implements IGUIProvider {
if(fromNBT != null) {
System.arraycopy(fromNBT, 0, slots, 0, slots.length);
}
toMarkDirty = true;
this.markDirty();
toMarkDirty = false;
}
@Override

View File

@ -266,9 +266,6 @@ public class ItemToolBox extends Item implements IGUIProvider {
if(fromNBT != null) {
System.arraycopy(fromNBT, 0, slots, 0, slots.length);
}
toMarkDirty = true;
this.markDirty();
toMarkDirty = false;
}
@Override

View File

@ -69,7 +69,7 @@ public class XFactory12ga {
public static BulletConfig g12_magnum;
public static BulletConfig g12_explosive;
public static BulletConfig g12_phosphorus;
public static BulletConfig g12_anthrax;
//public static BulletConfig g12_anthrax;
public static BulletConfig g12_equestrian_bj;
public static BulletConfig g12_equestrian_tkr;
@ -265,7 +265,7 @@ public class XFactory12ga {
g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setDamage(0.75F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG"));
g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA"));
g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setCasing(EnumCasingType.BUCKSHOT, 6).setHeadshot(1.5F).setSpread(0.0F).setRicochetAngle(25).setThresholdNegation(4F).setArmorPiercing(0.15F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG"));
g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setThresholdNegation(3F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE"));
g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE"));
g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(magnumSpread).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM"));
g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setDamage(2.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE"));
g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(magnumSpread).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS"))

View File

@ -41,6 +41,7 @@ import net.minecraftforge.common.util.ForgeDirection;
public class XFactoryFlamer {
public static BulletConfig flame_nograv;
public static BulletConfig flame_nograv_bf;
public static BulletConfig flame_diesel;
public static BulletConfig flame_gas;
@ -120,6 +121,7 @@ public class XFactoryFlamer {
.setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE);
flame_nograv = flame_diesel.clone().setGrav(0);
flame_nograv_bf = flame_balefire.clone().setGrav(0).setLife(100);
flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D);
flame_topaz_gas = flame_gas .clone().setProjectiles(2).setSpread(0.05F);

View File

@ -349,13 +349,15 @@ public class ModEventHandler {
Map<Integer, List<WeightedRandomObject>> slotPools = new HashMap<>();
float soot = PollutionHandler.getPollution(entity.worldObj, MathHelper.floor_double(event.x), MathHelper.floor_double(event.y), MathHelper.floor_double(event.z), PollutionType.SOOT); //uhfgfg
if(entity instanceof EntityZombie) {
if(world.rand.nextFloat() < 0.005F) { // full hazmat zombine
if(world.rand.nextFloat() < 0.005F && soot > 2) { // full hazmat zombine
equipFullSet(entity, ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots);
return;
}
if(world.rand.nextFloat() < 0.005F) { // full security zombine
if(world.rand.nextFloat() < 0.005F && soot > 20) { // full security zombine
equipFullSet(entity, ModItems.security_helmet, ModItems.security_plate, ModItems.security_legs, ModItems.security_boots);
return;
}
@ -385,10 +387,8 @@ public class ModEventHandler {
{ModItems.alloy_axe, 5}, {ModItems.titanium_sword, 8}, {ModItems.lead_gavel, 4},
{ModItems.wrench, 20}, {ModItems.cobalt_decorated_sword, 2}, {ModItems.detonator_de, 1}
}));
} else if(entity instanceof EntitySkeleton) {
float soot = PollutionHandler.getPollution(entity.worldObj,
MathHelper.floor_double(event.x), MathHelper.floor_double(event.y), MathHelper.floor_double(event.z), PollutionType.SOOT); //uhfgfg
slotPools.put(4, createSlotPool(12000, new Object[][]{
{ModItems.gas_mask_m65, 16}, {ModItems.gas_mask_olde, 12}, {ModItems.mask_of_infamy, 8},
@ -412,7 +412,7 @@ public class ModEventHandler {
ItemStack bowReplacement = getSkelegun(soot, world.rand);
slotPools.put(0, createSlotPool(50, bowReplacement != null ? new Object[][]{{bowReplacement, 1}} : new Object[][]{}));
}
assignItemsToEntity(entity, slotPools);
}
@ -440,7 +440,7 @@ public class ModEventHandler {
}
private void assignItemsToEntity(EntityLivingBase entity, Map<Integer, List<WeightedRandomObject>> slotPools) {
public void assignItemsToEntity(EntityLivingBase entity, Map<Integer, List<WeightedRandomObject>> slotPools) {
for (Map.Entry<Integer, List<WeightedRandomObject>> entry : slotPools.entrySet()) {
int slot = entry.getKey();
List<WeightedRandomObject> pool = entry.getValue();
@ -655,14 +655,17 @@ public class ModEventHandler {
if(event.phase == Phase.END) {
for(Object e : event.world.loadedEntityList) {
List loadedEntityList = new ArrayList();
loadedEntityList.addAll(event.world.loadedEntityList); // ConcurrentModificationException my balls
for(Object e : loadedEntityList) {
if(e instanceof EntityItem) {
EntityItem item = (EntityItem) e;
HazardSystem.updateDroppedItem(item);
}
}
EntityRailCarBase.updateMotion(event.world);
}
}

View File

@ -984,11 +984,17 @@ public class ModEventHandlerClient {
ItemDepletedFuel.class,
ItemFluidDuct.class
);
String prefix = "Gun ";
int scale = 8;
boolean ignoreNonNTM = true;
List<ItemStack> stacks = new ArrayList<ItemStack>();
for (Object reg : Item.itemRegistry) {
Item item = (Item) reg;
if(ignoreNonNTM && !Item.itemRegistry.getNameForObject(item).startsWith("hbm:")) continue;
if(ignoredItems.contains(item)) continue;
if(!(item instanceof ItemGunBaseNT) && prefix.toLowerCase(Locale.US).startsWith("gun")) continue;
if(collapsedClasses.contains(item.getClass())) {
stacks.add(new ItemStack(item));
} else {
@ -996,7 +1002,7 @@ public class ModEventHandlerClient {
}
}
FMLCommonHandler.instance().showGuiScreen(new GUIScreenWikiRender(stacks.toArray(new ItemStack[0]), "Block ", "wiki-block-renders-256", 8));
FMLCommonHandler.instance().showGuiScreen(new GUIScreenWikiRender(stacks.toArray(new ItemStack[0]), prefix, "wiki-block-renders-256", scale));
}
} else {
isRenderingItems = false;

View File

@ -5,7 +5,6 @@ import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.entity.projectile.EntityBulletBaseMK4;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
@ -16,11 +15,9 @@ import com.hbm.inventory.gui.GUITurretFritz;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.XFactoryFlamer;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import api.hbm.fluid.IFluidStandardReceiver;
import com.hbm.tileentity.IFluidCopiable;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
@ -71,7 +68,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl
@Override
public double getDecetorRange() {
return 32D;
return 48D;
}
@Override
@ -112,18 +109,12 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl
vec.rotateAroundZ((float) -this.rotationPitch);
vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5));
EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, XFactoryFlamer.flame_nograv, (float) (trait.getHeatEnergy() / 500_000F), 0.05F, (float) rotationYaw, (float) rotationPitch);
float damage = Math.min((float) (trait.getHeatEnergy() / 500_000F), 20F);
EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, tank.getTankType() == Fluids.BALEFIRE ? XFactoryFlamer.flame_nograv_bf : XFactoryFlamer.flame_nograv, damage, 0.05F, (float) rotationYaw, (float) rotationPitch);
proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch);
worldObj.spawnEntityInWorld(proj);
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.flamethrowerShoot", 2F, 1F + worldObj.rand.nextFloat() * 0.5F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "vanillaburst");
data.setString("mode", "flame");
data.setInteger("count", 2);
data.setDouble("motion", 0.025D);
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50));
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB