Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
if (tank.getFluid() != null && tank.getFluid().getFluid() != null && tank.getFluid().getFluid().getIcon() != null) {
boxOnIcon(Tessellator.instance, tank.getFluid().getFluid().getIcon(),
0.0625D, 0.0625D, 0.0625D, 0.9375D, 0.9375D, 0.9375D);
}
public static void boxOnIcon(Tessellator tessellator, IIcon icon, double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
if (icon == null) return;
double icon_minX = (minX < 0D ? 0D : minX) * 16D;
double icon_minY = (minY < 0D ? 0D : minY) * 16D;
double icon_minZ = (minZ < 0D ? 0D : minZ) * 16D;
double icon_maxX = (maxX > 1D ? 1D : maxX) * 16D...
Maxik001 написал(а):http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/2361797-1-7-10-minecraft-forge-modding-tutorials-now-with
Правда, у меня так и не получилось по этому гайду. Наверно я криворукий
timaxa007 написал(а):Maxik001, у меня нету подобного кода.
connor41 написал(а):timaxa007 написал(а):Maxik001, у меня нету подобного кода.
можно хотя-бы последовательность действий? Код я уж сам надумаю.
Maxik001 написал(а):connor41 написал(а):timaxa007 написал(а):Maxik001, у меня нету подобного кода.
можно хотя-бы последовательность действий? Код я уж сам надумаю.
Блок, тайл энтити, что делать при райтклике ведром с жидкостью, контейнер
public FluidTank tank = new FluidTank(20000);
timaxa007 написал(а):По желанию, можно "extends BlockContainer", а можно "extends Block implements ITileEntityProvider".
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
// TODO Auto-generated method stub
return null;
}
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[] {this.tank.getInfo()};
}
/**
* Wrapper class used to encapsulate information about an IFluidTank.
*
* @author King Lemming
*
*/
timaxa007 написал(а):FluidTankInfoКод:public FluidTankInfo[] getTankInfo(ForgeDirection from) { return new FluidTankInfo[] {this.tank.getInfo()}; }
Для получения информации об IFluidTank.Код:/** * Wrapper class used to encapsulate information about an IFluidTank. * * @author King Lemming * */
@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
// TODO Auto-generated method stub
return false;
}
public class TileGlassFluidTank extends TileEntity implements IFluidHandler {
public FluidTank tank = new FluidTank(GlassFluidTank.MAXFLUID);
private boolean needsUpdate = false;
private int updateTimer = 0;
public TileGlassFluidTank() {
}
public TileGlassFluidTank(int x, int y, int z) {
worldObj.getTileEntity(x, y, z);
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
needsUpdate = true;
return this.tank.fill(resource, doFill);
}
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
return this.tank.drain(resource.amount, doDrain);
}
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
needsUpdate = true;
return this.tank.drain(maxDrain, doDrain);
}
@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
return true;
}
@Override
public boolean canDrain(ForgeDirection from, Fluid fluid) {
return true;
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[] {this.tank.getInfo()};
}
После перезапуска мира он не сохранит так как ты не использовал readFromNBT и writeToNBT для TileEntity и в этих методах использовать методы readFromNBT и writeToNBT от FluidTank. И ещё что надо зависит от тебя.connor41 написал(а):Мне достаточно тут onBlockActivated чтоб жидкость по пкм отправлял и он будет хранить её и больше не чего не надо?
if (tank.getFluid() != null && tank.getFluid().getFluid() != null && tank.getFluid().getFluid().getIcon() != null) {
boxOnIcon(Tessellator.instance, tank.getFluid().getFluid().getIcon(),
0.0625D, 0.0625D, 0.0625D, 0.9375D, 0.9375D, 0.9375D);
}
public static void boxOnIcon(Tessellator tessellator, IIcon icon, double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
if (icon == null) return;
double icon_minX = (minX < 0D ? 0D : minX) * 16D;
double icon_minY = (minY < 0D ? 0D : minY) * 16D;
double icon_minZ = (minZ < 0D ? 0D : minZ) * 16D;
double icon_maxX = (maxX > 1D ? 1D : maxX) * 16D;
double icon_maxY = (maxY > 1D ? 1D : maxY) * 16D;
double icon_maxZ = (maxZ > 1D ? 1D : maxZ) * 16D;
tessellator.startDrawingQuads();
//Top
tessellator.addVertexWithUV(maxX, maxY, minZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(minX, maxY, minZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(minX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(maxX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_maxZ)
);
//Bottom
tessellator.addVertexWithUV(maxX, minY, maxZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(minX, minY, maxZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(minX, minY, minZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(maxX, minY, minZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_minZ)
);
//North
tessellator.addVertexWithUV(maxX, minY, minZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_maxY)
);
tessellator.addVertexWithUV(minX, minY, minZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_maxY)
);
tessellator.addVertexWithUV(minX, maxY, minZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_minY)
);
tessellator.addVertexWithUV(maxX, maxY, minZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_minY)
);
//South
tessellator.addVertexWithUV(maxX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_minY)
);
tessellator.addVertexWithUV(minX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_minY)
);
tessellator.addVertexWithUV(minX, minY, maxZ,
(double)icon.getInterpolatedU(icon_minX),
(double)icon.getInterpolatedV(icon_maxY)
);
tessellator.addVertexWithUV(maxX, minY, maxZ,
(double)icon.getInterpolatedU(icon_maxX),
(double)icon.getInterpolatedV(icon_maxY)
);
//West
tessellator.addVertexWithUV(minX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_maxY),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(minX, maxY, minZ,
(double)icon.getInterpolatedU(icon_minY),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(minX, minY, minZ,
(double)icon.getInterpolatedU(icon_minY),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(minX, minY, maxZ,
(double)icon.getInterpolatedU(icon_maxY),
(double)icon.getInterpolatedV(icon_maxZ)
);
//East
tessellator.addVertexWithUV(maxX, minY, maxZ,
(double)icon.getInterpolatedU(icon_minY),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(maxX, minY, minZ,
(double)icon.getInterpolatedU(icon_maxY),
(double)icon.getInterpolatedV(icon_maxZ)
);
tessellator.addVertexWithUV(maxX, maxY, minZ,
(double)icon.getInterpolatedU(icon_maxY),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.addVertexWithUV(maxX, maxY, maxZ,
(double)icon.getInterpolatedU(icon_minY),
(double)icon.getInterpolatedV(icon_minZ)
);
tessellator.draw();
}