mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
mostly fixes, supply crate changes
This commit is contained in:
parent
4c3945c924
commit
53c6c1ab77
14
changelog
14
changelog
@ -27,7 +27,8 @@
|
||||
* Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds
|
||||
* Comes with a new and improved 3D model as well as a cylinder gap flash when firing
|
||||
* Is now part of the red room loot pool
|
||||
* Durability has been drastically increased
|
||||
* Durability has been drastically increased (31k instead of 4k)
|
||||
* The boxcar now has new impact sounds and spawns fewer particles
|
||||
* Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable
|
||||
* Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick
|
||||
* Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system
|
||||
@ -35,11 +36,20 @@
|
||||
* Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts
|
||||
* Bolts are oredicted and interchangeable, as well as recycleable in the crucible
|
||||
* The N45 naval mine has been obliterated
|
||||
* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabaled
|
||||
* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabled
|
||||
* The solar boiler's internal buffer has been reduced, its steam output is now capped at 10,000mB/t (which should be 20kHE/t or 0.8MHE/s)
|
||||
* All crates except the jungle dungeon one now drop themselves when mined
|
||||
* Supply and conserve crates do not need a tool because they are made of wood, the ammo crate requires a pickaxe
|
||||
* All of those crates are now opened with the crowbar instead in order to be consistent with each other
|
||||
* Standard gauge rails are now craftable and visible in the transportation tab
|
||||
* You can now play around with the new rail types in creative mode, as none of the train cars are currently craftable
|
||||
* Coupling should work, but coupling info is not saved to NBT so links will be lost when leaving the world
|
||||
* Trains might randomly derail on 5m curves, idk why
|
||||
|
||||
## Fixed
|
||||
* Fixed afterburn upgrades not being craftable with bakelite
|
||||
* Fixed bismuth block not being properly oredicted
|
||||
* Powder detectors that are used in the same network as diodes should now be somewhat less wrong
|
||||
* Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors
|
||||
* Fixed file cabinets not dropping their contents
|
||||
* Fixed some sides of the pedestal not rendering
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4824
|
||||
mod_build_number=4837
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
|
||||
|
||||
@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
@ -38,11 +39,31 @@ public class BlockAmmoCrate extends Block {
|
||||
public IIcon getIcon(int side, int metadata) {
|
||||
return side == 0 ? this.iconBottom : (side == 1 ? this.iconTop : this.blockIcon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) {
|
||||
if(!world.isRemote) {
|
||||
dropContents(world, x, y, z);
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Random rand = new Random();
|
||||
|
||||
@Override
|
||||
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
|
||||
public void dropContents(World world, int x, int y, int z) {
|
||||
ArrayList<ItemStack> items = getContents(world, x, y, z);
|
||||
|
||||
for(ItemStack item : items) {
|
||||
this.dropBlockAsItem(world, x, y, z, item);
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList<ItemStack> getContents(World world, int x, int y, int z) {
|
||||
|
||||
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
|
||||
|
||||
@ -11,9 +11,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockCanCrate extends Block {
|
||||
@ -21,79 +19,77 @@ public class BlockCanCrate extends Block {
|
||||
public BlockCanCrate(Material p_i45394_1_) {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return renderID;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
|
||||
|
||||
if(world.isRemote)
|
||||
{
|
||||
player.addChatMessage(new ChatComponentText("The one crate you are allowed to smash!"));
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) {
|
||||
if(!world.isRemote) {
|
||||
dropContents(world, x, y, z);
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
|
||||
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
|
||||
int count = quantityDropped(metadata, fortune, world.rand);
|
||||
for(int i = 0; i < count; i++) {
|
||||
Item item = getItemDropped(metadata, world.rand, fortune);
|
||||
if(item != null)
|
||||
ret.add(new ItemStack(item, 1, damageDropped(metadata, world.rand, item)));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//pain
|
||||
public int damageDropped(int meta, Random rand, Item item) {
|
||||
if(item != ModItems.canned_conserve)
|
||||
return damageDropped(meta);
|
||||
else
|
||||
return Math.abs(rand.nextInt() % EnumFoodType.values().length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int i, Random rand, int j) {
|
||||
|
||||
List<Item> items = new ArrayList();
|
||||
for(int a = 0; a < EnumFoodType.values().length; a++)
|
||||
items.add(ModItems.canned_conserve);
|
||||
items.add(ModItems.can_smart);
|
||||
items.add(ModItems.can_creature);
|
||||
items.add(ModItems.can_redbomb);
|
||||
items.add(ModItems.can_mrsugar);
|
||||
items.add(ModItems.can_overcharge);
|
||||
items.add(ModItems.can_luna);
|
||||
items.add(ModItems.can_breen);
|
||||
items.add(ModItems.can_bepis);
|
||||
items.add(ModItems.pudding);
|
||||
|
||||
return items.get(rand.nextInt(items.size()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(Random rand) {
|
||||
|
||||
return 5 + rand.nextInt(4);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Random rand = new Random();
|
||||
|
||||
public void dropContents(World world, int x, int y, int z) {
|
||||
ArrayList<ItemStack> items = getContents(world, x, y, z);
|
||||
|
||||
for(ItemStack item : items) {
|
||||
this.dropBlockAsItem(world, x, y, z, item);
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList<ItemStack> getContents(World world, int x, int y, int z) {
|
||||
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
|
||||
int count = getContentAmount(world.rand);
|
||||
for(int i = 0; i < count; i++) {
|
||||
ret.add(getRandomItem(world.rand));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public ItemStack getRandomItem(Random rand) {
|
||||
|
||||
List<ItemStack> items = new ArrayList();
|
||||
for(int a = 0; a < EnumFoodType.values().length; a++)
|
||||
items.add(new ItemStack(ModItems.canned_conserve, 1, a));
|
||||
items.add(new ItemStack(ModItems.can_smart));
|
||||
items.add(new ItemStack(ModItems.can_creature));
|
||||
items.add(new ItemStack(ModItems.can_redbomb));
|
||||
items.add(new ItemStack(ModItems.can_mrsugar));
|
||||
items.add(new ItemStack(ModItems.can_overcharge));
|
||||
items.add(new ItemStack(ModItems.can_luna));
|
||||
items.add(new ItemStack(ModItems.can_breen));
|
||||
items.add(new ItemStack(ModItems.can_bepis));
|
||||
items.add(new ItemStack(ModItems.pudding));
|
||||
|
||||
return items.get(rand.nextInt(items.size()));
|
||||
}
|
||||
|
||||
public int getContentAmount(Random rand) {
|
||||
return 5 + rand.nextInt(4);
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,6 @@ import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockCrate extends BlockFalling {
|
||||
@ -29,25 +28,17 @@ public class BlockCrate extends BlockFalling {
|
||||
super(p_i45394_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) {
|
||||
dropItems(world, x, y, z);
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F);
|
||||
return true;
|
||||
} else {
|
||||
if(world.isRemote) {
|
||||
player.addChatMessage(new ChatComponentText("I'll need a crate opening device to get the loot, smashing the whole thing won't work..."));
|
||||
if(!world.isRemote) {
|
||||
dropItems(world, x, y, z);
|
||||
world.setBlockToAir(x, y, z);
|
||||
world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setDrops() {
|
||||
|
||||
@ -58,9 +58,9 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro
|
||||
} else {
|
||||
TileEntity entity = world.getTileEntity(x, y, z);
|
||||
if(entity instanceof TileEntityLockableBase) { //annoying accommodations for the filing cabinet, but whatever, could potentially be useful
|
||||
if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit))
|
||||
if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) {
|
||||
return false;
|
||||
else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) {
|
||||
} else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||
return true;
|
||||
}
|
||||
@ -99,13 +99,13 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro
|
||||
|
||||
if(itemstack.hasTagCompound()) {
|
||||
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) rand.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) rand.nextGaussian() * f3;
|
||||
world.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
|
||||
float f3 = 0.05F;
|
||||
entityitem.motionX = (float) rand.nextGaussian() * f3;
|
||||
entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F;
|
||||
entityitem.motionZ = (float) rand.nextGaussian() * f3;
|
||||
world.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockPedestal extends BlockContainer {
|
||||
@ -62,6 +63,12 @@ public class BlockPedestal extends BlockContainer {
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
|
||||
@ -107,9 +107,9 @@ public class EntityGlyphid extends EntityMob {
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing
|
||||
this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing
|
||||
this.dataWatcher.addObject(DW_ARMOR, new Byte((byte) 0b11111)); //armor
|
||||
this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc)
|
||||
this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc)
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -32,49 +32,36 @@ public class EntityBoxcar extends EntityThrowable {
|
||||
this.lastTickPosZ = this.prevPosZ = posZ;
|
||||
this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ);
|
||||
|
||||
/*this.prevPosX = this.posX;
|
||||
this.prevPosY = this.posY;
|
||||
this.prevPosZ = this.posZ;
|
||||
|
||||
this.posX += this.motionX;
|
||||
this.posY += this.motionY;
|
||||
this.posZ += this.motionZ;*/
|
||||
|
||||
this.motionY -= 0.03;
|
||||
if(motionY < -1.5)
|
||||
motionY = -1.5;
|
||||
|
||||
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air)
|
||||
{
|
||||
this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F);
|
||||
this.setDead();
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1);
|
||||
|
||||
List<Entity> list = (List<Entity>)worldObj.getEntitiesWithinAABBExcludingEntity(null,
|
||||
AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2));
|
||||
|
||||
for(Entity e : list) {
|
||||
e.attackEntityFrom(ModDamageSource.boxcar, 1000);
|
||||
}
|
||||
|
||||
if(!worldObj.isRemote)
|
||||
worldObj.setBlock((int)(this.posX - 0.5), (int)(this.posY + 0.5), (int)(this.posZ - 0.5), ModBlocks.boxcar);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) {
|
||||
this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:weapon.trainImpact", 100.0F, 1.0F);
|
||||
this.setDead();
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5);
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2);
|
||||
//ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5);
|
||||
//ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1);
|
||||
|
||||
List<Entity> list = (List<Entity>) worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2));
|
||||
|
||||
for(Entity e : list) {
|
||||
e.attackEntityFrom(ModDamageSource.boxcar, 1000);
|
||||
}
|
||||
|
||||
if(!worldObj.isRemote)
|
||||
worldObj.setBlock((int) (this.posX - 0.5), (int) (this.posY + 0.5), (int) (this.posZ - 0.5), ModBlocks.boxcar);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||
|
||||
}
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) { }
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 25000;
|
||||
}
|
||||
public boolean isInRangeToRenderDist(double distance) {
|
||||
return distance < 25000;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 (4824)";
|
||||
public static final String VERSION = "1.0.27 BETA (4837)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -202,6 +202,7 @@
|
||||
"weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]},
|
||||
"weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]},
|
||||
"weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]},
|
||||
"weapon.trainImpact": {"category": "player", "sounds": [{"name": "weapon/trainImpact", "stream": false}]},
|
||||
|
||||
"weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/textures/items/book_of_2.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/book_of_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Loading…
x
Reference in New Issue
Block a user