Я пытаюсь заставить этот цикл 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
Почему не работает цикл for для изменения метаданных? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1767780626
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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79862222/why-isnt-the-for-loop-to-change-meta-data-working[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия