- 210
- 1
- 19
Это ошибка в логе клиента, который не запускается с моим модом. При этом сервер запускается без проблем.
Виновник - этот код:
Java:
@SubscribeEvent
public void onBlockPlace(BlockEvent.PlaceEvent e){
if(e.world.isRemote){return;}
if(e.player.inventory.getCurrentItem().getItem() == Item.getItemFromBlock(Blocks.mob_spawner)){
if(!e.player.capabilities.isCreativeMode){
List <TileEntity> tileentities = e.world.loadedTileEntityList;
for(TileEntity tile : tileentities){
if(!(tile instanceof TileEntityMobSpawner)){continue;}
int dist = Functions.getDistanceBetweenXYZ(tile.xCoord, tile.yCoord, tile.zCoord, (int)e.x, (int)e.y, (int)e.z);
if(dist > 0 && dist < 30){
if(e.world.getBlock(tile.xCoord, tile.yCoord, tile.zCoord) != Blocks.mob_spawner){e.world.removeTileEntity(tile.xCoord, tile.yCoord, tile.zCoord);} else {
e.player.addChatMessage(new ChatComponentTranslation("event.nosetspawner", new Object[0]));
e.setCanceled(true);
return;
}
}
}
}
ItemStack spawner = e.player.inventory.getCurrentItem();
if(!spawner.hasTagCompound()){return;}
NBTTagCompound tag = spawner.stackTagCompound;
String mob = tag.getString("MobType");
if(mob == null || mob == ""){return;}
Console.out().println("[FORGE] Mob is " + mob);
if(e.world.getTileEntity(e.x, e.y, e.z) != null){
((TileEntityMobSpawner) e.world.getTileEntity(e.x, e.y, e.z)).func_145881_a().setEntityName(mob);
((TileEntityMobSpawner) e.world.getTileEntity(e.x, e.y, e.z)).func_145881_a().updateSpawner();
}
}
}
Если убрать его, скомпилировать и залить в клиент - всё работает. Но я же не могу компилировать два разных мода для сервера и клиента отдельно. Я пробовал этот код кидать и на MinecraftForge.EVENT_BUS, и на FMLCommonHandler.instance().bus(). Пробовал прятать этот код в serverSide и пробовал писать над кодом @SideOnly(Side.SERVER). Код работает только в первом случае, в остальных случаях игнорируется.