mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
95 lines
2.3 KiB
Java
95 lines
2.3 KiB
Java
package com.hbm.blocks.machine;
|
|
|
|
import java.util.List;
|
|
|
|
import com.hbm.blocks.ITooltipProvider;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.block.BlockRailBase;
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.entity.item.EntityMinecart;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import net.minecraft.world.World;
|
|
|
|
public class RailGeneric extends BlockRailBase implements ITooltipProvider {
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
protected IIcon turnedIcon;
|
|
|
|
protected static final float baseSpeed = 0.4F;
|
|
protected float maxSpeed = 0.4F;
|
|
protected boolean slopable = true;
|
|
protected boolean flexible = true;
|
|
|
|
public RailGeneric() {
|
|
super(false);
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public IIcon getIcon(int side, int meta) {
|
|
return (flexible && meta >= 6) ? this.turnedIcon : this.blockIcon;
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerBlockIcons(IIconRegister reg) {
|
|
super.registerBlockIcons(reg);
|
|
|
|
if(flexible)
|
|
this.turnedIcon = reg.registerIcon(this.getTextureName() + "_turned");
|
|
}
|
|
|
|
@Override
|
|
public float getRailMaxSpeed(World world, EntityMinecart cart, int y, int x, int z) {
|
|
return maxSpeed;
|
|
}
|
|
|
|
public RailGeneric setMaxSpeed(float speed) {
|
|
this.maxSpeed = speed;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public boolean isFlexibleRail(IBlockAccess world, int y, int x, int z) {
|
|
return !isPowered();
|
|
}
|
|
|
|
public RailGeneric setFlexible(boolean flexible) {
|
|
this.flexible = flexible;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public boolean canMakeSlopes(IBlockAccess world, int x, int y, int z) {
|
|
return true;
|
|
}
|
|
|
|
public RailGeneric setSlopable(boolean slopable) {
|
|
this.slopable = slopable;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
|
float speed = this.maxSpeed / this.baseSpeed;
|
|
|
|
if(speed != 1F) {
|
|
list.add((speed > 1 ? EnumChatFormatting.BLUE : EnumChatFormatting.RED) + "Speed: " + ((int) (speed * 100)) + "%");
|
|
}
|
|
|
|
if(!flexible) {
|
|
list.add(EnumChatFormatting.RED + "Cannot be used for turns!");
|
|
}
|
|
|
|
if(!slopable) {
|
|
list.add(EnumChatFormatting.RED + "Cannot be used for slopes!");
|
|
}
|
|
}
|
|
}
|