Merge branch 'HbmMods:master' into master

This commit is contained in:
BallOfEnergy 2023-05-03 19:15:16 -05:00 committed by GitHub
commit abb9cbc980
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 930 additions and 8 deletions

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4578
mod_build_number=4585
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
@ -11,4 +11,4 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al
\ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
\ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\
\ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips)
\ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips)

View File

@ -11,6 +11,7 @@ import com.hbm.blocks.machine.*;
import com.hbm.blocks.machine.pile.*;
import com.hbm.blocks.machine.rbmk.*;
import com.hbm.blocks.network.*;
import com.hbm.blocks.rail.RailStandardStraight;
import com.hbm.blocks.siege.*;
import com.hbm.blocks.test.*;
import com.hbm.blocks.turret.*;
@ -1085,6 +1086,8 @@ public class ModBlocks {
public static Block rail_highspeed;
public static Block rail_booster;
public static Block rail_large_straight;
public static Block statue_elb;
public static Block statue_elb_g;
public static Block statue_elb_w;
@ -2109,6 +2112,7 @@ public class ModBlocks {
rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow");
rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed");
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
@ -3326,6 +3330,7 @@ public class ModBlocks {
GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName());
GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName());
GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName());
register(rail_large_straight);
//Crate
GameRegistry.registerBlock(crate, crate.getUnlocalizedName());

View File

@ -1,5 +1,7 @@
package com.hbm.blocks.machine;
import java.util.Random;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandlerXR;
@ -11,6 +13,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
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.tileentity.TileEntity;
import net.minecraft.world.World;
@ -29,6 +32,11 @@ public class Watz extends BlockDummyable {
if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid();
return null;
}
@Override
public Item getItemDropped(int i, Random rand, int j) {
return null;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {

View File

@ -0,0 +1,40 @@
package com.hbm.blocks.rail;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
/** in retrospect, not the best name i could have chosen */
public interface IRailNTM {
/** Returns a vector pointing to the closest snapping position given the starting position */
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ);
/**
* Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail.
* If the train would leave the rail within that tick, the position is the last valid position on that rail.
* Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing.
* The motion has to be calculated from the train's rotation, the scalar doesn't matter since it's only used for determining orientation in a clear way.
* Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative.
* Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail.
* */
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info);
/** Returns that rail's gauge. Trains will derail if the gauge does not match. */
public TrackGauge getGauge(World world, int x, int y, int z);
public static enum TrackGauge {
STANDARD //roughly 1.5m
}
/** A wrapper for all relevant info required when leaving a rail */
public static class RailLeaveInfo {
/** The amount of blocks still left to travel after completing the rail */
public double overshoot;
/** The exit position of that rail */
public BlockPos pos;
public RailLeaveInfo dist(double d) { this.overshoot = d; return this; }
public RailLeaveInfo pos(BlockPos d) { this.pos = d; return this; }
}
}

View File

@ -0,0 +1,113 @@
package com.hbm.blocks.rail;
import com.hbm.blocks.BlockDummyable;
import com.hbm.lib.Library;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class RailStandardStraight extends BlockDummyable implements IRailNTM {
public RailStandardStraight() {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
}
@Override
public int getRenderType() {
return 0;
}
@Override
public int[] getDimensions() {
return new int[] {0, 0, 2, 2, 0, 0};
}
@Override
public int getOffset() {
return 2;
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
int meta = world.getBlockMetadata(x, y, z);
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
}
@Override
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo());
}
@Override
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) {
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
}
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
int cX = pos[0];
int cY = pos[1];
int cZ = pos[2];
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
ForgeDirection dir = ForgeDirection.getOrientation(meta);
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
if(speed == 0) {
return vec;
}
if(dir == Library.POS_X || dir == Library.NEG_X) {
double targetX = trainX;
if(motionX > 0) {
targetX += speed;
} else {
targetX -= speed;
}
vec.xCoord = MathHelper.clamp_double(targetX, x - 2, x + 3);
vec.yCoord = y;
vec.zCoord = z + 0.5;
info.dist(Math.abs(targetX - vec.xCoord));
info.pos(new BlockPos(vec.xCoord + (motionX > 0 ? 1 : -1), y, z));
} else {
double targetZ = trainZ;
if(motionZ > 0) {
targetZ += speed;
} else {
targetZ -= speed;
}
vec.xCoord = x + 0.5;
vec.yCoord = y;
vec.zCoord = MathHelper.clamp_double(targetZ, z - 2, z + 3);
info.dist(Math.abs(targetZ - vec.zCoord));
info.pos(new BlockPos(x, y, vec.zCoord + (motionZ > 0 ? 1 : -1)));
}
return vec;
}
@Override
public TrackGauge getGauge(World world, int x, int y, int z) {
return TrackGauge.STANDARD;
}
}

View File

@ -14,6 +14,7 @@ import com.hbm.entity.mob.botprime.*;
import com.hbm.entity.mob.siege.*;
import com.hbm.entity.particle.*;
import com.hbm.entity.projectile.*;
import com.hbm.entity.train.TrainCargoTram;
import com.hbm.main.MainRegistry;
import com.hbm.util.Tuple.Quartet;
@ -205,6 +206,8 @@ public class EntityMappings {
addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000);
addEntity(EntityMist.class, "entity_mist", 1000);
addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false);
addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00);
addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd);
addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B);

View File

@ -0,0 +1,173 @@
package com.hbm.entity.train;
import com.hbm.blocks.rail.IRailNTM;
import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo;
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
import com.hbm.util.fauxpointtwelve.BlockPos;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
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;
public abstract class EntityRailCarBase extends Entity {
public boolean isOnRail = true;
private int turnProgress;
private double trainX;
private double trainY;
private double trainZ;
private double trainYaw;
private double trainPitch;
@SideOnly(Side.CLIENT) private double velocityX;
@SideOnly(Side.CLIENT) private double velocityY;
@SideOnly(Side.CLIENT) private double velocityZ;
public EntityRailCarBase(World world) {
super(world);
}
@Override protected void entityInit() { }
@Override protected void readEntityFromNBT(NBTTagCompound nbt) { }
@Override protected void writeEntityToNBT(NBTTagCompound nbt) { }
@Override
public boolean canBePushed() {
return true;
}
@Override
public boolean canBeCollidedWith() {
return !this.isDead;
}
@Override
public void onUpdate() {
if(this.worldObj.isRemote) {
if(this.turnProgress > 0) {
double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress;
double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress;
double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress;
double yaw = MathHelper.wrapAngleTo180_double(this.trainYaw - (double) this.rotationYaw);
this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.turnProgress);
this.rotationPitch = (float) ((double) this.rotationPitch + (this.trainPitch - (double) this.rotationPitch) / (double) this.turnProgress);
--this.turnProgress;
this.setPosition(x, y, z);
this.setRotation(this.rotationYaw, this.rotationPitch);
} else {
this.setPosition(this.posX, this.posY, this.posZ);
this.setRotation(this.rotationYaw, this.rotationPitch);
}
} else {
BlockPos anchor = this.getCurentAnchorPos();
Vec3 corePos = getRelPosAlongRail(anchor, this.getCurrentSpeed());
if(corePos == null) {
this.derail();
} else {
this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
anchor = this.getCurentAnchorPos(); //reset origin to new position
Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan());
Vec3 backPos = getRelPosAlongRail(anchor, this.getLengthSpan());
if(frontPos == null || backPos == null) {
this.derail();
} else {
this.rotationYaw = generateYaw(frontPos, backPos);
}
}
}
}
public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) {
double overshoot = 0;
float yaw = this.rotationYaw;
Vec3 next = Vec3.createVectorHelper(posX, posY, posZ);
do {
int x = anchor.getX();
int y = anchor.getY();
int z = anchor.getZ();
Block block = worldObj.getBlock(x, y, z);
Vec3 rot = Vec3.createVectorHelper(0, 0, 1);
rot.rotateAroundY(yaw);
if(block instanceof IRailNTM) {
IRailNTM rail = (IRailNTM) block;
if(rail.getGauge(worldObj, x, y, z) == this.getGauge()) {
RailLeaveInfo info = new RailLeaveInfo();
Vec3 prev = next;
next = rail.getTravelLocation(worldObj, x, y, z, posX, posY, posZ, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info);
overshoot = info.overshoot;
anchor = info.pos;
yaw = generateYaw(next, prev);
} else {
return null;
}
} else {
return null;
}
} while(overshoot != 0); //if there's still length to cover, keep going
return next;
}
public float generateYaw(Vec3 front, Vec3 back) {
double deltaX = front.xCoord - back.xCoord;
double deltaZ = front.zCoord - back.zCoord;
double radians = Math.atan(deltaZ / deltaX);
return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
}
/** Returns the amount of blocks that the train should move per tick */
public abstract double getCurrentSpeed();
/** Returns the gauge of this train */
public abstract TrackGauge getGauge();
/** Returns the length between the core and one of the bogies */
public abstract double getLengthSpan();
/** Returns the "true" position of the train, i.e. the block it wants to snap to */
public BlockPos getCurentAnchorPos() {
return new BlockPos(posX, posY, posZ);
}
public void derail() {
isOnRail = false;
this.setDead();
worldObj.createExplosion(this, posX, posY, posZ, 1F, false);
}
@SideOnly(Side.CLIENT)
public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) {
this.trainX = posX;
this.trainY = posY;
this.trainZ = posZ;
this.trainYaw = (double) yaw;
this.trainPitch = (double) pitch;
this.turnProgress = turnProg + 2;
this.motionX = this.velocityX;
this.motionY = this.velocityY;
this.motionZ = this.velocityZ;
}
@SideOnly(Side.CLIENT)
public void setVelocity(double mX, double mY, double mZ) {
this.velocityX = this.motionX = mX;
this.velocityY = this.motionY = mY;
this.velocityZ = this.motionZ = mZ;
}
}

View File

@ -0,0 +1,43 @@
package com.hbm.entity.train;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public abstract class EntityRailCarRidable extends EntityRailCarBase {
public EntityRailCarRidable(World world) {
super(world);
}
@Override
public boolean interactFirst(EntityPlayer player) {
if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) {
return true;
} else {
if(!this.worldObj.isRemote) {
player.mountEntity(this);
}
return true;
}
}
@Override
public void onUpdate() {
super.onUpdate();
}
@Override
public void updateRiderPosition() {
Vec3 offset = getRiderSeatPosition();
offset.rotateAroundY(this.rotationYaw);
if(this.riddenByEntity != null) {
this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord);
}
}
/** Returns a Vec3 showing the relative position from the driver to the core */
public abstract Vec3 getRiderSeatPosition();
}

View File

@ -0,0 +1,58 @@
package com.hbm.entity.train;
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.DamageSource;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class TrainCargoTram extends EntityRailCarRidable {
/*
*
* _________
* | | \ <--
* | | |___
* | | | | |
* _O\|_|_______|__|_____________________________|/O_
* |____| |____|
* \__________________________________________/
* '( + )' '( + )'
*
*/
public TrainCargoTram(World world) {
super(world);
this.setSize(2F, 1F);
}
@Override
public double getCurrentSpeed() {
return this.riddenByEntity instanceof EntityPlayer ? ((EntityPlayer) this.riddenByEntity).moveForward * 0.125D : 0;
}
@Override
public TrackGauge getGauge() {
return TrackGauge.STANDARD;
}
@Override
public double getLengthSpan() {
return 2;
}
@Override
public Vec3 getRiderSeatPosition() {
return Vec3.createVectorHelper(0.75, 1.75, 0.75);
}
@Override
public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) {
if(!this.worldObj.isRemote && !this.isDead) {
this.setDead();
}
return true;
}
}

View File

@ -5460,11 +5460,11 @@ public class ModItems {
mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel");
memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim");
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid), new ItemStack(Items.bucket));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic), new ItemStack(Items.bucket));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket));
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid), new ItemStack(Items.bucket));
BucketHandler.INSTANCE.buckets.put(ModBlocks.mud_block, ModItems.bucket_mud);
BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid);
BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic);

View File

@ -32,7 +32,7 @@ public class ItemGunGauss extends ItemGunBase {
if(!main && getStored(stack) > 0) {
EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player);
bullet.overrideDamage = Math.min(getStored(stack), 1) * 10F;
bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F;
world.spawnEntityInWorld(bullet);
world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F);
setItemWear(stack, getItemWear(stack) + (getCharge(stack)) * 2);

View File

@ -60,6 +60,7 @@ import com.hbm.entity.mob.botprime.*;
import com.hbm.entity.mob.siege.*;
import com.hbm.entity.particle.*;
import com.hbm.entity.projectile.*;
import com.hbm.entity.train.*;
import com.hbm.handler.CasingEjector;
import com.hbm.handler.HbmKeybinds;
import com.hbm.handler.ImpactWorldHandler;
@ -681,6 +682,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart());
RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus());
RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram());
//items
RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem());
RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage());

View File

@ -127,6 +127,7 @@ import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent17;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
public class ModEventHandlerClient {
@ -200,6 +201,19 @@ public class ModEventHandlerClient {
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}*/
List<String> text = new ArrayList();
text.add("YAW: " + player.rotationYaw);
text.add("PITCH: " + player.rotationPitch);
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
int j = 0;
if(i == 0) j = 2;
if(i == 1) j = 5;
if(i == 2) j = 3;
if(i == 3) j = 4;
ForgeDirection dir = ForgeDirection.getOrientation(j).getOpposite();
text.add("x: " + dir.offsetX + " z: " + dir.offsetZ);
ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text);
}
/// HANLDE ANIMATION BUSES ///

View File

@ -1005,6 +1005,7 @@ public class ResourceManager {
public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj"));
public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj"));
public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj"));
public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj"));
////Texture Entities

View File

@ -0,0 +1,37 @@
package com.hbm.render.entity.item;
import org.lwjgl.opengl.GL11;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class RenderTrainCargoTram extends Render {
@Override
public void doRender(Entity entity, double x, double y, double z, float swing, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
GL11.glRotated(180 - entity.rotationYaw, 0, 1, 0);
GL11.glRotated(-entity.rotationPitch, 0, 0, 1);
MainRegistry.proxy.displayTooltip("Yaw: " + entity.rotationYaw, 666);
MainRegistry.proxy.displayTooltip("Pitch: " + entity.rotationPitch, 667);
GL11.glDisable(GL11.GL_CULL_FACE);
bindTexture(ResourceManager.universal);
ResourceManager.train_cargo_tram.renderAll();
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
@Override
protected ResourceLocation getEntityTexture(Entity entity) {
return ResourceManager.universal;
}
}

View File

@ -0,0 +1,425 @@
# Blender v2.79 (sub 0) OBJ File: 'tram.blend'
# www.blender.org
o Plane
v -1.000000 0.500000 2.500000
v 1.000000 0.500000 2.500000
v -1.000000 0.500000 -2.500000
v 1.000000 0.500000 -2.500000
v -1.000000 0.250000 2.500000
v 1.000000 0.250000 2.500000
v -1.000000 0.250000 -2.500000
v 1.000000 0.250000 -2.500000
v -1.000000 0.000000 2.250000
v 1.000000 0.000000 2.250000
v -1.000000 0.000000 -2.250000
v 1.000000 0.000000 -2.250000
v -0.125000 0.500000 1.000000
v 0.875000 0.500000 1.000000
v -0.125000 1.500000 1.000000
v 0.875000 1.500000 1.000000
v 0.125000 0.500000 2.000000
v -0.125000 0.500000 1.750000
v 0.875000 0.500000 1.750000
v 0.625000 0.500000 2.000000
v -0.125000 1.500000 1.750000
v 0.125000 1.500000 2.000000
v 0.625000 1.500000 2.000000
v 0.875000 1.500000 1.750000
v -0.625000 0.750000 2.437500
v -0.625000 0.750000 2.312500
v 0.625000 0.750000 2.312500
v 0.625000 0.750000 2.437500
v 0.713388 0.713388 2.312500
v 0.713388 0.713388 2.437500
v 0.750000 0.625000 2.312500
v 0.750000 0.625000 2.437500
v 0.713388 0.536612 2.312500
v 0.713388 0.536612 2.437500
v 0.625000 0.500000 2.312500
v 0.625000 0.500000 2.437500
v 0.536612 0.536612 2.312500
v 0.536612 0.536612 2.437500
v 0.500000 0.625000 2.312500
v 0.500000 0.625000 2.437500
v 0.536612 0.713388 2.312500
v 0.536612 0.713388 2.437500
v -0.536612 0.713388 2.312500
v -0.536612 0.713388 2.437500
v -0.500000 0.625000 2.312500
v -0.500000 0.625000 2.437500
v -0.536612 0.536612 2.312500
v -0.536612 0.536612 2.437500
v -0.625000 0.500000 2.312500
v -0.625000 0.500000 2.437500
v -0.713388 0.536612 2.312500
v -0.713388 0.536612 2.437500
v -0.750000 0.625000 2.312500
v -0.750000 0.625000 2.437500
v -0.713388 0.713388 2.312500
v -0.713388 0.713388 2.437500
v 0.375000 0.500000 2.312500
v 0.875000 0.500000 2.312500
v 0.375000 0.500000 2.187500
v 0.875000 0.500000 2.187500
v 0.375000 0.750000 2.187500
v 0.375000 0.750000 2.312500
v 0.875000 0.750000 2.312500
v 0.875000 0.750000 2.187500
v -0.875000 0.500000 2.312500
v -0.375000 0.500000 2.312500
v -0.875000 0.500000 2.187500
v -0.375000 0.500000 2.187500
v -0.875000 0.750000 2.187500
v -0.875000 0.750000 2.312500
v -0.375000 0.750000 2.312500
v -0.375000 0.750000 2.187500
v -0.875000 0.500000 1.875000
v -0.125000 0.500000 1.875000
v -0.875000 0.500000 1.125000
v -0.125000 0.500000 1.125000
v -0.875000 1.000000 1.125000
v -0.875000 1.000000 1.875000
v -0.125000 1.000000 1.875000
v -0.125000 1.000000 1.125000
v -0.750000 0.500000 -2.250000
v 0.750000 0.500000 -2.250000
v -0.750000 0.500000 -1.750000
v 0.750000 0.500000 -1.750000
v -0.750000 1.000000 -2.250000
v 0.750000 1.000000 -2.250000
v -0.750000 1.000000 -1.750000
v 0.750000 1.000000 -1.750000
vt 0.000000 0.833333
vt 0.320000 0.000000
vt 0.320000 0.833333
vt 0.840000 0.333333
vt 0.800000 0.000000
vt 0.840000 0.000000
vt 0.720000 0.833333
vt 0.720000 0.000000
vt 0.800000 0.041667
vt 0.880000 0.333333
vt 0.880000 0.000000
vt 0.920000 0.333333
vt 0.880000 0.000000
vt 0.920000 0.000000
vt 0.320000 0.000000
vt 0.640000 0.750000
vt 0.320000 0.750000
vt 0.320000 0.791666
vt 0.640000 0.791667
vt 0.640000 0.833333
vt 0.640000 0.000000
vt 0.720000 0.041667
vt 0.800000 0.875000
vt 0.880000 0.708333
vt 0.880000 0.875000
vt 0.640000 0.958333
vt 0.480000 0.833333
vt 0.640000 0.833333
vt 0.280000 1.000000
vt 0.160000 1.000000
vt 0.160000 0.833333
vt 0.160000 0.833333
vt 0.000000 1.000000
vt 0.000000 0.833333
vt 0.640000 0.791667
vt 0.480000 0.916667
vt 0.320000 0.958333
vt 0.320000 0.916667
vt 0.320000 0.791667
vt 0.480000 0.791667
vt 0.760000 0.833333
vt 0.800000 0.916666
vt 0.760000 0.916667
vt 0.906131 0.580162
vt 0.880000 0.568887
vt 0.890824 0.541667
vt 0.400000 0.973065
vt 0.420000 0.958333
vt 0.420000 0.973065
vt 0.320000 1.000000
vt 0.340000 0.958333
vt 0.340000 1.000000
vt 0.460000 0.987796
vt 0.480000 0.973065
vt 0.480000 0.987796
vt 0.360000 0.958333
vt 0.340000 0.973065
vt 0.340000 0.958333
vt 0.760000 0.996828
vt 0.780000 0.955161
vt 0.780000 0.996828
vt 0.380000 0.973065
vt 0.400000 0.958333
vt 0.400000 0.973065
vt 0.360000 0.973065
vt 0.340000 0.987796
vt 0.780000 0.996828
vt 0.800000 0.955161
vt 0.800000 0.996828
vt 0.380000 0.987796
vt 0.400000 0.987796
vt 0.380000 0.987796
vt 0.360000 0.973065
vt 0.380000 0.973065
vt 0.940000 0.583333
vt 0.960000 0.666667
vt 0.940000 0.666667
vt 0.440000 0.973065
vt 0.460000 0.958333
vt 0.460000 0.973065
vt 0.380000 0.958333
vt 0.420000 0.987796
vt 0.440000 0.973065
vt 0.440000 0.987796
vt 0.440000 0.987796
vt 0.460000 0.987796
vt 0.916955 0.571129
vt 0.936955 0.556398
vt 0.936955 0.571129
vt 0.770824 0.916666
vt 0.796955 0.927941
vt 0.786131 0.955161
vt 0.420000 0.973065
vt 0.440000 0.958333
vt 0.916955 0.556398
vt 0.936955 0.541667
vt 0.920000 0.250000
vt 0.960000 0.333333
vt 0.920000 0.333333
vt 0.460000 0.973065
vt 0.480000 0.958333
vt 0.400000 0.987796
vt 0.420000 0.987796
vt 0.920000 0.083333
vt 0.960000 0.166667
vt 0.920000 0.166667
vt 0.940000 0.666667
vt 0.920000 0.708333
vt 0.920000 0.666667
vt 0.920000 0.583333
vt 0.940000 0.666667
vt 0.920000 0.666667
vt 0.960000 0.250000
vt 0.920000 0.166667
vt 0.960000 0.166667
vt 0.800000 0.708333
vt 0.920000 0.583333
vt 0.920000 0.708333
vt 0.640000 0.958333
vt 0.760000 0.833333
vt 0.760000 0.958333
vt 0.960000 0.458333
vt 0.880000 0.333333
vt 0.960000 0.333333
vt 0.960000 0.958333
vt 0.880000 0.833333
vt 0.960000 0.833333
vt 0.880000 1.000000
vt 0.800000 0.875000
vt 0.880000 0.875000
vt 0.880000 0.708333
vt 0.960000 0.833333
vt 0.880000 0.833333
vt 1.000000 0.083333
vt 0.920000 0.000000
vt 1.000000 0.000000
vt 0.880000 0.541667
vt 0.960000 0.458333
vt 0.960000 0.541667
vt 0.800000 0.583333
vt 0.880000 0.333333
vt 0.880000 0.583333
vt 0.000000 0.000000
vt 0.800000 0.333333
vt 0.760000 0.000000
vt 0.800000 0.791666
vt 0.760000 0.833333
vt 0.880000 0.333333
vt 0.640000 0.000000
vt 0.680000 0.000000
vt 0.720000 0.791667
vt 0.680000 0.833333
vt 0.800000 0.708333
vt 0.480000 0.958333
vt 0.280000 0.833333
vt 0.320000 0.875000
vt 0.320000 0.958333
vt 0.160000 1.000000
vt 0.480000 0.791667
vt 0.480000 0.958333
vt 0.800000 0.833333
vt 0.916955 0.552942
vt 0.916955 0.568887
vt 0.890824 0.580162
vt 0.880000 0.552942
vt 0.906131 0.541667
vt 0.400000 0.958333
vt 0.320000 0.958333
vt 0.760000 0.955161
vt 0.380000 0.958333
vt 0.360000 0.987796
vt 0.780000 0.955161
vt 0.960000 0.583333
vt 0.440000 0.958333
vt 0.360000 0.958333
vt 0.760000 0.943886
vt 0.760000 0.927941
vt 0.786131 0.916666
vt 0.796955 0.943886
vt 0.770824 0.955161
vt 0.420000 0.958333
vt 0.916955 0.541667
vt 0.960000 0.250000
vt 0.460000 0.958333
vt 0.960000 0.083333
vt 0.940000 0.708333
vt 0.940000 0.583333
vt 0.920000 0.250000
vt 0.800000 0.583333
vt 0.640000 0.833333
vt 0.880000 0.458333
vt 0.880000 0.958333
vt 0.800000 1.000000
vt 0.960000 0.708333
vt 0.920000 0.083333
vt 0.880000 0.458333
vt 0.800000 0.333333
vn 0.0000 1.0000 0.0000
vn 0.0000 -0.7071 -0.7071
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 -0.7071 0.7071
vn -1.0000 0.0000 0.0000
vn 0.7071 0.0000 0.7071
vn -0.7071 0.0000 0.7071
vn 0.3827 0.9239 0.0000
vn -0.9239 -0.3827 0.0000
vn 0.9239 0.3827 0.0000
vn -0.3827 -0.9239 0.0000
vn 0.9239 -0.3827 0.0000
vn 0.3827 -0.9239 0.0000
vn -0.3827 0.9239 0.0000
vn -0.9239 0.3827 0.0000
s off
f 2/1/1 3/2/1 1/3/1
f 8/4/2 11/5/2 7/6/2
f 4/7/3 2/8/3 10/9/3
f 4/10/4 7/6/4 3/11/4
f 1/12/5 6/13/5 2/14/5
f 11/15/6 10/16/6 9/17/6
f 5/18/7 10/16/7 6/19/7
f 1/20/8 3/21/8 11/22/8
f 20/23/5 22/24/5 17/25/5
f 14/26/3 24/27/3 19/28/3
f 24/29/1 16/30/1 15/31/1
f 13/32/4 16/33/4 14/34/4
f 24/27/9 20/35/9 19/28/9
f 18/36/10 22/37/10 21/38/10
f 18/36/8 15/39/8 13/40/8
f 58/41/5 62/42/5 57/43/5
f 25/44/5 54/45/5 50/46/5
f 28/47/11 29/48/11 27/49/11
f 65/50/8 69/51/8 67/52/8
f 52/53/12 53/54/12 51/55/12
f 30/56/13 31/57/13 29/58/13
f 57/59/8 61/60/8 59/61/8
f 50/62/14 51/63/14 49/64/14
f 32/65/15 33/66/15 31/57/15
f 60/67/3 63/68/3 58/69/3
f 48/70/16 49/64/16 47/71/16
f 33/72/16 36/73/16 35/74/16
f 63/75/1 61/76/1 62/77/1
f 46/78/15 47/79/15 45/80/15
f 36/73/14 37/81/14 35/74/14
f 56/82/17 26/83/17 55/84/17
f 44/85/13 45/80/13 43/86/13
f 38/87/12 39/88/12 37/89/12
f 28/90/5 40/91/5 36/92/5
f 25/93/11 43/94/11 26/83/11
f 40/95/18 41/96/18 39/88/18
f 59/97/4 64/98/4 60/99/4
f 54/100/18 55/101/18 53/54/18
f 42/102/17 27/49/17 41/103/17
f 66/104/5 70/105/5 65/106/5
f 68/107/3 71/108/3 66/109/3
f 71/110/1 69/111/1 70/112/1
f 67/113/4 72/114/4 68/115/4
f 75/116/6 74/117/6 73/118/6
f 79/119/1 77/120/1 78/121/1
f 76/122/3 79/123/3 74/124/3
f 73/125/8 77/126/8 75/127/8
f 75/128/4 80/129/4 76/130/4
f 74/131/5 78/132/5 73/133/5
f 86/134/3 84/135/3 82/136/3
f 87/137/8 81/138/8 83/139/8
f 85/140/4 82/141/4 81/142/4
f 2/1/1 4/143/1 3/2/1
f 8/4/2 12/144/2 11/5/2
f 2/8/3 6/145/3 10/9/3
f 10/9/3 12/146/3 4/7/3
f 12/146/3 8/147/3 4/7/3
f 4/10/4 8/4/4 7/6/4
f 1/12/5 5/148/5 6/13/5
f 11/15/6 12/149/6 10/16/6
f 5/18/7 9/17/7 10/16/7
f 3/21/8 7/150/8 11/22/8
f 11/22/8 9/151/8 1/20/8
f 9/151/8 5/152/8 1/20/8
f 20/23/5 23/153/5 22/24/5
f 14/26/3 16/154/3 24/27/3
f 15/31/1 21/155/1 24/29/1
f 21/155/1 22/156/1 24/29/1
f 22/156/1 23/157/1 24/29/1
f 13/32/4 15/158/4 16/33/4
f 24/27/9 23/159/9 20/35/9
f 18/36/10 17/160/10 22/37/10
f 18/36/8 21/38/8 15/39/8
f 58/41/5 63/161/5 62/42/5
f 46/162/5 44/163/5 25/44/5
f 25/44/5 56/164/5 54/45/5
f 54/45/5 52/165/5 50/46/5
f 50/46/5 48/166/5 46/162/5
f 46/162/5 25/44/5 50/46/5
f 28/47/11 30/167/11 29/48/11
f 65/50/8 70/168/8 69/51/8
f 52/53/12 54/100/12 53/54/12
f 30/56/13 32/65/13 31/57/13
f 57/59/8 62/169/8 61/60/8
f 50/62/14 52/170/14 51/63/14
f 32/65/15 34/171/15 33/66/15
f 60/67/3 64/172/3 63/68/3
f 48/70/16 50/62/16 49/64/16
f 33/72/16 34/171/16 36/73/16
f 63/75/1 64/173/1 61/76/1
f 46/78/15 48/174/15 47/79/15
f 36/73/14 38/175/14 37/81/14
f 56/82/17 25/93/17 26/83/17
f 44/85/13 46/78/13 45/80/13
f 38/87/12 40/95/12 39/88/12
f 32/176/5 30/177/5 28/90/5
f 28/90/5 42/178/5 40/91/5
f 40/91/5 38/179/5 36/92/5
f 36/92/5 34/180/5 32/176/5
f 32/176/5 28/90/5 36/92/5
f 25/93/11 44/181/11 43/94/11
f 40/95/18 42/182/18 41/96/18
f 59/97/4 61/183/4 64/98/4
f 54/100/18 56/184/18 55/101/18
f 42/102/17 28/47/17 27/49/17
f 66/104/5 71/185/5 70/105/5
f 68/107/3 72/186/3 71/108/3
f 71/110/1 72/187/1 69/111/1
f 67/113/4 69/188/4 72/114/4
f 75/116/6 76/189/6 74/117/6
f 79/119/1 80/190/1 77/120/1
f 76/122/3 80/191/3 79/123/3
f 73/125/8 78/192/8 77/126/8
f 75/128/4 77/193/4 80/129/4
f 74/131/5 79/194/5 78/132/5
f 86/134/3 88/195/3 84/135/3
f 87/137/8 85/196/8 81/138/8
f 85/140/4 86/197/4 82/141/4

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B