Почему не работает цикл for для изменения метаданных?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему не работает цикл for для изменения метаданных?

Сообщение Anonymous »

Я пытаюсь заставить этот цикл for перебирать все блоки coords HashMap, но он вообще ничего не делает. Может ли кто-нибудь помочь мне понять, что я делаю неправильно? Я попробовал использовать два разных HashMap, один для обычного блока, а другой для главного, с координатами в качестве ключей, а затем создать два отдельных цикла for, и это сработало, но я боюсь, что это слишком неэффективно. Есть ли лучший способ сделать это? Желаемый результат состоит в том, что блок лифта получает метаданные 1, а главный блок лифта получает метаданные 2. Вместо этого фактический результат - оба блока получают метаданные 0. Если это поможет, я делаю это для мода Minecraft 1.7.10, я добавляю метод установки метаданных и два класса блоков лифта. Пожалуйста, игнорируйте класс блока, он не имеет отношения к этой проблеме, в основном он предназначен для регистрации/определения блоков. Извините, если я делаю что-то неправильно, я впервые пользуюсь этим сайтом.
{
public ArrayList blocks = new ArrayList();
public HashMap coords = new HashMap();
public HashMap master = new HashMap();
public boolean getSurroundingBlock(World world, int minX, int minY, int minZ, int maxX, int maxY, int maxZ){
blocks.clear();
int count = 0;
int sizeX = (maxX - minX)+1;
int sizeY = (maxY - minY)+1;
int sizeZ = (maxZ - minZ)+1;
int totalBlocks = sizeX*sizeY*sizeZ;
for (int x = minX; x = -30000000 && p_72921_1_ < 30000000 && p_72921_3_ < 30000000)
{
if (p_72921_2_ < 0)
{
return false;
}
else if (p_72921_2_ >= 256)
{
return false;
}
else
{
Chunk chunk = this.getChunkFromChunkCoords(p_72921_1_ >> 4, p_72921_3_ >> 4);
int j1 = p_72921_1_ & 15;
int k1 = p_72921_3_ & 15;
boolean flag = chunk.setBlockMetadata(j1, p_72921_2_, k1, p_72921_4_);

if (flag)
{
Block block = chunk.getBlock(j1, p_72921_2_, k1);

if ((p_72921_5_ & 2) != 0 && (!this.isRemote || (p_72921_5_ & 4) == 0) && chunk.func_150802_k())
{
this.markBlockForUpdate(p_72921_1_, p_72921_2_, p_72921_3_);
}

if (!this.isRemote && (p_72921_5_ & 1) != 0)
{
this.notifyBlockChange(p_72921_1_, p_72921_2_, p_72921_3_, block);

if (block.hasComparatorInputOverride())
{
this.func_147453_f(p_72921_1_, p_72921_2_, p_72921_3_, block);
}
}
}

return flag;
}
}
else
{
return false;
}
}

public class ElevatorBlock extends Block implements ITileEntityProvider{
MultiBlockHelper multiBlockHelper = new MultiBlockHelper();
protected ElevatorBlock(Material materialIn) {
super(materialIn);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta == 1) return new TileEntityElevatorBlockDummy();
return null;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float subX, float subY, float subZ){
multiBlockHelper.isFormed(world, x, y, z, player);
return super.onBlockActivated(world, x, y, z, player, side, subX, subY, subZ);
}
}

public class ElevatorBlockMaster extends Block implements ITileEntityProvider {
MultiBlockHelper multiBlockHelper = new MultiBlockHelper();
protected ElevatorBlockMaster(Material materialIn) {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta){
if (meta == 2){
return new TileEntityElevatorBlock();
} return null;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float subX, float subY, float subZ){
multiBlockHelper.isFormed(world, x, y, z, player);
return super.onBlockActivated(world, x, y, z, player, side, subX, subY, subZ);
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ta-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»