and all that jazz

This commit is contained in:
Bob 2022-06-12 20:47:20 +02:00
parent debb9449cb
commit 8c1275206c
30 changed files with 746 additions and 42 deletions

View File

@ -1,11 +1,13 @@
package com.hbm.blocks.generic;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.ITooltipProvider;
import net.minecraft.block.Block;
import net.minecraft.block.IGrowable;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@ -17,7 +19,7 @@ import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, ITooltipProvider {
public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowable, ITooltipProvider {
public BlockNTMFlower() {
super(Material.plants, EnumFlowerType.class, true, true);
@ -97,6 +99,24 @@ public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IToolt
return meta;
}
/* grow condition */
@Override
public boolean func_149851_a(World world, int x, int y, int z, boolean b) {
return true;
}
/* chance */
@Override
public boolean func_149852_a(World p_149852_1_, Random p_149852_2_, int p_149852_3_, int p_149852_4_, int p_149852_5_) {
return true;
}
/* grow */
@Override
public void func_149853_b(World world, Random rand, int x, int y, int z) {
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { }
}

View File

@ -2,7 +2,11 @@ package com.hbm.blocks.network;
import api.hbm.conveyor.IConveyorBelt;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -46,4 +50,18 @@ public class BlockConveyorChute extends BlockConveyor {
public int getRenderType() {
return renderID;
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { }
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1);
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
return true;
}
}

View File

@ -2,7 +2,11 @@ package com.hbm.blocks.network;
import api.hbm.conveyor.IConveyorBelt;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -10,8 +14,11 @@ public class BlockConveyorLift extends BlockConveyor {
@Override
public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos, double speed) {
boolean bottom = !(world.getBlock(x, y - 1, z) instanceof IConveyorBelt);
boolean top = !(world.getBlock(x, y + 1, z) instanceof IConveyorBelt) && !bottom;
if(Math.abs(itemPos.xCoord - (x + 0.5)) < 0.05 && Math.abs(itemPos.zCoord - (z + 0.5)) < 0.05) {
if(!top) {
return ForgeDirection.DOWN;
}
@ -20,18 +27,51 @@ public class BlockConveyorLift extends BlockConveyor {
@Override
public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) {
if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt || itemPos.yCoord > y + 0.25) {
boolean bottom = !(world.getBlock(x, y - 1, z) instanceof IConveyorBelt);
boolean top = !(world.getBlock(x, y + 1, z) instanceof IConveyorBelt) && !bottom;
if(!top) {
return Vec3.createVectorHelper(x + 0.5, itemPos.yCoord, z + 0.5);
} else {
return super.getClosestSnappingPosition(world, x, y, z, itemPos);
}
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
boolean bottom = !(world.getBlock(x, y - 1, z) instanceof IConveyorBelt);
boolean top = !(world.getBlock(x, y + 1, z) instanceof IConveyorBelt) && !bottom;
if(top)
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
else
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
boolean bottom = !(world.getBlock(x, y - 1, z) instanceof IConveyorBelt);
boolean top = !(world.getBlock(x, y + 1, z) instanceof IConveyorBelt) && !bottom;
if(top)
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.5, z + 1);
else
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1);
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override
public int getRenderType() {
return renderID;
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
return true;
}
}

View File

@ -44,4 +44,9 @@ public class CraneExtractor extends BlockCraneBase {
return 0;
}
@Override
public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) {
return true;
}
}

View File

@ -10,6 +10,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
@ -135,6 +136,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock {
stack.stackSize += amount;
toAdd.stackSize -= amount;
inv.markDirty();
if(toAdd.stackSize == 0) {
return null;
@ -154,6 +156,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock {
newStack.stackSize = amount;
inv.setInventorySlotContents(index, newStack);
toAdd.stackSize -= amount;
inv.markDirty();
if(toAdd.stackSize == 0) {
return null;
@ -177,4 +180,14 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock {
return 0;
}
@Override
public boolean hasComparatorInputOverride() {
return true;
}
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
return Container.calcRedstoneFromInventory((TileEntityCraneInserter)world.getTileEntity(x, y, z));
}
}

View File

@ -0,0 +1,261 @@
package com.hbm.entity.effect;
import java.util.ArrayList;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
/*
* Toroidial Convection Simulation Explosion Effect
* Tor Ex
*/
public class EntityNukeTorex extends Entity {
public double coreHeight = 3;
public double convectionHeight = 3;
public double torusWidth = 3;
public double rollerSize = 1;
public double heat = 1;
public ArrayList<Cloudlet> cloudlets = new ArrayList();
public static int cloudletLife = 200;
public EntityNukeTorex(World world) {
super(world);
this.ignoreFrustumCheck = true;
}
@Override
protected void entityInit() { }
@Override
public void onUpdate() {
this.ticksExisted++;
int maxAge = 90 * 20;
if(worldObj.isRemote) {
double range = (torusWidth - rollerSize) * 0.25;
if(this.ticksExisted + cloudletLife * 2 < maxAge) {
for(int i = 0; i < 20; i++) {
double y = posY + rand.nextGaussian() - 3; //this.ticksExisted < 60 ? this.posY + this.coreHeight : posY + rand.nextGaussian() - 3;
Cloudlet cloud = new Cloudlet(posX + rand.nextGaussian() * range, y, posZ + rand.nextGaussian() * range, (float)(rand.nextDouble() * 2D * Math.PI), 0);
cloudlets.add(cloud);
}
}
int cloudCount = ticksExisted * 3;
if(ticksExisted < 200) {
for(int i = 0; i < cloudCount; i++) {
Vec3 vec = Vec3.createVectorHelper(ticksExisted + rand.nextDouble(), 0, 0);
float rot = (float) (Math.PI * 2 * rand.nextDouble());
vec.rotateAroundY(rot);
this.cloudlets.add(new Cloudlet(vec.xCoord + posX, worldObj.getHeightValue((int) (vec.xCoord + posX) + 2, (int) (vec.zCoord + posZ)), vec.zCoord + posZ, rot, 0));
}
}
for(Cloudlet cloud : cloudlets) {
cloud.update();
}
coreHeight += 0.15;
torusWidth += 0.05;
rollerSize = torusWidth * 0.35;
convectionHeight = coreHeight + rollerSize;
int maxHeat = 50;
heat = maxHeat - Math.pow((maxHeat * this.ticksExisted) / maxAge, 1);
cloudlets.removeIf(x -> x.isDead);
}
if(!worldObj.isRemote && this.ticksExisted > maxAge) {
this.setDead();
}
}
public class Cloudlet {
public double posX;
public double posY;
public double posZ;
public double prevPosX;
public double prevPosY;
public double prevPosZ;
public double motionX;
public double motionY;
public double motionZ;
public int age;
public float angle;
public boolean isDead = false;
float rangeMod = 1.0F;
public float colorMod = 1.0F;
public Vec3 color;
public Vec3 prevColor;
public Cloudlet(double posX, double posY, double posZ, float angle, int age) {
this.posX = posX;
this.posY = posY;
this.posZ = posZ;
this.age = age;
this.angle = angle;
this.rangeMod = 0.3F + rand.nextFloat() * 0.7F;
this.colorMod = 0.8F + rand.nextFloat() * 0.2F;
this.updateColor();
}
private void update() {
age++;
if(age > cloudletLife) {
this.isDead = true;
}
this.prevPosX = this.posX;
this.prevPosY = this.posY;
this.prevPosZ = this.posZ;
Vec3 simPos = Vec3.createVectorHelper(EntityNukeTorex.this.posX - this.posX, 0, EntityNukeTorex.this.posZ - this.posZ);
double simPosX = EntityNukeTorex.this.posX + simPos.lengthVector();
double simPosZ = EntityNukeTorex.this.posZ + 0D;
Vec3 convection = getConvectionMotion(simPosX, simPosZ);
Vec3 lift = getLiftMotion(simPosX, simPosZ);
double factor = MathHelper.clamp_double((this.posY - EntityNukeTorex.this.posY) / EntityNukeTorex.this.coreHeight, 0, 1);
this.motionX = convection.xCoord * factor + lift.xCoord * (1D - factor);
this.motionY = convection.yCoord * factor + lift.yCoord * (1D - factor);
this.motionZ = convection.zCoord * factor + lift.zCoord * (1D - factor);
if(EntityNukeTorex.this.ticksExisted > 45 * 20) {
int timeLeft = 1600 - EntityNukeTorex.this.ticksExisted;
double scaled = Math.max((double) timeLeft / 900D, 0);
this.motionX *= scaled;
this.motionY *= scaled;
this.motionZ *= scaled;
}
this.posX += this.motionX;
this.posY += this.motionY;
this.posZ += this.motionZ;
this.updateColor();
}
/* simulated on a 2D-plane along the X/Y axis */
private Vec3 getConvectionMotion(double simPosX, double simPosZ) {
if(simPosX > EntityNukeTorex.this.posX + torusWidth * 2)
return Vec3.createVectorHelper(0, 0, 0);
/* the position of the torus' outer ring center */
Vec3 torusPos = Vec3.createVectorHelper(
(EntityNukeTorex.this.posX + torusWidth),
(EntityNukeTorex.this.posY + coreHeight),
EntityNukeTorex.this.posZ);
/* the difference between the cloudlet and the torus' ring center */
Vec3 delta = Vec3.createVectorHelper(torusPos.xCoord - simPosX, torusPos.yCoord - this.posY, torusPos.zCoord - simPosZ);
/* the distance this cloudlet wants to achieve to the torus' ring center */
double roller = EntityNukeTorex.this.rollerSize * this.rangeMod;
/* the distance between this cloudlet and the torus' outer ring perimeter */
double dist = delta.lengthVector() / roller - 1D;
/* euler function based on how far the cloudlet is away from the perimeter */
double func = 1D - Math.pow(Math.E, -dist); // [0;1]
/* just an approximation, but it's good enough */
float angle = (float) (func * Math.PI * 0.5D); // [0;90°]
/* vector going from the ring center in the direction of the cloudlet, stopping at the perimeter */
Vec3 rot = Vec3.createVectorHelper(-delta.xCoord / dist, -delta.yCoord / dist, -delta.zCoord / dist);
/* rotate by the approximate angle */
rot.rotateAroundZ(angle);
/* the direction from the cloudlet to the target position on the perimeter */
Vec3 motion = Vec3.createVectorHelper(
torusPos.xCoord + rot.xCoord - simPosX,
torusPos.yCoord + rot.yCoord - this.posY,
torusPos.zCoord + rot.zCoord - simPosZ);
motion = motion.normalize();
motion.rotateAroundY(this.angle);
return motion;
}
private Vec3 getLiftMotion(double simPosX, double simPosZ) {
double scale = MathHelper.clamp_double(1D - (simPosX - (EntityNukeTorex.this.posX + torusWidth)), 0, 1);
Vec3 motion = Vec3.createVectorHelper(EntityNukeTorex.this.posX - this.posX, (EntityNukeTorex.this.posY + convectionHeight) - this.posY, EntityNukeTorex.this.posZ - this.posZ);
motion = motion.normalize();
motion.xCoord *= scale;
motion.yCoord *= scale;
motion.zCoord *= scale;
return motion;
}
private void updateColor() {
this.prevColor = this.color;
double exX = EntityNukeTorex.this.posX;
double exY = EntityNukeTorex.this.posY + EntityNukeTorex.this.coreHeight;
double exZ = EntityNukeTorex.this.posZ;
double distX = exX - posX;
double distY = exY - posY;
double distZ = exZ - posZ;
double distSq = distX * distX + distY * distY + distZ * distZ;
distSq /= EntityNukeTorex.this.heat;
double dist = Math.sqrt(distSq);
dist = Math.max(dist, 1);
double col = 2D / dist;
//col *= col;
this.color = Vec3.createVectorHelper(
Math.max(col * 2, 0.25),
Math.max(col * 1.5, 0.25),
Math.max(col * 0.5, 0.25)
);
}
public Vec3 getInterpPos(float interp) {
return Vec3.createVectorHelper(
prevPosX + (posX - prevPosX) * interp,
prevPosY + (posY - prevPosY) * interp,
prevPosZ + (posZ - prevPosZ) * interp);
}
public Vec3 getInterpColor(float interp) {
return Vec3.createVectorHelper(
prevColor.xCoord + (color.xCoord - prevColor.xCoord) * interp,
prevColor.yCoord + (color.yCoord - prevColor.yCoord) * interp,
prevColor.zCoord + (color.zCoord - prevColor.zCoord) * interp);
}
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbt) { }
@Override
protected void writeEntityToNBT(NBTTagCompound nbt) { }
@Override
@SideOnly(Side.CLIENT)
public boolean isInRangeToRenderDist(double distance) {
return distance < 25000;
}
}

View File

@ -35,7 +35,7 @@ public class EntityMovingItem extends Entity implements IConveyorItem {
public EntityMovingItem(World p_i1582_1_) {
super(p_i1582_1_);
this.setSize(0.5F, 0.5F);
this.setSize(0.375F, 0.375F);
this.noClip = true;
}

View File

@ -66,11 +66,8 @@ public class EntityMinerRocket extends Entity {
}
}
if(dataWatcher.getWatchableObjectInt(16) != 1) {
if(ticksExisted % 2 == 0) {
ParticleUtil.spawnGasFlame(worldObj, posX, posY - 0.5, posZ, 0.0, -1.0, 0.0);
}
if(dataWatcher.getWatchableObjectInt(16) != 1 && !worldObj.isRemote && ticksExisted % 2 == 0) {
ParticleUtil.spawnGasFlame(worldObj, posX, posY - 0.5, posZ, 0.0, -1.0, 0.0);
}
if(dataWatcher.getWatchableObjectInt(16) == 2 && posY > 300)

View File

@ -28,6 +28,9 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
public int totalDashCount = 0;
public int stamina = 0;
public static final int plinkCooldownLength = 10;
public int plinkCooldown = 0;
public HbmPlayerProps(EntityPlayer player) {
this.player = player;
}
@ -103,6 +106,15 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
public int getDashCount() {
return this.totalDashCount;
}
public static void plink(EntityPlayer player, String sound, float volume, float pitch) {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(props.plinkCooldown <= 0) {
player.worldObj.playSoundAtEntity(player, sound, volume, pitch);
props.plinkCooldown = props.plinkCooldownLength;
}
}
@Override
public void init(Entity entity, World world) { }

View File

@ -83,8 +83,9 @@ public class EntityEffectHandler {
handleRadiation(entity);
handleDigamma(entity);
handleLungDisease(entity);
handleDashing(entity);
handlePlinking(entity);
}
private static void handleContamination(EntityLivingBase entity) {
@ -517,4 +518,15 @@ public class EntityEffectHandler {
}
}
private static void handlePlinking(Entity entity) {
if(entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)entity;
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(props.plinkCooldown > 0)
props.plinkCooldown--;
}
}
}

View File

@ -239,7 +239,7 @@ public class GUIRBMKConsole extends GuiScreen {
drawTexturedModalRect(guiLeft + x, guiTop + y, tX, tY, size, size);
int h = (int)Math.ceil((col.data.getDouble("heat") - 20) * 10 / col.data.getDouble("maxHeat"));
int h = Math.min((int)Math.ceil((col.data.getDouble("heat") - 20) * 10 / col.data.getDouble("maxHeat")), 10);
drawTexturedModalRect(guiLeft + x, guiTop + y + size - h, 0, 192 - h, 10, h);
switch(col.type) {

View File

@ -9,20 +9,20 @@ import net.minecraft.util.IIcon;
public class ItemGenericPart extends ItemEnumMulti {
public static enum EnumPartTpe {
public static enum EnumPartType {
PISTON_PNEUMATIC("piston_pneumatic"),
PISTON_HYDRAULIC("piston_hydraulic"),
PISTON_ELECTRIC("piston_electric");
private String texName;
private EnumPartTpe(String texName) {
private EnumPartType(String texName) {
this.texName = texName;
}
}
public ItemGenericPart() {
super(EnumPartTpe.class, true, true);
super(EnumPartType.class, true, true);
}
@SideOnly(Side.CLIENT)
@ -32,7 +32,7 @@ public class ItemGenericPart extends ItemEnumMulti {
this.icons = new IIcon[enums.length];
for(int i = 0; i < icons.length; i++) {
EnumPartTpe num = (EnumPartTpe)enums[i];
EnumPartType num = (EnumPartType)enums[i];
this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + num.texName);
}
}

View File

@ -141,7 +141,9 @@ public class ArmorDNT extends ArmorFSBPowered {
return;
}
e.worldObj.playSoundAtEntity(e, "random.break", 5F, 1.0F + e.getRNG().nextFloat() * 0.5F);
//e.worldObj.playSoundAtEntity(e, "random.break", 5F, 1.0F + e.getRNG().nextFloat() * 0.5F);
HbmPlayerProps.plink(player, "random.break", 0.5F, 1.0F + e.getRNG().nextFloat() * 0.5F);
event.setCanceled(true);
}
}

View File

@ -3,6 +3,7 @@ package com.hbm.items.tool;
import java.util.List;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.mob.siege.EntitySiegeTunneler;
import com.hbm.items.ModItems;
import com.hbm.items.special.ItemKitCustom;
@ -30,6 +31,10 @@ public class ItemWandD extends Item {
if(pos != null) {
EntityNukeTorex torex = new EntityNukeTorex(world);
torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0);
world.spawnEntityInWorld(torex);
/*EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world);
tunneler.setPosition(pos.blockX, pos.blockY + 1, pos.blockZ);
tunneler.onSpawnWithEgg(null);
@ -37,7 +42,7 @@ public class ItemWandD extends Item {
//CellularDungeonFactory.meteor.generate(world, x, y, z, world.rand);
int r = 5;
/*int r = 5;
int x = pos.blockX;
int y = pos.blockY;
@ -49,7 +54,7 @@ public class ItemWandD extends Item {
world.getBlock(i, j, k).updateTick(world, i, j, k, world.rand);
}
}
}
}*/
//new Bunker().generate(world, world.rand, x, y, z);

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings {
public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (4251)";
public static final String VERSION = "1.0.27 BETA (4263)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -624,6 +624,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast());
RenderingRegistry.registerEntityRenderingHandler(EntityNukeExplosionAdvanced.class, new RenderSnowball(ModItems.energy_ball));
RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear());
RenderingRegistry.registerEntityRenderingHandler(EntityNukeTorex.class, new RenderTorex());
//minecarts
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart());

View File

@ -16,7 +16,7 @@ import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ModItems;
import com.hbm.items.ItemEnums.EnumLegendaryType;
import com.hbm.items.ItemEnums.EnumPlantType;
import com.hbm.items.ItemGenericPart.EnumPartTpe;
import com.hbm.items.ItemGenericPart.EnumPartType;
import com.hbm.items.machine.ItemBattery;
import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
@ -237,10 +237,12 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.ducttape, 6), new Object[] { "FSF", "SPS", "FSF", 'F', Items.string, 'S', KEY_SLIME, 'P', Items.paper });
addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() });
addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() });
addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() });
addRecipeAuto(new ItemStack(ModBlocks.conveyor_chute, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.steel_grate, 'C', ModBlocks.conveyor });
addRecipeAuto(new ItemStack(ModBlocks.conveyor_lift, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.chain, 'C', ModBlocks.conveyor });
//addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "T T", "PHP", "TFT", 'T', W.ingot(), 'P', ModItems.board_copper, 'H', Blocks.hopper, 'F', Blocks.furnace });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), 1), new Object[] { "WTW", "WTW", "SRS", 'S', IRON.plate(), 'W', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'W', ModItems.coil_tungsten,'R', MINGRADE.ingot() });
@ -770,7 +772,14 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.ACID.getID()), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer });
addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen });
addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"GNG", "RUR", "GMG", 'R', RUBBER.ingot(), 'M', ModItems.motor, 'G', ModItems.coil_gold, 'N', TCALLOY.ingot(), 'U', ModItems.upgrade_template});
addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_aluminium, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template });
addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_copper, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 0) });
addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_red_copper, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 1) });
addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_copper, 'P', ModItems.motor, 'U', ModItems.upgrade_template });
addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_gold, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector, 1, 0) });
addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_saturnite, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector, 1, 1) });
addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key });
addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm });
@ -917,9 +926,9 @@ public class CraftingManager {
addShapelessAuto(new ItemStack(ModItems.canister_full, 1, Fluids.BIOFUEL.getID()), new Object[] { ModItems.canister_biofuel });
addShapelessAuto(new ItemStack(ModItems.canister_full, 1, Fluids.ETHANOL.getID()), new Object[] { ModItems.canister_ethanol });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartTpe.PISTON_PNEUMATIC, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartTpe.PISTON_HYDRAULIC, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', Fluids.LUBRICANT.getDict(1000) });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartTpe.PISTON_ELECTRIC, 4), new Object[] { " I ", "CPC", " I ", 'I', TCALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', Fluids.LUBRICANT.getDict(1000) });
addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC, 4), new Object[] { " I ", "CPC", " I ", 'I', TCALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor });
Object[] craneCasing = new Object[] {
Blocks.stonebrick, 1,
@ -931,7 +940,7 @@ public class CraftingManager {
Object casing = craneCasing[i * 2];
int amount = (int) craneCasing[i * 2 + 1];
addRecipeAuto(new ItemStack(ModBlocks.crane_inserter, amount), new Object[] { "CCC", "C C", "CBC", 'C', casing, 'B', ModBlocks.conveyor });
addRecipeAuto(new ItemStack(ModBlocks.crane_extractor, amount), new Object[] { "CCC", "CPC", "CBC", 'C', casing, 'B', ModBlocks.conveyor, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartTpe.PISTON_PNEUMATIC) });
addRecipeAuto(new ItemStack(ModBlocks.crane_extractor, amount), new Object[] { "CCC", "CPC", "CBC", 'C', casing, 'B', ModBlocks.conveyor, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC) });
}
addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite });

View File

@ -501,6 +501,7 @@ public class MainRegistry {
EntityRegistry.registerModEntity(EntityMagnusCartus.class, "entity_ntm_cart_chungoid", 174, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMinecartPowder.class, "entity_ntm_cart_powder", 175, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMinecartSemtex.class, "entity_ntm_cart_semtex", 176, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityNukeTorex.class, "entity_effect_torex", 177, this, 250, 1, false);
EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00);
EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd);

View File

@ -907,7 +907,7 @@ public class ModEventHandler {
EntityPlayer player = (EntityPlayer) e;
if(ArmorUtil.checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) {
e.worldObj.playSoundAtEntity(e, "random.break", 5F, 1.0F + e.getRNG().nextFloat() * 0.5F);
HbmPlayerProps.plink(player, "random.break", 0.5F, 1.0F + e.getRNG().nextFloat() * 0.5F);
event.setCanceled(true);
}

View File

@ -64,8 +64,8 @@ public class RenderConveyorChute implements ISimpleBlockRenderingHandler {
double maxOuter = 1.0;
double minInner = 0.25;
double maxInner = 0.75;
double glassMin = 0.1875;
double glassMax = 0.8175;
double glassMin = 0.125;
double glassMax = 0.875;
renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, minInner); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer);
renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, minInner); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer);
@ -78,7 +78,6 @@ public class RenderConveyorChute implements ISimpleBlockRenderingHandler {
renderer.setRenderBounds(glassMin, 0.25, minInner, glassMin, 1.0, maxInner); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer);
renderer.setRenderBounds(glassMax, 0.25, minInner, glassMax, 1.0, maxInner); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer);
renderer.setRenderBounds(minInner, 0.25, glassMin, maxInner, 1.0, glassMin); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer);
renderer.setRenderBounds(minInner, 0.25, glassMax, maxInner, 1.0, glassMax); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer);
tessellator.draw();
@ -205,8 +204,8 @@ public class RenderConveyorChute implements ISimpleBlockRenderingHandler {
renderer.setRenderBounds(minOuter, 0.0, maxInner, minInner, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, maxInner, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
double glassMin = 0.1875;
double glassMax = 0.8175;
double glassMin = 0.125;
double glassMax = 0.875;
renderer.setOverrideBlockTexture(iconGlass);
if(!nX && (!belt || meta != 5)) { renderer.setRenderBounds(glassMin, belt ? 0.25 : 0.0, minInner, glassMin, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z); }

View File

@ -1,10 +1,15 @@
package com.hbm.render.block;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.network.BlockConveyorLift;
import api.hbm.conveyor.IConveyorBelt;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.init.Blocks;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
public class RenderConveyorLift implements ISimpleBlockRenderingHandler {
@ -16,12 +21,156 @@ public class RenderConveyorLift implements ISimpleBlockRenderingHandler {
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
return false;
Tessellator tessellator = Tessellator.instance;
int meta = world.getBlockMetadata(x, y, z);
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
boolean isBottom = false;
boolean isTop = false;
IIcon iconConcrete = ModBlocks.concrete_smooth.getIcon(0, 0);
IIcon iconIron = Blocks.iron_block.getIcon(0, 0);
IIcon iconBelt = block.getIcon(0, 0);
if(y > 0) {
Block below = world.getBlock(x, y - 1, z);
if(!(below instanceof IConveyorBelt)) {
renderer.setOverrideBlockTexture(iconBelt);
if(meta != 5) {
renderer.uvRotateTop = 1;
renderer.uvRotateBottom = 1;
renderer.setRenderBounds(0.0D, 0.0D, 0.25D, 0.25D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z);
}
if(meta != 4) {
renderer.uvRotateTop = 2;
renderer.uvRotateBottom = 2;
renderer.setRenderBounds(0.75D, 0.0D, 0.25D, 1.0D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z);
}
if(meta != 3) {
renderer.uvRotateTop = 3;
renderer.uvRotateBottom = 0;
renderer.setRenderBounds(0.25D, 0.0D, 0.0D, 0.75D, 0.25D, 0.25D); renderer.renderStandardBlock(block, x, y, z);
}
if(meta != 2) {
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 3;
renderer.setRenderBounds(0.25D, 0.0D, 0.75D, 0.75D, 0.25D, 1.0D); renderer.renderStandardBlock(block, x, y, z);
}
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
renderer.clearOverrideBlockTexture();
isBottom = true;
}
}
if(y < 255) {
Block above = world.getBlock(x, y + 1, z);
isTop = !(above instanceof IConveyorBelt) && !isBottom;
}
double minOuter = 0.0;
double maxOuter = 1.0;
double minInner = 0.25;
double maxInner = 0.75;
renderer.setOverrideBlockTexture(iconConcrete);
if(!isTop) {
if(meta == 2) {
renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(minOuter, 0.0, maxInner, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setOverrideBlockTexture(iconBelt);
renderer.uvRotateTop = 3;
renderer.setRenderBounds(minInner, 0.0, maxInner - 0.125, maxInner, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z);
}
if(meta == 3) {
renderer.setRenderBounds(minOuter, 0.0, minOuter, maxOuter, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(minOuter, 0.0, maxInner, minInner, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, maxInner, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setOverrideBlockTexture(iconBelt);
renderer.uvRotateTop = 0;
renderer.setRenderBounds(minInner, 0.0, minInner, maxInner, 1.0, minInner + 0.125); renderer.renderStandardBlock(block, x, y, z);
}
if(meta == 4) {
renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(minOuter, 0.0, maxInner, minInner, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setOverrideBlockTexture(iconBelt);
renderer.uvRotateTop = 1;
renderer.setRenderBounds(maxInner - 0.125, 0.0, minInner, maxInner, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z);
}
if(meta == 5) {
renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, maxInner, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setOverrideBlockTexture(iconBelt);
renderer.uvRotateTop = 2;
renderer.setRenderBounds(minInner, 0.0, minInner, minInner + 0.125, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z);
}
} else {
if(meta == 2 || meta == 3) {
renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 0.5, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 0.5, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.clearOverrideBlockTexture();
if(meta == 2) {
renderer.uvRotateTop = 3;
renderer.uvRotateWest = 3;
renderer.setRenderBounds(minInner, 0.0, maxInner - 0.125, maxInner, 0.25, maxOuter); renderer.renderStandardBlock(block, x, y, z);
} else {
renderer.uvRotateTop = 0;
renderer.uvRotateEast = 3;
renderer.setRenderBounds(minInner, 0.0, minOuter, maxInner, 0.25, minInner + 0.125); renderer.renderStandardBlock(block, x, y, z);
}
}
if(meta == 4 || meta == 5) {
renderer.setRenderBounds(minOuter, 0.0, minOuter, maxOuter, 0.5, minInner); renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(minOuter, 0.0, maxInner, maxOuter, 0.5, maxOuter); renderer.renderStandardBlock(block, x, y, z);
renderer.clearOverrideBlockTexture();
if(meta == 4) {
renderer.uvRotateTop = 1;
renderer.uvRotateSouth = 3;
renderer.setRenderBounds(maxInner - 0.125, 0.0, minInner, maxOuter, 0.25, maxInner); renderer.renderStandardBlock(block, x, y, z);
} else {
renderer.uvRotateTop = 2;
renderer.uvRotateNorth = 3;
renderer.setRenderBounds(minOuter, 0.0, minInner, minInner + 0.125, 0.25, maxInner); renderer.renderStandardBlock(block, x, y, z);
}
}
}
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
renderer.uvRotateNorth = 0;
renderer.uvRotateSouth = 0;
renderer.uvRotateEast = 0;
renderer.uvRotateWest = 0;
if(isBottom) {
renderer.setOverrideBlockTexture(iconIron);
renderer.setRenderBounds(0.25 + (meta == 5 ? 0.125 : 0), 0, 0.25 + (meta == 3 ? 0.125 : 0), 0.75 - (meta == 4 ? 0.125 : 0), 0.25, 0.75 - (meta == 2 ? 0.125 : 0)); renderer.renderStandardBlock(block, x, y, z);
}
renderer.clearOverrideBlockTexture();
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
return false;
}
@Override

View File

@ -0,0 +1,113 @@
package com.hbm.render.entity.effect;
import java.util.ArrayList;
import java.util.Comparator;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.effect.EntityNukeTorex.Cloudlet;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3;
public class RenderTorex extends Render {
private static final ResourceLocation cloudlet = new ResourceLocation(RefStrings.MODID + ":textures/particle/particle_base.png");
@Override
public void doRender(Entity entity, double x, double y, double z, float f0, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
EntityNukeTorex cloud = (EntityNukeTorex)entity;
cloudletWrapper(cloud, interp);
GL11.glPopMatrix();
}
private Comparator cloudSorter = new Comparator() {
@Override
public int compare(Object arg0, Object arg1) {
Cloudlet first = (Cloudlet) arg0;
Cloudlet second = (Cloudlet) arg1;
EntityPlayer player = MainRegistry.proxy.me();
double dist1 = player.getDistanceSq(first.posX, first.posY, first.posZ);
double dist2 = player.getDistanceSq(second.posX, second.posY, second.posZ);
return dist1 > dist2 ? -1 : dist1 == dist2 ? 0 : 1;
}
};
private void cloudletWrapper(EntityNukeTorex cloud, float interp) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
// To prevent particles cutting off before fully fading out
GL11.glAlphaFunc(GL11.GL_GREATER, 0);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glDepthMask(false);
RenderHelper.disableStandardItemLighting();
bindTexture(cloudlet);
Tessellator tess = Tessellator.instance;
tess.startDrawingQuads();
ArrayList<Cloudlet> cloudlets = new ArrayList(cloud.cloudlets);
cloudlets.sort(cloudSorter);
for(Cloudlet cloudlet : cloudlets) {
Vec3 vec = cloudlet.getInterpPos(interp);
tessellateCloudlet(tess, vec.xCoord - cloud.posX, vec.yCoord - cloud.posY, vec.zCoord - cloud.posZ, cloudlet, interp);
}
tess.draw();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_ALPHA_TEST);
RenderHelper.enableStandardItemLighting();
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
private void tessellateCloudlet(Tessellator tess, double posX, double posY, double posZ, Cloudlet cloud, float interp) {
float alpha = 1F - ((float)cloud.age / (float)EntityNukeTorex.cloudletLife);
float scale = 1F + ((float)cloud.age / (float)EntityNukeTorex.cloudletLife) * 5;
float f1 = ActiveRenderInfo.rotationX;
float f2 = ActiveRenderInfo.rotationZ;
float f3 = ActiveRenderInfo.rotationYZ;
float f4 = ActiveRenderInfo.rotationXY;
float f5 = ActiveRenderInfo.rotationXZ;
//Random rand = new Random((long) ((posX * 5 + posY * 25 + posZ * 125) * 1000D));
float brightness = 0.75F * cloud.colorMod;
Vec3 color = cloud.getInterpColor(interp);
tess.setColorRGBA_F((float)color.xCoord * brightness, (float)color.yCoord * brightness, (float)color.zCoord * brightness, alpha);
tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1);
tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0);
tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0);
tess.addVertexWithUV((double) (posX + f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ + f2 * scale - f4 * scale), 0, 1);
}
@Override
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
return null;
}
}

View File

@ -64,17 +64,17 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
rod.updateHeat(worldObj, slots[0], 1.0D);
this.heat += rod.provideHeat(worldObj, slots[0], heat, 1.0D);
if(this.heat > this.maxHeat() && !RBMKDials.getMeltdownsDisabled(worldObj)) {
this.meltdown();
return;
}
if(!this.hasLid()) {
ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) ((this.fluxFast + this.fluxSlow) * 0.05F));
}
super.updateEntity();
if(this.heat > this.maxHeat() && !RBMKDials.getMeltdownsDisabled(worldObj)) {
this.meltdown();
return;
}
//for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back
this.fluxFast = 0;
this.fluxSlow = 0;

View File

@ -55,7 +55,16 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I
}
}
if(worldObj.getTotalWorldTime() % delay == 0) {
boolean powered = false;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if(this.worldObj.isBlockIndirectlyGettingPowered(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ)) {
powered = true;
break;
}
}
if(worldObj.getTotalWorldTime() % delay == 0 && !powered) {
int amount = 1;
if(slots[18] != null && slots[18].getItem() == ModItems.upgrade_stack) {

View File

@ -56,6 +56,7 @@ public class TileEntityCraneInserter extends TileEntityMachineBase implements IG
if(ret == null || ret.stackSize != stack.stackSize) {
slots[i] = ret;
this.markDirty();
break;
}
}

View File

@ -1,5 +1,6 @@
package com.hbm.util;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
@ -16,6 +17,14 @@ public class ParticleUtil {
data.setDouble("mX", mX);
data.setDouble("mY", mY);
data.setDouble("mZ", mZ);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150));
if(world.isRemote) {
data.setDouble("posX", x);
data.setDouble("posY", y);
data.setDouble("posZ", z);
MainRegistry.proxy.effectNT(data);
} else {
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150));
}
}
}

View File

@ -216,6 +216,8 @@ container.bombMulti=Mehrzweckbombe
container.centrifuge=Zentrifuge
container.chemplant=Chemiewerk
container.compactLauncher=Kompakt-Startrampe
container.craneExtractor=Förderband-Auswerfer
container.craneInserter=Förderband-Einsetzer
container.crateDesh=Deshkiste
container.crateIron=Eisenkiste
container.crateSteel=Stahlkiste
@ -2768,6 +2770,9 @@ item.upgrade_crystallizer.name=Kristallisiererupgrade
item.upgrade_effect_1.name=Effektupgrade Mk.I
item.upgrade_effect_2.name=Effektupgrade Mk.II
item.upgrade_effect_3.name=Effektupgrade Mk.III
item.upgrade_ejector_1.name=Auswurfupgrade Mk.I
item.upgrade_ejector_2.name=Auswurfupgrade Mk.II
item.upgrade_ejector_3.name=Auswurfupgrade Mk.III
item.upgrade_fortune_1.name=Glückupgrade Mk.I
item.upgrade_fortune_2.name=Glückupgrade Mk.II
item.upgrade_fortune_3.name=Glückupgrade Mk.III
@ -2786,6 +2791,9 @@ item.upgrade_smelter.name=Ofenupgrade
item.upgrade_speed_1.name=Geschwindigkeitsupgrade Mk.I
item.upgrade_speed_2.name=Geschwindigkeitsupgrade Mk.II
item.upgrade_speed_3.name=Geschwindigkeitsupgrade Mk.III
item.upgrade_stack_1.name=Stapelupgrade Mk.I
item.upgrade_stack_2.name=Stapelupgrade Mk.II
item.upgrade_stack_3.name=Stapelupgrade Mk.III
item.upgrade_template.name=Maschinenupgrade-Vorlage
item.v1.name=V1
item.volcanic_pickaxe.name=Geschmolzene Spitzhacke
@ -3115,7 +3123,13 @@ tile.concrete_smooth.name=Beton
tile.concrete_super.name=Super Beton
tile.concrete_super_broken.name=Schimmliger Schutt
tile.conveyor.name=Förderband
tile.conveyor_chute.name=Förderschütte
tile.conveyor_double.name=Zweispuriges Förderband
tile.conveyor_lift.name=Kettenaufzug
tile.conveyor_triple.name=Dreispuriges Förderband
tile.corium_block.name=Corium
tile.crane_extractor.name=Förderband-Auswerfer
tile.crane_inserter.name=Förderband-Einsetzer
tile.crashed_bomb.name=Blindgänger
tile.crate.name=Vorratskiste
tile.crate_ammo.name=Sternenmetallkiste

View File

@ -392,6 +392,8 @@ container.bombMulti=Multi Purpose Bomb
container.centrifuge=Centrifuge
container.chemplant=Chemical Plant
container.compactLauncher=Compact Launch Pad
container.craneExtractor=Conveyor Extractor
container.craneInserter=Conveyor Inserter
container.crateDesh=Desh Crate
container.crateIron=Iron Crate
container.crateSteel=Steel Crate
@ -3147,6 +3149,9 @@ item.upgrade_crystallizer.name=Crystallizer Upgrade
item.upgrade_effect_1.name=Effectiveness Upgrade Mk.I
item.upgrade_effect_2.name=Effectiveness Upgrade Mk.II
item.upgrade_effect_3.name=Effectiveness Upgrade Mk.III
item.upgrade_ejector_1.name=Ejection Speed Upgrade Mk.I
item.upgrade_ejector_2.name=Ejection Speed Upgrade Mk.II
item.upgrade_ejector_3.name=Ejection Speed Upgrade Mk.III
item.upgrade_fortune_1.name=Fortune Upgrade Mk.I
item.upgrade_fortune_2.name=Fortune Upgrade Mk.II
item.upgrade_fortune_3.name=Fortune Upgrade Mk.III
@ -3166,6 +3171,9 @@ item.upgrade_smelter.name=Smelter Upgrade
item.upgrade_speed_1.name=Speed Upgrade Mk.I
item.upgrade_speed_2.name=Speed Upgrade Mk.II
item.upgrade_speed_3.name=Speed Upgrade Mk.III
item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I
item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II
item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III
item.upgrade_template.name=Machine Upgrade Template
item.v1.name=V1
item.volcanic_pickaxe.name=Molten Pickaxe
@ -3507,7 +3515,13 @@ tile.concrete_smooth.name=Concrete
tile.concrete_super.name=Über Concrete
tile.concrete_super_broken.name=Moldy Debris
tile.conveyor.name=Conveyor Belt
tile.conveyor_chute.name=Conveyor Chute
tile.conveyor_double.name=Double-Lane Conveyor Belt
tile.conveyor_lift.name=Conveyor Chain Lift
tile.conveyor_triple.name=Triple-Lane Conveyor Belt
tile.corium_block.name=Corium
tile.crane_extractor.name=Conveyor Ejector
tile.crane_inserter.name=Conveyor Inserter
tile.crashed_bomb.name=Dud
tile.crate.name=Supply Crate
tile.crate_ammo.name=Starmetal Crate

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

View File

@ -3,7 +3,7 @@
"modid": "hbm",
"name": "Hbm's Nuclear Tech",
"description": "A mod that adds weapons, nuclear themed stuff and machines",
"version":"1.0.27_X4251",
"version":"1.0.27_X4263",
"mcversion": "1.7.10",
"url": "",
"updateUrl": "",