- 192
- 2
- 9
Всем здрасти) Решил порыться в своем очень старом(самом первом моде), но сорцев на момент создания я не оставил нигде, а потому пришлось мод собирать почти с нуля. Вроде всё сделал, с ошибками явными не столкнулся, но при попытке наступить на блок у меня зависает клиент и в диспетчере процесс сжирает память до тех пор, пока она не кончится или не убить процесс. Полагаю, виноват цикл внутри блока. Говорю сразу, код еще не читал, просто перенес из деоб. мода.
Вопрос: как мне в будущем ловить такие моменты, если даже в лог ничего не пишет?
PS. Оригинальный мод работает исправно и на клиенте, и на сервере.
Вопрос: как мне в будущем ловить такие моменты, если даже в лог ничего не пишет?
PS. Оригинальный мод работает исправно и на клиенте, и на сервере.
BlockPlateWhite.class:
public class BlockPlateWhite extends BlockPlate {
public BlockPlateWhite() {
super();
setRegistryName("jump_plate_white");
setUnlocalizedName("jump_plate_white");
}
public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) {
if (Math.abs(entityIn.motionY) < 0.1D && !entityIn.isSneaking())
entityIn.motionY = 0.6666666666666666D;
super.onEntityWalk(worldIn, pos, entityIn);
worldIn.playSound((EntityPlayer)null, pos, RegisterSound.JUMPPLATEUSE, SoundCategory.BLOCKS, 1.0F, 1.0F);
double i;
for (i = 0.0D; i < 6.283185307179586D; )
worldIn.spawnParticle(EnumParticleTypes.REDSTONE, pos.getX() + 0.5D, pos.getY(), pos.getZ() + 0.5D, 0.9D, 0.9D, 0.9D, new int[0]); i += 0.01D;
}
}
BlockPlate.class:
public class BlockPlate extends Block {
public BlockPlate() {
super(Material.ROCK);
setCreativeTab(Main.JUMPPLATES);
}
public boolean isOpaqueCube(IBlockState state) {
return false;
}
public boolean isFullCube(IBlockState state) {
return false;
}
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
AxisAlignedBB axisAlignedBB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.21D, 1.0D);
return axisAlignedBB;
}
public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World worldIn, BlockPos pos) {
AxisAlignedBB axisAlignedBB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.09D, 1.0D);
return axisAlignedBB;
}
public void onFallenUpon(World worldIn, BlockPos pos, Entity entityIn, float fallDistance) {
if (entityIn.isSneaking())
super.onFallenUpon(worldIn, pos, entityIn, fallDistance);
else
entityIn.fall(fallDistance, 0.0F);
}
public void onLanded(World worldIn, Entity entityIn) {
if (entityIn.isSneaking())
super.onLanded(worldIn, entityIn);
else if (entityIn.motionY < 0.0D) {
entityIn.motionY = 0.0D;
if (!(entityIn instanceof net.minecraft.entity.EntityLivingBase))
entityIn.motionY = 0.0D;
}
}
}
Лог при зависании:
[04:50:08] [Server thread/INFO] [minecraft/MinecraftServer]: Player116 joined the game
[04:50:08] [Client thread/DEBUG] [FML]: Overriding dimension: using 0
[04:50:10] [Server thread/INFO] [minecraft/IntegratedServer]: Saving and pausing game...
[04:50:10] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'New World'/overworld
[04:50:10] [Server thread/DEBUG] [FML]: Gathering id map for writing to world save New World
[04:50:11] [Server thread/WARN] [minecraft/MinecraftServer]: Can't keep up! Did the system time change, or is the server overloaded? Running 2488ms behind, skipping 49 tick(s)
Последнее редактирование: